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
:
java
-
version
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
xxx_centos:1 .
[root@localhost docker-file]
# docker images
注意事项:
利用当前
centos-dockerfile
文件构建镜像
-t xxx_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
行