Docker

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 Docker,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

Docker



一、简介与概述

  1. Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
    Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
  2. Docker的主要目标是‘build ,ship and run any app,anywhere’,也就是说通过对应用程序组件的封装,分发,部署,运行等生命周期的管理。使用户的app(可以是一个web应用程序或者数据库应用等)及其运行环境能够做到‘一次封装,到处运行’。
    3.Linux容器技术的出现解决了这个问题。而docker就是基于他的基础上发展过来的。将应用运行到docker容器上面,而docker容器在任何操作系统上都是一致的,这就是实现跨平台跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。
  3. 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
    5.Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

Docker实际上就是一个虚拟化轻量级linux服务器,可以解决我们在开发环境中运行配置问题。

1. 为什么需要使用docker

Docker:虚拟化容器技术
Docker主要解决我们开发环境配置迁移的问题。

  1. 我们现在开发了一个javaweb项目,需要依赖很多环境配置 比如:Tomcat、JDK环境、Nginx、Redis环境等。
  2. 本地需要安装这些环境Tomcat、JDK环境、Nginx、Redis环境等,在打war包给运维部署在linux服务器,运维人员也需要在linux服务器上安装Tomcat、JDK环境、Nginx、Redis环境。
  3. 但是有时候可能会发生这些问题:我在本地运行环境没有问题,但是打包到Linux服务器运行总是遇到很多错误,大多数由于一些版本冲突影响。
  4. 所以在这时候我们就可以使用docker部署和安装软件就非常方便,直接将该springboot项目制作成一个镜像文件,镜像文件中包含jdk版本 tomcat版本信息 直接部署linux即可,减少依赖冲突概率。

linux安装mysql
Mysql很容易发生版本冲突的问题。

在对比docker安装mysql

docker pull mysql:5.7
docker create –name mysql3308 -e MYSQL_ROOT_PASSWORD=root -p 3308:3306 mysql:5.7

Docker最终解决了运行环境配置中的问题。—-镜像文件底层封装好了


2. docker的优点

  1. 简化配置 安装创建非常的方便
  2. 代码流水线(Code Pipeline)管理 传统项目部署可能需要经过很多环节,
    容易产生版本的依赖冲突问题,Docker给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少
  3. Devops 开发与运维一体化减少沟通的成本 (docker或者是k8s实现)
  4. 虚拟技术 快速部署
  5. 弹性扩容

3. 应用场景

  1. Web 应用的自动化打包和发布。
  2. 自动化测试和持续集成、发布。
  3. 在服务型环境中部署和调整数据库或其他的后台应用。
  4. 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

4. 容器与虚拟机区别

虚拟机virtual machine 虚拟机 他可以在一种操作系统中模拟运行另外一种操作系统,
比如我们在win操作系统中安装linux虚拟机,虚拟机看上去与真实操作系统一模一样。
对于当前我授课的 win7操作系统来说,虚拟机就是一个普通的文件。
1.虚拟机:
我们传统的虚拟机需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给他的资源将全部被占用。,每一个虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。
2.容器技术是和我们的宿主机共享硬件资源及操作系统可以实现资源的动态分配。
容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行,相对于来说容器比虚拟机更加轻量级。

Linux发展新的虚拟化技术:Linux Containers 简写为LXC

  1. docker启动快速属于秒级别。虚拟机通常需要几分钟去启动。
  2. docker需要的资源更少,docker在操作系统级别进行虚拟化,docker容器和内核交互,几乎没有性能损耗,性能优于通过Hypervisor层与内核层的虚拟化。;
  3. docker更轻量,docker的架构可以共用一个内核与共享应用程序库,所占内存极小。同样的硬件环境,Docker运行的镜像数远多于虚拟机数量。对系统的利用率非常高
  4. 与虚拟机相比,docker隔离性更弱,docker属于进程之间的隔离,虚拟机可实现系统级别隔离;
  5. 安全性: docker的安全性也更弱。Docker的租户root和宿主机root等同,一旦容器内的用户从普通用户权限提升为root权限,它就直接具备了宿主机的root权限,进而可进行无限制的操作。虚拟机租户root权限和宿主机的root虚拟机权限是分离的,并且虚拟机利用如Intel的VT-d和VT-x的ring-1硬件隔离技术,这种隔离技术可以防止虚拟机突破和彼此交互,而容器至今还没有任何形式的硬件隔离,这使得容器容易受到攻击。
  6. 可管理性:docker的集中化管理工具还不算成熟。各种虚拟化技术都有成熟的管理工具,例如VMware vCenter提供完备的虚拟机管理能力。
  7. 高可用和可恢复性:docker对业务的高可用支持是通过快速重新部署实现的。虚拟化具备负载均衡,高可用,容错,迁移和数据保护等经过生产实践检验的成熟保障机制,VMware可承诺虚拟机99.999%高可用,保证业务连续性。
  8. 快速创建、删除:虚拟化创建是分钟级别的,Docker容器创建是秒级别的,Docker的快速迭代性,决定了无论是开发、测试、部署都可以节约大量时间。
  9. 交付、部署:虚拟机可以通过镜像实现环境交付的一致性,但镜像分发无法体系化;Docker在Dockerfile中记录了容器构建过程,可在集群中实现快速分发和快速部署;

作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著优势: Docker容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式要快得多。 Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器。 Docker通过类似Git的操作来方便用户获取、分发和更新应用镜像,指令简明,学习成本较低。 Docker通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率。

特性 容器 虚拟机
启动速度 秒级 分钟级别
硬盘使用 一般为MB 一般GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个
隔离性 完全隔离 完全隔离

5. Docker官网

https://docs.docker.com/
https://www.docker.com/


二、Docker安装

Docker 要求 CentOS7 系统的内核版本在 3.10以上 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

  1. 通过 uname -r 命令查看你当前的内核版本

uname -r

在这里插入图片描述

  1. 使用 root 权限登录 Centos。确保 yum 包更新到最新。

yum -y update

在这里插入图片描述
(过程大概需要十分钟左右)

  1. 卸载旧版本(如果安装过旧版本的话)

yum remove docker docker-common docker-selinux docker-engine

在这里插入图片描述

  1. 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

yum install -y yum-utils device-mapper-persistent-data lvm2
在这里插入图片描述

  1. 设置yum源

yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

在这里插入图片描述

  1. 可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce –showduplicates | sort -r

在这里插入图片描述

  1. 安装docker

sudo yum install -y docker-ce

在这里插入图片描述

  1. 启动并加入开机启动

systemctl start docker
systemctl enable docker

在这里插入图片描述

  1. 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

docker version
在这里插入图片描述

三、Docker快速入门

1. Docker核心名词

镜像:简单理解为就是一个安装包,里面包含容器所需要运行的的基础文件和配置信息
,比如:redis镜像、mysql镜像等。
镜像的来源方式:

  1. 自己做镜像 比如(自己开发微服务项目)
  2. 拉取别人制作好的镜像, 例如 nginx、mysql、redis等。

每个镜像文件都有自己独立ip信息—轻量级的linux服务器 虚拟化
比如:镜像就是类 容器就是实例对象

容器: 容器就是镜像运行的实例,容器状态分为:初创建、运行、停止、暂停、
删除, 一个镜像可以创建多个不同的容器。

仓库: 仓库可以简单理解为,专门存储镜像文件仓库, 类似于 谷歌手机市场,统一在
谷歌手机市场下载开发者的安装包。
Docker 公开仓库地址: Docker hub
https://hub.docker.com/

Docker官方仓库:https://hub.docker.com/ —-访问比较慢

宿主机:当前win7操作系统
在这里插入图片描述

  1. 需要制作镜像文件(springboot项目)——类似于开发者开发安装应用程序打包
  2. 需要将我们制作好的镜像文件提交到docker仓库中—–开发者将自己的app应用程序发布安卓手机助手中。
  3. 本地需要拉去我们docker仓库中下载镜像文件,在交给我们容器运行—用户从app市场中下载安装包运行。

2. Docker下载镜像原理

Docker pull 从远程docker 官方仓库下载 镜像,到本地,在使用容器运行该镜像。
注意的是:docker官方镜像仓库地址部署在国外,下载镜像可能比较慢,建议配置国内加速镜像
在这里插入图片描述

3. Docker加载镜像配置

https://hub.docker.com/search?q=redis&type=image —在国外访问可能比较慢
国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

科大镜像:https://docker.mirrors.ustc.edu.cn/
网易:https://hub-mirror.c.163.com/
阿里云:https://<你的ID>.mirror.aliyuncs.com
七牛云加速器:https://reg-mirror.qiniu.com

当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。

4. 阿里云加速镜像配置

阿里云镜像,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了:
在这里插入图片描述

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://mgjmfdw2.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

在这里插入图片描述

5. 如何查看加速镜像安装成功

docker info

在这里插入图片描述


四、Docker常用命令

docker –help 帮助命令

1. docker –version

docker –version

2. docker images

查看本地images 镜像缓存

docker images 查看本地镜像文件
docker rmi -f kibana:5.6.9 —删除镜像文件

REPOSITORY 存储库名称
Tag 镜像的标签 不写版本号码 默认下载最新latest镜像
IMAGE ID 镜像id
CREATED 创建时间
SIZE 大小

docker images -a
docker images -q —只显示镜像的id
docker images –digests —显示镜像的摘要信息
docker images –no-trunc —显示完整镜像信息

docker rmi tomcat(镜像文件名称)

3. docker search

docker search mysql
https://hub.docker.com/
在这里插入图片描述

4. docker pull

docker pull nginx:latest –默认的情况下 下载最新版本的镜像 可以通过
https://hub.docker.com/_/nginx?tab=tags&page=1&ordering=last_updated
在这里插入图片描述

5. 容器管理

5.1 查看容器信息

docker ps 获取到的容器id
docker inspect 1e07cc5cc78d

5.2 运行容器

5.2.1 docker run

docker run -i(保持容器一直运行)-t(给容器一个伪终端)-d(后台运行,不直接进入容器) –name=tomcat9.2(给启动容器起名字)-p 8080:8080(宿主:docker容器)tomcat:9.2(启动的容器) 【参数】(加入容器初始化命令)
#通过 -it 启动的容器有两个特点 一创建就进入容器 exit退出容器 容器就会停止运行 —交互式容器
#通过 -id 创建的容器 docker exec -it tomcat9.2(–name起的名称)进入容器 exit退出容器 容器不会停止运行 —守护式容器
docker ps 查看正在运行的容器
docker ps -a 查看运行和已经运行关闭大的容器
docker stop tomcat8 关闭容器
docker start tomcat8 启动容器
docker rm tomcat8 删除容器
docker inspect tomcat8 查看容器信息
docker exec 参数 进入容器

5.2.2 docker run 运行原理

docker run demo
简单描述:首先会先从本地获取获取demo镜像文件,如果本地没有该镜像文件则会去
阿里云仓库查找该镜像文件,如果阿里云仓库也没有该镜像文件,则会报错找不到
镜像文件。
获取到镜像文件之后直接运行。
详细描述:
1.docker在本机缓存中 demo镜像文件,如果本地存在该镜像文件,则以该镜像文件作为模板在容器中运行。
2.如果本地缓存中,没有demo镜像文件 则会从dockerhub 或者加速镜像中查找,如果查找不到的话,则返回错误找不到该镜像。
3. 如果能够查找到该镜像,则以该镜像作为模板运行。
在这里插入图片描述
每个容器都有自己独立的网络 ip信息 运行成功 就是一个轻量级linux操作系统

5.2.3 启动容器

docker start 容器id

5.2.4 停止容器

docker stop 容器id

5.2.5 删除容器

docker rm 容器id

5.2.6 进入容器

#首先使用下面的命令,查看容器ID(CONTAINER ID):
docker ps -a
#然后用下面的命令进入容器,就可以使用bash命令浏览容器里的文件:
docker exec -it [CONTAINER ID] bash
#有的镜像没有bash命令,可以用对应的shell,比如sh
docker exec -it [CONTAINER ID] sh

6. Docker 镜像原理

6.1 镜像是什么

镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境的开发软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。

镜像文件的组成通过 Union fs
运行我们tomcat镜像文件

tomcat镜像文件

  1. 依赖于我们JDK
  2. Linux服务器

为什么运行tomcat镜像文件,不需要配置jdk环境变量。

  1. tomcat镜像文件包含jdk依赖镜像 tomcat8—–jdk8镜像文件
  2. 底层dockerfile —–描述配置jdk环境

6.2 镜像加载的原理

Linux文件系统由bootfs和rootfs两部分组成
bootfs:包含bootloader(引导加载程序)和 kernel(内核)
rootfs: root文件系统,包含的就是典型 Linux 系统中的/dev,/proc,/bin,/etc等标准目录和文件
不同的linux发行版,bootfs基本一样,而rootfs不同,如ubuntu,centos等

Docker镜像底层实际上是有多个不同的联合文件系统组成的

最底层:bootfs,并使用宿主机的bootfs-复用
第二层:root文件系统rootfs,称为base image
Union fs
然后再往上可以叠加其他的镜像文件
统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,隐藏多层的存在,我们看来只是存在一个文件系统。

所以当我们安装的tomcat镜像大小是600多MB 是因为里面还包含了jdk和centos的镜像
而centos镜像复用了宿主机的bootfs 下载的只有rootfs 所以小很多
在这里插入图片描述

所以tomcat>jdk(父镜像)->centos> 所以整个向外暴露就是600MB
镜像只读 当从一个镜像启动容器时, 所以docker会在镜像上面加载一个可读可写的文件系统作为容器运行。

7. Docker Commit

主要作用:根据当前容器制作为镜像文件

流程:

  1. 从docker hub中下载一个tomcat8镜像文件;
  2. 运行tomcat8镜像文件 在tomcatwebapps 目录中新增 demo文件夹 index.html
  3. 将当前容器内容根据模板制作为镜像文件

docker commit提交容器副本使之成为一个新的镜像
命令:docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]

  1. 安装一个tomcat8 docker run -p 8081:8080 tomcat:8
  2. docker exec -it b8a0bd49e749 bash
  3. cd webapps
  4. mkdir demo
  5. cd demo/
  6. touch index.html
  7. echo “demo” >>index.html

在这里插入图片描述
在这里插入图片描述

docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]

1.根据当前容器作为模板制作为镜像文件
docker commit -m=“demo tomcat” -a=“demo” b8a0bd49e749 demo-tomcat:1.0
在这里插入图片描述

2.在以当前自己制作的镜像文件运行
docker run -p 8088:8080 demo-tomcat:1.0
在这里插入图片描述

8. Docker 数据卷

8.1 基本概念

数据卷就是宿主机上的一个文件或目录
当容器目录和数据卷(宿主机)目录绑定,双方修改会立即同步操作
一个数据卷可以被多个容器同时挂载
数据卷作用:容器数据的持久化 外部机器和容器间接通信 容器之间数据交换使用 -v命令。

8.2 数据卷添加的方式

容器内与宿主机实现数据的共享
数据卷–添加两种方式:

  1. 直接命令形式添加 docker run -it -v 宿主机绝对路径目录:容器内目录 镜像文件名称
  1. Dockerfile方式添加

8.2.1安装Nginx实现负载均衡

8.2.1.1 挂载Nginxhtml 文件

[https://hub.docker.com/search?q=nginx&type=image]
(https://hub.docker.com/search?q=nginx&type=image)

  1. 创建挂载目录
    mkdir -p /data/nginx/{conf,conf.d,html,logs}
    在这里插入图片描述
  2. 启动docker容器
    docker run –name nginx81 -d -p 81:80 -v /data/nginx/html:/usr/share/nginx/html nginx

-v /data/nginx/html 虚拟机目录 –挂载 容器目录 /usr/share/nginx/html
上传一个 html 放入到 /data/nginx/html

docker run –name nginx81 -d -p 81:80 -v /data/nginx/html:/usr/share/nginx/html nginx

-v /data/nginx/html: linux虚拟机目录
/usr/share/nginx/html 容器中html目录

8.2.1.2 nginx.conf文件和日志文件

docker run –name nginx81 -d -p 81:80 -v /data/nginx/html:/usr/share/nginx/html
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /data/nginx/logs:/var/log/nginx nginx

\反斜杠 表示换行
/usr/share/nginx/html
/usr/share/nginx/conf
/usr/share/nginx/log

8.3 Docker实战部署软件

8.3.1 安装Tomcat服务器

docker run -p 8081:8080 -d tomcat:8 后台启动 —每次运行都会创建一个新的容器
docker run –name demo-tomcat -p 8081:8080 -d tomcat:8

–name: 指定容器名称
-p:指定容器端口号
-d:指定容器后台运行
8081(容器外部或者linux虚拟机访问的端口号 宿主机)
8080 容器内部的端口号

前台启动与后台启动的区别
前台启动会打印启动日志信息
后台启动不会打印启动日志信息

8.3.2 安装Nginx实现静态服务

Docker run 运行容器
–name nginx-demot:容器名称。
-p 8080:80 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
-d nginx: 设置容器在在后台一直运行。

docker ps — 正在运行的容器
docker ps -a 显示所有的容器 包括为运行的容器
docker ps 容器id

docker run –name nginx-demo -p 8080:80 nginx 默认前台启动
docker run –name nginx-demo -p 8080:80 -d nginx 后台启动方式

前台与后台启动区别:
前台启动:会展示容器启动的日志信息
后台启动:不会展示启动日志信息

8.3.3 安装MySQL5.7

1.查询mysql版本

docker search mysql
在这里插入图片描述

2.下载MySQL5.7版本

docker pull mysql:5.7 (这里选择的是第一个mysql镜像, :5.7选择的5.7版本)

在这里插入图片描述

3.等待下载完成、创建MySQL容器

docker create –name mysql3308 -e MYSQL_ROOT_PASSWORD=root -p 3308:3306 mysql:5.7
(创建容器名称为mysql3308,密码为root)

在这里插入图片描述

  1. 启动容器

docker start mysql3308

在这里插入图片描述

  1. 进入到容器

docker exec -it mysql3308 bash

在这里插入图片描述

  1. mysql连接

mysql -uroot –p

在这里插入图片描述

8.4 Docker运行底层原理

  1. 首先启动docker systemctl start docker
  2. Docker是一个CS架构的系统,docker守护进程运行在主机上,让后通过socket连接
    从客户端访问,守护进程从客户端接收命令管理运行在主机上的容器。
    ps aux | grep ‘docker’
    在这里插入图片描述

8.5 数据卷volumes-from

容器间传递共享数据volumes-from

9. 启动容器报错

先改为前台启动如果没有问题的情况下,在修改为后台启动。


五、DockerFile解析

  1. Dockerfile—- 依赖下载镜像 环境配置封装;
    Jdk环境配置
  2. Dockerfile文件打包成一个镜像文件;
  3. 使用容器运行镜像文件;

1. Centos 镜像文件

docker run -it centos
在这里插入图片描述

2. DockerFile 编写规范

A.#描述注释
B.指令必须要大写,后面至少需要带至少一个参数;
C.指令是按照从上到下,顺序执行;

3. DockerFile 指令

  1. FROM 指定父镜像: 基于哪个镜像image构建 指定基础镜像,必须为第一个命令
  2. MAINTAINER :维护者
  3. RUN: 容器创建的时候执行一段命令 构建镜像时执行的命令
  4. ADD: 将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
  5. COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
  6. CMD:构建容器后调用,也就是在容器启动时才进行调用。 .sh执行文件
  7. ENV: 设置环境变量
  8. EXPOSE: 指定于外界交互的端口
  9. VOLUME 用于指定持久化目录
  10. WORKDIR 设置进入容器时的路径

4. DockerFile 案例

Base镜像(scratch) docker hub中的镜像都是通过base镜像中安装和配置需要的软件构建的。

4.1 构建自己Centos镜像

docker run -it centos

  1. 需要自己制作一个dockerfile文件
  2. 继承docker hub中的centos
  3. 在docker hubcentos 上加入以下两个功能
    A.进入容器中 默认访问目录/usr
    B.实现支持vim插件

yum -y install vim

需要将该dockerfile文件打包成一个镜像文件 交给我们容器执行

定制CentOS镜像

FROM centos
MAINTAINER demo-user
ENV MYPATH /usr
WORKDIR $MYPATH
RUN yum -y install vim
EXPOSE 80
CMD /bin/bash

将该dockerfile文件上传到linux服务器中
使用docker build -f Dockerfile -t mycs:1 .
Dockerfile ——配置文件
mycs—-打包镜像文件名称
1 tag 版本号码

docker run -it mycs:1

4.2 将springboot项目打包部署

  1. 将springboot项目打包;
  2. 制作dockerfile文件;
    A. 继承我们的jdk环境
    B. 将我们本地的jar包拷贝到容器中
    C. Java -jar
  3. 将dockerfile文件打包成镜像文件;
  4. 运行该镜像文件即可;

4.2.1 将springboot项目打包

mvn clean package

4.2.2 制作dockerfile文件

# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER www.demo.com
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为demo.jar
ADD demo-thymeleaf-1.0-SNAPSHOT.jar demo.jar
# 运行jar包
RUN bash -c 'touch /demo.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/demo.jar"]
#暴露8080端口
EXPOSE 8080

4.2.3 制作dockerfile文件

docker build -f Dockerfile -t demo_01:1 .

4.2.4 启动容器

docker run -p 8070:8080 demo_01:1


六、CentOS Docker 安装


docker rm $(docker ps -aq)
docker stop $(docker ps -q) & docker rm $(docker ps -aq) —删除所有的容器
docker rmi $(docker images -q)


七、 Linux关闭防火墙命令

systemctl stop firewalld

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131297.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!