二十一、容器数据卷使用

1. 数据卷介绍
Docker将运用与运行的环境打包形成容器运行, Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来, 那么当容器删除后,数据自然也就没有了。 为了能保存数据在Docker中我们使用卷。

卷就是目录或文件,存在于一个或多个容器中,将我们容器内的目录,挂载到Linux上,但卷不属于联合文件系统(Union FileSystem),因此能够绕过联合文件系统提供一些用于持续存储或共享数据的特性:。

小结:卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷,容器间也可以是数据共享。

2、使用数据卷
运行容器,指定挂载数据卷命令:

docker run -it -v 主机目录:容器目录   (类似端口做的映射)

测试:

docker run -it -v /home/zl/ceshi:/home centos /bin/bash    #挂载命令
docker inspect f3c7fa44b1bb   #查看该容器id的元数据


测试卷是否成功:

即使容器停止运行或者容器删除,仍然可以实现数据同步,本地的数据卷不会丢失。
容器卷的好处:我们以后修改只需要在本地修改即可,容器内会自动同步。

二十二、安装MySQL

下载MySQL

#1、拉取镜像
docker pull mysql
#2、运行容器,需要做数据挂载(注意,需要花费两倍存储空间)
#安装启动mysql,需要配置密码的,这是注意点!
#官方测试:docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
真正启动我们的mySQL命令(包含很多的操作)
docker run -d -p 6603:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
-d 后台运行
-p 端口映射
-v 卷挂载
-e 是配置环境
--name 容器命名

测试:
在本地创建一个数据库,查看一下我们映射的路径是否ok。
假设我们将容器删除,本地挂载的数据卷不会消失,这就实现容器数据持久话的作用。

二十三、具名挂载和匿名挂载

匿名挂载

匿名挂载命令:
docker run -d -P --name nginx01 -v /etc/nginx nginx
-P 让系统随机映射端口
-v 后面没有填宿主机的目录
docker volume ls   #查看数据卷
local     b65d0b078ece29097541a69a77bc618c8da78683fa66d725c380f43894cbc83e
#这里发现,这种就是匿名挂载,我们在 -v 只写了容器内的路径,没有写容器外的路径。

具名挂载

具名挂载命令:
docker run -d --name nginx001 -v juming-nginx:/etc/nginx nginx
通过-v 卷名:容器内路径
查看一下这卷
”[[e[31docker volume ls
DRIVER    VOLUME NAME
local     b65d0b078ece29097541a69a77bc618c8da78683fa66d725c380f43894cbc83e
local     juming-nginx


所有的docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/*****/_data
我们通过具名挂载可以方便的找到我们的一个卷,大多数情况使用具名挂载。
匿名挂载,具名挂载,指定路径挂载的命令区别如下:
-v 容器内路径 #匿名挂载
-v 卷名:容器内路径 #具名挂载
-v /宿主机路径:容器内路径 #指定路径挂载
指定数据卷映射的相关参数:
ro —— readonly 只读。设置了只读则只能操作宿主机的路径,不能操作容器中的对应路径。
rw ----- readwrite 可读可写

[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx

二十四、数据卷只Dockerfile

Dockerfile就是用来构建docker镜像的构建文件。就是命令脚本!通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个个的命令,每个命令都是一层!
之前我们是用commit,现在用这种Dockerfile方式

#使用Dockerfile构建一个新的镜像,dockerfile01文件的内容,匿名挂载了volume01和volume02两个目录;创建的这个dockerfile文件名字可以随意,建议用Dockerfile。
#文件中的内容为: 指令(都是大写的)   参数
FROM centosVOLUME ["volume01","volume02"]CMD echo "------end------"
CMD /bin/bash
这里的每个命令,就是镜像的一层

通过这个Dockerfile构建镜像

             构建   指定用的dockerfile文件  生成镜像的命名   存放的地址
”[[e[31docker build -f dockerfile1         -t /zl/centos   .
invalid argument "/zl/centos" for "-t, --tag" flag: invalid reference format
See 'docker build --help'.
”[[e[31docker build -f dockerfile1 -t zl/centos .
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM centos---> 5d0da3dc9764
Step 2/4 : VOLUME ["volume01","volume02"]---> [Warning] IPv4 forwarding is disabled. Networking will not work.---> Running in d96e7ce20f85
Removing intermediate container d96e7ce20f85---> bc26018ba83e
Step 3/4 : CMD echo "------end------"---> [Warning] IPv4 forwarding is disabled. Networking will not work.---> Running in a92d325daa5f
Removing intermediate container a92d325daa5f---> 2cbc28dd0988
Step 4/4 : CMD /bin/bash---> [Warning] IPv4 forwarding is disabled. Networking will not work.---> Running in 400b76e54f9f
Removing intermediate container 400b76e54f9f---> 84ffe390e1fd
Successfully built 84ffe390e1fd
Successfully tagged zl/centos:latest

生成的镜像如图:

启动自己写的镜像:

”[[e[31docker run -it 84ffe390e1fd  /bin/bash
WARNING: IPv4 forwarding is disabled. Networking will not work.
[root@fcfe9934c1f3 /]# ls -l
total 0
lrwxrwxrwx.   1 root root   7 Nov  3  2020 bin -> usr/bin
drwxr-xr-x.   5 root root 360 Dec 22 07:28 dev
drwxr-xr-x.   1 root root  66 Dec 22 07:28 etc
drwxr-xr-x.   2 root root   6 Nov  3  2020 home
lrwxrwxrwx.   1 root root   7 Nov  3  2020 lib -> usr/lib
lrwxrwxrwx.   1 root root   9 Nov  3  2020 lib64 -> usr/lib64
drwx------.   2 root root   6 Sep 15 14:17 lost+found
drwxr-xr-x.   2 root root   6 Nov  3  2020 media
drwxr-xr-x.   2 root root   6 Nov  3  2020 mnt
drwxr-xr-x.   2 root root   6 Nov  3  2020 opt
dr-xr-xr-x. 242 root root   0 Dec 22 07:28 proc
dr-xr-x---.   2 root root 162 Sep 15 14:17 root
drwxr-xr-x.  11 root root 163 Sep 15 14:17 run
lrwxrwxrwx.   1 root root   8 Nov  3  2020 sbin -> usr/sbin
drwxr-xr-x.   2 root root   6 Nov  3  2020 srv
dr-xr-xr-x.  13 root root   0 Dec 13 02:22 sys
drwxrwxrwt.   7 root root 171 Sep 15 14:17 tmp
drwxr-xr-x.  12 root root 144 Sep 15 14:17 usr
drwxr-xr-x.  20 root root 262 Sep 15 14:17 var
drwxr-xr-x.   2 root root   6 Dec 22 07:28 volume01  这两个目录就是我们生成镜像的时候,自动挂载的数据卷目录。
drwxr-xr-x.   2 root root   6 Dec 22 07:28 volume02

这个卷和外部一定有一个同步的目录

用docker inspect 容器id 查找该容器的linux的卷位置。

测试一下刚才在容器内创建的文件同步至宿主机:

这种方式我们未来使用的十分多,因为我们通常会构建自己的镜像。
假设构建镜像时候没有挂载卷,要自动镜像挂载 ,即 -v

二十五、数据卷容器



创建docker02继承docker01,通过参数–volumes-from,设置容器2和容器1建立数据卷挂载关系。

命令如下:
”[[e[31docker run  -it --name docker02 --volumes-from docker01 zl/centos
WARNING: IPv4 forwarding is disabled. Networking will not work.
[root@e15d3f003189 /]# ls -l
total 0
lrwxrwxrwx.   1 root root   7 Nov  3  2020 bin -> usr/bin
drwxr-xr-x.   5 root root 360 Dec 22 08:05 dev
drwxr-xr-x.   1 root root  66 Dec 22 08:05 etc
drwxr-xr-x.   2 root root   6 Nov  3  2020 home
lrwxrwxrwx.   1 root root   7 Nov  3  2020 lib -> usr/lib
lrwxrwxrwx.   1 root root   9 Nov  3  2020 lib64 -> usr/lib64
drwx------.   2 root root   6 Sep 15 14:17 lost+found
drwxr-xr-x.   2 root root   6 Nov  3  2020 media
drwxr-xr-x.   2 root root   6 Nov  3  2020 mnt
drwxr-xr-x.   2 root root   6 Nov  3  2020 opt
dr-xr-xr-x. 247 root root   0 Dec 22 08:05 proc
dr-xr-x---.   2 root root 162 Sep 15 14:17 root
drwxr-xr-x.  11 root root 163 Sep 15 14:17 run
lrwxrwxrwx.   1 root root   8 Nov  3  2020 sbin -> usr/sbin
drwxr-xr-x.   2 root root   6 Nov  3  2020 srv
dr-xr-xr-x.  13 root root   0 Dec 13 02:22 sys
drwxrwxrwt.   7 root root 171 Sep 15 14:17 tmp
drwxr-xr-x.  12 root root 144 Sep 15 14:17 usr
drwxr-xr-x.  20 root root 262 Sep 15 14:17 var
drwxr-xr-x.   2 root root   6 Dec 22 07:54 volume01
drwxr-xr-x.   2 root root   6 Dec 22 07:54 volume02

测试docker01创建的文件会同步到docker02

创建docker03继承docker01,数据也是可以同步的。

再测试:删除docker01,docker02和docker03依旧可以访问文件。

所以,即使删除了容器,也不会影响到其他容器的文件,是拷贝的概念。

用途:多个mysql、redis实现数据共享。

结论:
容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有人使用容器为止。
但是一旦持久化到了本地,这个时候,本地下数据不会删除。

二十六、DockerFile介绍

Dockerfile就是用来构建docker镜像的构建文件。就是命令脚本!
构建步骤:

 1、编写一个dockerfile 文件2、docker build 构建成为一个镜像3、docker run 运行镜像4、docker push 发布镜像(发布的两个地方:DockerHub、阿里云镜像仓库)

DockerFile构建过程
基础知识:
1、每个保留关键字(指令)都必须是大写字母
2、执行从上到下顺序执行
3、#表示注释
4、每个指令都会创建提交一个新的镜像层,并提交!
镜像结构图:

dockerfile是面向开发的,我们以后要发布项目,做镜像,就是要编写dokerfile文件,这个文件十分简单。

小结:
DockerFile:它就是一个构建文件,定义了一切的步骤;
DockerImages:通过DockerFile构建生成的镜像,最终发布运行的产品。
Docker容器:容器就是镜像运行起来提供服务的。

二十七、DockerFile指令说明

指令 说明
FROM 指定基础镜像
MAINTAINER 镜像是谁写的,姓名+邮箱
RUN 镜像构建的时候需要运行的命令
ADD 将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
WORKDIR 镜像的工作目录
VOLUME 挂载的目录
EXPOSE 保留端口配置
CMD 指定这个容器启动的时候要运行的命令(只有最后一个会生效)
ENTRYPOINT 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD 当构建一个被继承DockerFile,这个时候就会运行ONBUILD的指令,触发指令
COPY 功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
ENV 构建的时候设置环境变量

二十八、实战:构建自己的centos

Docker Hub中99%镜像都是从这个基础镜像过来的,即FROM scrach,然后配置自己需要的软件进行构建。
创建自己的centos

#1、编写dockerFile文件
FROM centos
MAINTAINER zhanglong<1299823875@qq.com>ENV MYPATH /usr/local
WORKDIR $MYPATHRUN yum -y install vim
RUN yum -y install net-toolsEXPOSE 80CMD echo $MYPATH
CMD echo "------end------"
CMD /bin/bash
#2、通过以上的配置文件构建我们的镜像
#通过命令构建:(注意:当报错时可能是输入法出错了)
docker build -f mydockerFile-centos -t mydockerFileCentos:0.1 .

逐行解释该Dockerfile文件的指令:

FROM centos:该image文件继承官方的centos,后面加冒号如centos:7,用于指定镜像的版本
ENV MYPATH /usr/local:设置环境变量MYPATH ,后面有用到
WORKDIR $MYPATH:直接使用上面设置的环境变量,指定/usr/local为工作目录
RUN yum -y install vim和RUN yum -y install net-tools:在/usr/local目录下,运行yum -y install vim和yum -y install net-tools命令安装工具,注意安装后的所有依赖和工具都会打包到image文件中
EXPOSE 80:将容器80端口暴露出来,允许外部连接这个端口
CMD:指定容器启动的时候运行命令
通过这个dockerfile构建镜像,构建镜像命令:docker build -f dockerfile文件路径 -t 镜像名[:版本号] .(这里有个小点.)

上面命令中,-t参数用来指定 image 文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是latest。最后的那个点表示 Dockerfile 文件所在的路径,上例是当前路径,所以是一个点。

执行build命令生成image文件,如果执行成功,可以通过docker images来查看新生成的镜像文件。

下面生成容器,测试相关命令,查看默认工作目录是否设置成功,vim和net-tools工具是否下载成功。

[root@iZwz99sm8v95sckz8bd2c4Z dockerfile]# docker run -it mycentos:1.0
[root@e548efe82b30 local]# pwd
/usr/local
#net-tools工具提供ifconfig命令
[root@e548efe82b30 local]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.3  netmask 255.255.0.0  broadcast 172.17.255.255ether 02:42:ac:11:00:03  txqueuelen 0  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@e548efe82b30 local]# vi test.txt
[root@e548efe82b30 local]# cat test.txt
Hello world!

另外,我们通过docker history 容器id命令来查看镜像的构建步骤

[root@iZwz99sm8v95sckz8bd2c4Z dockerfile]# docker history 1185a46e3a12
IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
1185a46e3a12   13 minutes ago   /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "/bin…   0B
83459c404586   13 minutes ago   /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B
9b8661c812c4   13 minutes ago   /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B
2064c1540e8e   13 minutes ago   /bin/sh -c #(nop)  EXPOSE 80                    0B
1b15d4a1fd5e   13 minutes ago   /bin/sh -c yum -y install net-tools             23.3MB
9336c20f0b6d   13 minutes ago   /bin/sh -c yum -y install vim                   58MB
7d46880ef0fd   14 minutes ago   /bin/sh -c #(nop) WORKDIR /usr/local            0B
e27a56b5247b   14 minutes ago   /bin/sh -c #(nop)  ENV MYPATH=/usr/local        0B
b2b6851e55fa   14 minutes ago   /bin/sh -c #(nop)  MAINTAINER ethan<12583985…   0B
300e315adb2f   3 weeks ago      /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B
<missing>      3 weeks ago      /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B
<missing>      3 weeks ago      /bin/sh -c #(nop) ADD file:bd7a2aed6ede423b7…   209MB

二十九、CMD和ENTRYPOINT的区别

写CMD的dockerFile

FROM centos
CMD ["ls","-a"]

再build构建镜像

”[[e[docker build -f dockerfile-CMD-test -t cmdtst .
”[[e[31docker images
REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
cmdtst        latest    4dc544b82f59   17 minutes ago   231MB
<none>        <none>    0012da1eef3b   29 minutes ago   231MB
nginx         latest    f6987c8d6ed5   47 hours ago     141MB
tomcat        latest    24207ccc9cce   2 weeks ago      680MB
hello-world   latest    feb5d9fea6a5   3 months ago     13.3kB
centos        latest    5d0da3dc9764   3 months ago     231MB

测试运行


”[[e[31docker run cmdtst
WARNING: IPv4 forwarding is disabled. Networking will not work.
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
发现我们的ls-a命令生效

想追加一个命令 -l 即 ls -al

docker run cmdtst -l
WARNING: IPv4 forwarding is disabled. Networking will not work.
docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "-l": executable file not found in $PATH: unknown.
#CMD的情况下 -l替换了CMD["ls","-a"]命令,-l不是命令所以报错
”[[e[31docker run cmdtst ls -al
WARNING: IPv4 forwarding is disabled. Networking will not work.
^Ctotal 0
drwxr-xr-x.   1 root root   6 Dec 23 02:46 .
drwxr-xr-x.   1 root root   6 Dec 23 02:46 ..
-rwxr-xr-x.   1 root root   0 Dec 23 02:46 .dockerenv
lrwxrwxrwx.   1 root root   7 Nov  3  2020 bin -> usr/bin
drwxr-xr-x.   5 root root 340 Dec 23 02:46 dev
drwxr-xr-x.   1 root root  66 Dec 23 02:46 etc
drwxr-xr-x.   2 root root   6 Nov  3  2020 home
lrwxrwxrwx.   1 root root   7 Nov  3  2020 lib -> usr/lib
lrwxrwxrwx.   1 root root   9 Nov  3  2020 lib64 -> usr/lib64
drwx------.   2 root root   6 Sep 15 14:17 lost+found
drwxr-xr-x.   2 root root   6 Nov  3  2020 media
drwxr-xr-x.   2 root root   6 Nov  3  2020 mnt
drwxr-xr-x.   2 root root   6 Nov  3  2020 opt
dr-xr-xr-x. 228 root root   0 Dec 23 02:46 proc
dr-xr-x---.   2 root root 162 Sep 15 14:17 root
drwxr-xr-x.  11 root root 163 Sep 15 14:17 run
lrwxrwxrwx.   1 root root   8 Nov  3  2020 sbin -> usr/sbin
drwxr-xr-x.   2 root root   6 Nov  3  2020 srv
dr-xr-xr-x.  13 root root   0 Dec 13 02:22 sys
drwxrwxrwt.   7 root root 171 Sep 15 14:17 tmp
drwxr-xr-x.  12 root root 144 Sep 15 14:17 usr
drwxr-xr-x.  20 root root 262 Sep 15 14:17 var
完整的命令即可替换了,如上的命令。

写ENTRYPOINT的dockerFile

FROM centos
ENTRYPOINT ["ls","-a"]

再build构建镜像

”[[e[31docker build -f dockerfile-cmd-entrypoint -t entrypoint-test .
Sending build context to Docker daemon  4.096kB
Step 1/2 : FROM centos---> 5d0da3dc9764
Step 2/2 : ENTRYPOINT ["ls","-a"]---> [Warning] IPv4 forwarding is disabled. Networking will not work.---> Running in 927b3ccc8cb4
Removing intermediate container 927b3ccc8cb4---> d43b235a2232
Successfully built d43b235a2232
Successfully tagged entrypoint-test:latest

测试运行

”[[e[31docker run entrypoint-test
WARNING: IPv4 forwarding is disabled. Networking will not work.
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

追加-l测试运行

”[[e[31docker run entrypoint-test -l
WARNING: IPv4 forwarding is disabled. Networking will not work.
total 0
drwxr-xr-x.   1 root root   6 Dec 23 02:58 .
drwxr-xr-x.   1 root root   6 Dec 23 02:58 ..
-rwxr-xr-x.   1 root root   0 Dec 23 02:58 .dockerenv
lrwxrwxrwx.   1 root root   7 Nov  3  2020 bin -> usr/bin
drwxr-xr-x.   5 root root 340 Dec 23 02:58 dev
drwxr-xr-x.   1 root root  66 Dec 23 02:58 etc
drwxr-xr-x.   2 root root   6 Nov  3  2020 home
lrwxrwxrwx.   1 root root   7 Nov  3  2020 lib -> usr/lib
lrwxrwxrwx.   1 root root   9 Nov  3  2020 lib64 -> usr/lib64
drwx------.   2 root root   6 Sep 15 14:17 lost+found
drwxr-xr-x.   2 root root   6 Nov  3  2020 media
drwxr-xr-x.   2 root root   6 Nov  3  2020 mnt
drwxr-xr-x.   2 root root   6 Nov  3  2020 opt
dr-xr-xr-x. 234 root root   0 Dec 23 02:58 proc
dr-xr-x---.   2 root root 162 Sep 15 14:17 root
drwxr-xr-x.  11 root root 163 Sep 15 14:17 run
lrwxrwxrwx.   1 root root   8 Nov  3  2020 sbin -> usr/sbin
drwxr-xr-x.   2 root root   6 Nov  3  2020 srv
dr-xr-xr-x.  13 root root   0 Dec 13 02:22 sys
drwxrwxrwt.   7 root root 171 Sep 15 14:17 tmp
drwxr-xr-x.  12 root root 144 Sep 15 14:17 usr
drwxr-xr-x.  20 root root 262 Sep 15 14:17 var

小结:从以上测试我们可以发现,追加的命令ENTRYPOINT是直接拼接在后面的,CMD后面家的命令是直接替换原先的命令的。

三十、DockerFile制作tomcat镜像

1、准备镜像文件,tomcat压缩包、jdk压缩包!
2、编写DockerFile文件,官方命名Dockerfile,build会自动寻找这个文件,就不需要-f指定了!
FROM centos
MAINTAINET zhanglong<1299823875@qq.com>COPY readme.txt /usr/local/readme.txtADD jdk-17_linux-x64_bin.tar.gz /usr/local/
ADD apache-tomcat-10.0.14.tar.gz /usr/local/ENV MYPATH /usr/local
WORKDIR $MYPATHENV JAVA_HOME /usr/local/jdk-17.0.1
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATLINA /usr/local/apache-tomcat-10.0.14
ENV CATLINA_BASH /usr/local/apache-tomcat-10.0.14
ENV PATH $PATH:$JAVA_HOME/bin:$CATLINA_HOME/lib:$CATLINA_HOME/binEXPOSE 8080CMD /usr/local/apache-tomcat-10.0.14/bin/startup.sh && tail -F /url/local/apache-tomcat-10.0.14/bin/logs/catalina.out

3、构建镜像

”[[e[31docker build -t dittomcat .  #构建镜像命令 (不用-f)
Sending build context to Docker daemon  508.2MB
Step 1/14 : FROM centos---> 5d0da3dc9764
Step 2/14 : MAINTAINER zhanglong<1299823875@qq.com>---> Using cache---> a7d9220eaea1
Step 3/14 : COPY readme.txt /usr/local/readme.txt---> 75185a519370
Step 4/14 : ADD jdk-17_linux-x64_bin.tar.gz /usr/local/---> f18628c943f9
Step 5/14 : ADD apache-tomcat-10.0.14.tar.gz /usr/local/---> cb5f48249d52
Step 6/14 : ENV MYPATH /usr/local---> Running in 744c9532630c
Removing intermediate container 744c9532630c---> d717e7fbae30
Step 7/14 : WORKDIR $MYPATH---> Running in 3762997c1004
Removing intermediate container 3762997c1004---> 516f5b34b897
Step 8/14 : ENV JAVA_HOME /usr/local/jdk-17.0.1---> Running in 220966c0cf08
Removing intermediate container 220966c0cf08---> e59e54441933
Step 9/14 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar---> Running in aad69d3a8eed
Removing intermediate container aad69d3a8eed---> cb0337461428
Step 10/14 : ENV CATLINA /usr/local/apache-tomcat-10.0.14---> Running in a2e841bbfaee
Removing intermediate container a2e841bbfaee---> a49466facf63
Step 11/14 : ENV CATLINA_BASH /usr/local/apache-tomcat-10.0.14---> Running in f583436a78d5
Removing intermediate container f583436a78d5---> 71c7024ddf09
Step 12/14 : ENV PATH $PATH:$JAVA_HOME/bin:$CATLINA_HOME/lib:$CATLINA_HOME/bin---> Running in ed57ce38dcae
Removing intermediate container ed57ce38dcae---> 25db5b914fcc
Step 13/14 : EXPOSE 8080---> Running in 93274e9a65ca
Removing intermediate container 93274e9a65ca---> 020a513795c6
Step 14/14 : CMD /usr/local/apache-tomcat-10.0.14/bin/startup.sh && tail -F /url/local/apache-tomcat-10.0.14/bin/logs/catalina.out---> Running in 4b8e68a76874
Removing intermediate container 4b8e68a76874---> 9fbaefa2a0f0
Successfully built 9fbaefa2a0f0
Successfully tagged dittomcat:latest
”[[e[31docker images    #检查镜像
REPOSITORY        TAG       IMAGE ID       CREATED              SIZE
dittomcat         latest    9fbaefa2a0f0   About a minute ago   563MB
entrypoint-test   latest    d43b235a2232   7 hours ago          231MB
cmdtst            latest    4dc544b82f59   8 hours ago          231MB
<none>            <none>    0012da1eef3b   8 hours ago          231MB
nginx             latest    f6987c8d6ed5   2 days ago           141MB
tomcat            latest    24207ccc9cce   2 weeks ago          680MB
hello-world       latest    feb5d9fea6a5   3 months ago         13.3kB
centos            latest    5d0da3dc9764   3 months ago         231MB

4、启动镜像

docker run -d -p 9090:8080 --name zhanglongtomcat -v /home/zl/build/tomcat/test:/usr/local/apache-tomcat-10.0.14/webapps/test -v /home/zl/build/tomcat/tomcatlogs:/usr/local/apache-tomcat-10.0.14/logs dittomcat

5、外部网络访问测试:

6、发布项目(由于做了卷挂载,我们直接在本地编写项目就可以发布了)

<!DOCTYPE html>
<html><head><meta charset="UTF-8"/><title>这是个标题</title></head><body><h1>这是一个一个简单的HTML</h1><p>Hello World!</p></body>
</html>

7、访问测试,浏览器访问查看是否能正常访问

Docker 学习3相关推荐

  1. Docker:学习笔记(1)——基础概念

    Docker:学习笔记(1)--基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...

  2. [转]Docker学习之四:使用docker安装mysql

    本文转自:https://blog.csdn.net/qq_19348391/article/details/82998391 Docker学习之一:注册Docker Hub账号 Docker学习之二 ...

  3. Docker学习之路 用commit命令创建镜像

    Docker学习之路 用commit命令创建镜像 docker 74k 次阅读 · 读完需要 7 分钟 假期快要结束了,干点正事,接着Docker的学习. 构建镜像 构建镜像的两种方法: 使用dock ...

  4. Docker 学习资源整理

    Docker 是近年来非常火的容器技术,而且啊 Docke r不仅仅是红帽和Canonical等Linux巨头眼里的宠儿,微软等专有软件公司也在热烈拥抱 Docker,所以就知道 Docker 为啥这 ...

  5. Docker学习与和应用(二)_使用Docker

    在前一篇文章 Docker学习与和应用(一)_初步认识中,我们初步介绍了Docker解决了什么问题,Docker容器化技术与传统的虚拟化方式的区别,以及简要介绍了Docker的几大核心概念:镜像.容器 ...

  6. Docker学习笔记_网上资源参考

    Docker学习,网上资源参考 1.菜鸟教程:                                                        http://www.runoob.com ...

  7. Docker学习七:使用docker搭建Hadoop集群

    本博客简单分享了如何在Docker上搭建Hadoop集群,我的电脑是Ubuntu20,听同学说wsl2有些命令不对,所以建议在虚拟机里按照Ubuntu或者直接安装双系统吧 Docker学习一:Dock ...

  8. Docker学习六:综合实践

    前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...

  9. Docker学习五:Docker 数据管理

    前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...

  10. Docker学习四:Docker 网络

    前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...

最新文章

  1. 携程App for Apple Watch探索
  2. 为啥led灯用一年后暗了很多_嫌原车的卤素“蜡烛灯”太暗,想换掉,该选氙气灯还是LED灯?...
  3. 跨链(5)“蚂蚁区块链”之预言机
  4. 2021下半年软考分数线会有变动吗?
  5. LAMP集群项目四 安装apache、php及其插件
  6. Linux之nfs服务
  7. 力扣40. 组合总和 II(JavaScript)
  8. SharePoint Framework 简介
  9. Flask成长笔记--在Flask中加密的方式
  10. java 等待时间_java工作复习——4大时间等待——显示等待
  11. 【第二周】结对编程体会
  12. matlab 200阶乘怎么表示,matlab阶乘怎么表示
  13. 闲置安卓手机改造linux服务器
  14. HTML5期末大作业:关于家乡介绍的HTML网页设计——郑州美景HTML+CSS(5页) 学生DW家乡介绍网页设计作业成品 web课程设计网页规划与设计
  15. 计算机出现测试模式,win10系统右下角显示测试模式内部版本10601的详细步骤
  16. 【以太坊】代币创建过程
  17. 【数据结构】(二叉树)计算二叉树的高度递归与非递归 三种方法 C语言
  18. HNOI 2018 滚粗记
  19. 简单的Java 16方格排序游戏
  20. Thinkpad E450c开启Intel virtual technology

热门文章

  1. php验证码字体大小怎么设置,怎么设置thinkphp验证码的宽高
  2. linux远程连接redis的步骤
  3. Android安卓2.2系统21个小技巧
  4. 百度识别(2)图像识别
  5. pfSense防火墙查看NDP邻居无响应
  6. oracle 插入空日期,如何使用Python+Pandas将空的excel日期插入到oracle中?
  7. ##、#、#@在C中的作用(VC)
  8. win2008 r2安装mysql_Windows 2008 r2上安装MySQL
  9. 小米9 VS荣耀V20,高端手机赛道的策略之争
  10. linux超内存自动杀进程问题