1. 普通方式
我们可以在容器去部署应用,然后把容器转为镜像给测试人员用,由于镜像是不能直接传输的,所以我们将新的镜像转成压缩文件,给测试人员。测试人员把我们的压缩文件还原成一个新的镜像
docker commit 容器 id 镜像名称 : 版本号 # 把容器做成镜像
docker save - o 压缩文件名称 镜像名称 : 版本号 # 把镜像做成压缩包,放到宿主机的某个位置
docker load – i 压缩文件名称 # 别人(测试人员)加载镜像(压缩包)
注意事项:容器转为镜像,如果容器有挂载的内容,做成新镜像的时候,挂载的内容是不会载入
到镜像里面的
案例一:制作 centos-java 镜像
1 、首先创建一个 centos 容器
docker pull centos : 7.9.2009
docker run - it -- name = centos centos : 7.9.2009 / bin / bash
2 、安装 JDK
2.1 下载 jdk-8u151-linux-x64.tar.gz 到容器的 home 目录里面
wget
http :// 192.168.1.222 : 9000 /% e5 % b7 % a5 % e5 % 85 % b7 / CentOS % e5 % b8 % b8 % e7 % 94 % a8 % e8 % bd % af % e4 % bb % b6 / jdk-8u151-linux-x64.tar.gz
2.2 配置 JDK 环境变量
tar - xzvf jdk-8u151-linux-x64.tar.gz
2.3 配置 profile :
vi / etc / profile
2.4 在最下面加上:
export JAVA_HOME =/ home / jdk1 .8.0 _151
export
CLASSPATH = . : $JAVA_HOME / jre / lib / rt.jar : $JAVA_HOME / lib / dt.jar : $JAVA_HOME / lib / tools.jar
export PATH = $PATH:$JAVA_HOME / bin
2.5 使配置生效:
source / etc / profile
2.6 检查 jdk :
java - version
2.7 重启后环境变量仍生效在 /etc/bashrc 最下面加上:
export JAVA_HOME =/ home / jdk1 .8.0 _151
export
CLASSPATH = . : $JAVA_HOME / jre / lib / rt.jar : $JAVA_HOME / lib / dt.jar : $JAVA_HOME / lib / tools.jar
export PATH = $PATH:$JAVA_HOME / bin
由于每次启动终端的时候,都会执行 /etc/bashrc ,所以可以把 source /etc/profile 命令 ** 写入
到 /etc/bashrc 文件中,实现环境变量立刻全面生效的效果。
2.8 退出容器
[root @cce867bb4e32 / ] # exit
2.9 重启容器
docker start cce867bb4e32
2.10 进行容器验证 JDK 是否有效
docker exec - it cce867bb4e32 / bin / bash
2.11 检查 jdk :
3 、把 centos7 容器做成镜像
docker commit 6598 a89db5f6 centos7-java8 : 1.0
docker images # 可以查看到 centos7-java8:1.0 镜像
4 、把镜像做成压缩包 放到宿主机的某个位置
docker save - o XXX_tomcat.tar centos7-java8 : 1.0 #-o:output 压缩文件保存到/root 目录下
5 、把压缩文件载入镜像(第三方载入该压缩包)
docker load - i centos7-java8.tar # 镜像加载 -i ( input )
docker images
6 、用 centos7-java8:1.0 镜像做容器
docker run - id -- name = centos7-java8 centos7-java8 : 1.0
docker exec - it centos7-java8 / bin / bash # 进入容器
# 或者启动并进入容器
docker run - it -- name = centos7-java8 centos7-java8 : 1.0 / bin / bash
2. dockerfile 方式
它是用来制作 docker 镜像的一个文本文件 , 文件包含了一条条的指令,每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像,对于开发人员:可以为开发团队提供一个完全一致的开发环境,对于测试人员:可以直接拿开发时所构建的镜像或者用Dockerfile文件构建一个新的镜像开始工作了,对于运维人员:在部署时,可以实现应用的无缝移植
Dochub 网址: https://hub.docker.com
Dockerfile 关键字
案例 1 :需求自定义 centos7 镜像。要求如下:
1 、默认登录路径为 /usr
2 、可以使用 vim
步骤 1 :创建 centos-dockerfile 文件
mkdir docker-file
cd docker-file
[root @localhost docker-file] # vim centos-dockerfile
步骤 2 :文件内容如下
FROM centos : 7 # 原镜像
MAINTAINER xxx < xxx @ xxx .cn >
RUN yum install - y vim
WORKDIR / usr
CMD / bin / bash
说明:
定义父镜像: FROM centos:7
定义作者信息:MAINTAINER xxx xxx @ xxx .cn
执行安装 vim 命令: RUN yum install -y vim
定义默认的工作目录: WORKDIR /usr
定义容器启动执行的命令: CMD /bin/bash
步骤 3 :通过 dockerfile 文件构建镜像
语法: docker build –f dockerfile 的文件路径 –t 镜像名称 : 版本 .
[root@localhost docker-file] # docker build -f ./centos-dockerfile -t
woniu_centos:1 .
[root@localhost docker-file] # docker images
注意事项:
利用当前 centos-dockerfile 文件构建镜像 -t woniu_centos:1 指定新镜像的名称和版本 , 后面的
. 不能省略
参数: -f 表示 dockerfile -t 表示 tag
案例 2 :定义 dockerfile 文件构建镜像,发布 springboot 项目
步骤 1 :创建 dockerfile 文件并编写内容
[root @localhost docker-file] #vim springboot-dockerfile
编写内容如下:
FROM java : 8
MAINTAINER xxx < xxx @ xxx .cn >
ADD springboot.jar app.jar
CMD java - jar / app.jar
说明:
ADD springboot.jar app.jar 表示把宿主机的 springboot.jar 复制到镜像里并更名为 app.jar, 当用
镜像做容器时, app.jar 默认在容器的根目录
步骤 2 :通过 dockerfile 构建镜像
[root @localhost docker-file] # docker build -f ./springboot-dockerfile -t
springboot-app:1.0 .
[root @localhost docker-file] # docker images
步骤 3 :通过 springboot-app:1.0 镜像创建容器
[root @localhost docker-file] # docker run -it --name=app -p 8080:8080 springboot-app:1.0
[root @localhost docker-file] #docker logs --tail 100 -f app # 查看 app 容器的日志末尾100 行