Docker精华 ,超全文档!

Posted dk1024

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker精华 ,超全文档!相关的知识,希望对你有一定的参考价值。

我们的口号是:再小的帆也能远航,人生不设限!!   


 

学习规划:继续上篇 《Docker入门》https://www.cnblogs.com/dk1024/p/13121389.html 

继续讲解=========》》》》》》》》》》》》》》》》》》》》》》》》》

 

 技术图片

 

 

一、容器数据卷

1、什么是容器数据卷:Docker是将应用和环境打包成一个镜像,发布到服务器,这个跑起来的容器如果不小心删除掉,呢么数据就会全部丢失,尤其是mysql之类的容器,name现在就有一个需求,数据持久化到本地,这就是卷技术,即:目录的挂载,将我们的容器内的目录挂载到Linux某个目录下,说白了就是一种同步的机制,就是容器的持久化和同步操作,而且容器之间也是可以共享数据的。

技术图片

 

 

 2、体验卷技术

实战:直接使用命令挂载  -v

#目的:启动centos,把容器内 /home 挂载到 /home/ceshi 下

#检查Linux /home目录下是否干净

[root@ldk ~]# cd /home/
[root@ldk home]#

[root@ldk home]# ls


#启动centos 容器

[root@ldk /]# docker run -it -v /home/ceshi:/home centos /bin/bash

 

#进入 容器 查看/home目录


[root@2ce40ff3194b /]# cd /home/
[root@2ce40ff3194b home]# ls
[root@2ce40ff3194b home]#

 

#查看 宿主机目录 /home目录  发现多了个  ceshi文件夹

[root@ldk ~]# cd /home/
[root@ldk home]# ls
 ceshi
[root@ldk home]#

 

#在 宿主机,确认卷是否挂载成功了

[root@ldk home]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2ce40ff3194b centos "/bin/bash" 4 minutes ago Up 4 minutes boring_swanson
[root@ldk home]# docker inspect 2ce40ff3194b
[
{
"Id": "2ce40ff3194b192421024cf4b56606c6dfe3b49c504f41698f0b7ec38e49b71c",
"Created": "2020-06-20T06:05:30.539438785Z",
"Path": "/bin/bash",
"Args": [],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 6971,

...

"Mounts": [
{
"Type": "bind",
"Source": "/home/ceshi",   #宿主机地址
"Destination": "/home",    #docker容器内地址
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],

...

 

#测试挂载效果(在 宿主机 /home/ceshi 下新增ldk.java  检查是否可以映射到 容器 内的/home 目录下)

 

#宿主机

[root@ldk home]# cd ceshi
[root@ldk ceshi]# ll
total 0
[root@ldk ceshi]# touch ldk.java
[root@ldk ceshi]# ll
total 0
-rw-r--r-- 1 root root 0 Jun 20 14:17 ldk.java
[root@ldk ceshi]#

#容器内

[root@2ce40ff3194b /]# cd /home/
[root@2ce40ff3194b home]# ls
ldk.java     
[root@2ce40ff3194b home]#

#查看发现,同步成功! 同理,停止容器,修改 宿主机的ldk.java 文件,再重启容器,查看容器内的ldk.java,同样是可以同步成功的。只要容器存在,就可以同步成功。注:删除容器,宿主机的挂载目录还是存在的。这也间接说明,两份文件占用了两份存储。

 

实战:Mysql 同步数据

 

#获取mysql镜像

[root@ldk /]# docker pull mysql Using default tag: latest latest: Pulling from library/mysql 8559a31e96f4: Already exists d51ce1c2e575: Already exists c2344adc4858: Already exists fcf3ceff18fc: Already exists 16da0c38dc5b: Already exists b905d1797e97: Already exists 4b50d1c6b05c: Already exists c75914a65ca2: Pull complete 1ae8042bdd09: Pull complete 453ac13c00a3: Pull complete 9e680cd72f08: Pull complete a6b5dc864b6c: Pull complete Digest: sha256:8b7b328a7ff6de46ef96bcf83af048cb00a1c86282bfca0cb119c84568b4caf6 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest

#启动mysql
-d 后台运行
-p 端口映射
-v 卷挂载 这边我们挂载两个目录
-e mysql密码
--name 容器名字 [root@ldk /]# docker run -d -p 3310: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 8126f9c18eecb4581a33c1bbab4b5b829617d25104ed7b9004fe751055a9606a [root@ldk /]#

#启动并且挂载成功,按照centos容器挂载规则,查看是否挂载

 

 

 

 

二、具名挂载和匿名挂载

#匿名挂载  nginx, 只指定容器内路径,不指定容器外路径

[root@ldk ~]# docker run -d -P --name nginx01 -v /etc/nginx nginx 9aef70a2a4a5e91687d639dc65635968c8d86e0c456be4eff9665ce2870ced94

#查看所有挂载情况 [root@ldk ~]# docker volume ls DRIVER VOLUME NAME local 9b560fb95ed9e801600ee4fc84d8566575185ff04eec984bd8b2a4bcff9459f1 local 12c2c93d2d80e10ea8545ff78fc7e3fa2eb03400bcc5a7bf475b36d64ec6f48a local 78f7f7c39370425190946b0a29288043e2999e9f0c18078b045c89895bd57264 [root@ldk ~]#

#具名挂载 格式:-v 卷名:容器内目录(大多数情况都是具名方式)

[root@ldk ~]# docker run -d -P --name nginx02 -v jumign-nginx:/etc/nginx nginx
709e5d31a7adfc79fa491edabfec81048a04be3df22dcbb6edf419bfd16de5fd
[root@ldk ~]# docker volume ls
DRIVER VOLUME NAME
local 9b560fb95ed9e801600ee4fc84d8566575185ff04eec984bd8b2a4bcff9459f1
local 12c2c93d2d80e10ea8545ff78fc7e3fa2eb03400bcc5a7bf475b36d64ec6f48a
local 78f7f7c39370425190946b0a29288043e2999e9f0c18078b045c89895bd57264
local jumign-nginx
[root@ldk ~]#

 

 

#查看inspect,所有的卷都挂载在:/var/lib/docker/volumes  下

[root@ldk ~]# docker volume inspect jumign-nginx
[
{
"CreatedAt": "2020-06-20T16:53:27+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/jumign-nginx/_data",
"Name": "jumign-nginx",
"Options": null,
"Scope": "local"
}
]
[root@ldk ~]#

 

#进入宿主机,验证卷的挂载情况

[root@ldk ~]# cd /var/lib/docker/volumes
[root@ldk volumes]# ll
total 40
drwxr-xr-x 3 root root 4096 Jun 20 16:48 12c2c93d2d80e10ea8545ff78fc7e3fa2eb03400bcc5a7bf475b36d64ec6f48a
drwxr-xr-x 3 root root 4096 Jun 20 16:36 78f7f7c39370425190946b0a29288043e2999e9f0c18078b045c89895bd57264
drwxr-xr-x 3 root root 4096 Jun 20 16:36 9b560fb95ed9e801600ee4fc84d8566575185ff04eec984bd8b2a4bcff9459f1
drwxr-xr-x 3 root root 4096 Jun 20 16:53 jumign-nginx
-rw------- 1 root root 32768 Jun 20 16:53 metadata.db
[root@ldk volumes]#

#继续深入查看jumign-nginx 挂载情况,看到了想要的nginx.conf配置文件

[root@ldk volumes]# cd jumign-nginx/_data/
[root@ldk _data]# ll
total 40
drwxr-xr-x 2 root root 4096 Jun 20 16:53 conf.d
-rw-r--r-- 1 root root 1007 May 26 23:00 fastcgi_params
-rw-r--r-- 1 root root 2837 May 26 23:00 koi-utf
-rw-r--r-- 1 root root 2223 May 26 23:00 koi-win
-rw-r--r-- 1 root root 5231 May 26 23:00 mime.types
lrwxrwxrwx 1 root root 22 May 26 23:01 modules -> /usr/lib/nginx/modules
-rw-r--r-- 1 root root 643 May 26 23:01 nginx.conf
-rw-r--r-- 1 root root 636 May 26 23:00 scgi_params
-rw-r--r-- 1 root root 664 May 26 23:00 uwsgi_params
-rw-r--r-- 1 root root 3610 May 26 23:00 win-utf
[root@ldk _data]#

#拓展:
ro readonly 只读:设置之后,只能通过容器外部进行改写,容器内不禁止操作,且权限不可修改
rw readwrite 可读可写,容器内外均可读写


docker run -d -P --name nginx02 -v jumign-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v jumign-nginx:/etc/nginx:rw nginx
 

 

 

三、数据卷之Dockerfile

  初识Dockerfile:之前我们使用commit命令生成过镜像,我们也可以使用Dockerfile构建镜像,说白了,Dockerfile就是Docker镜像的构建文件,就是一段命令脚本!

 小试一把:

#在宿主机 /home/docker-test-volume/ 下新建一个dockerfile1的文件
[root@ldk /]# cd /home/
[root@ldk home]# mkdir docker-test-volume
[root@ldk home]# cd docker-test-volume/
[root@ldk docker-test-volume]# ll
total 0
[root@ldk docker-test-volume]# vim dockerfile1

#编写脚本(开头大写,分层构建):

FROM centos


VOLUME ["volume01","volume02"]


CMD echo "------build end------"


CMD /bin/bash

#脚本解释:准备一个基础的centos镜像;
      设置具名挂载目录为volum01和volume02,创建的时候就挂载 ;
      构建完打印:------build end------;
      默认bash控制台;

#执行脚本

[root@ldk docker-test-volume]# docker build -f /home/docker-test-volume/dockerfile1 -t ldk/centos:1.0 .
Sending build context to Docker daemon 2.048kB
Step 1/4 : FROM centos
---> 470671670cac
Step 2/4 : VOLUME ["volume01","volume02"]
---> Running in 771370c6dfef
Removing intermediate container 771370c6dfef
---> 1941426d1d91
Step 3/4 : CMD echo "------build end------"
---> Running in 070cbd782e00
Removing intermediate container 070cbd782e00
---> c947d804f177
Step 4/4 : CMD /bin/bash
---> Running in 817099ec4089
Removing intermediate container 817099ec4089
---> 49a84ce17460
Successfully built 49a84ce17460
Successfully tagged ldk/centos:1.0

#创建镜像成功

[root@ldk docker-test-volume]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ldk/centos 1.0 49a84ce17460 6 minutes ago 237MB
tomcat latest 2eb5a120304e 10 days ago 647MB
nginx latest 2622e6cca7eb 10 days ago 132MB
mysql 5.7 9cfcce23593a 11 days ago 448MB
mysql latest be0dbf01a0f3 11 days ago 541MB
centos latest 470671670cac 5 months ago 237MB
hello-world latest bf756fb1ae65 5 months ago 13.3kB
[root@ldk docker-test-volume]#

 

 

#启动自己构建的容器

[root@ldk /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ldk/centos 1.0 49a84ce17460 8 minutes ago 237MB
tomcat latest 2eb5a120304e 10 days ago 647MB
nginx latest 2622e6cca7eb 10 days ago 132MB
mysql 5.7 9cfcce23593a 11 days ago 448MB
mysql latest be0dbf01a0f3 11 days ago 541MB
centos latest 470671670cac 5 months ago 237MB
hello-world latest bf756fb1ae65 5 months ago 13.3kB
[root@ldk /]# docker run -it 49a84ce17460 /bin/bash
[root@7b0a9902dbeb /]# ls -l
total 56
lrwxrwxrwx 1 root root 7 May 11 2019 bin -> usr/bin
drwxr-xr-x 5 root root 360 Jun 20 09:44 dev
drwxr-xr-x 1 root root 4096 Jun 20 09:44 etc
drwxr-xr-x 2 root root 4096 May 11 2019 home
lrwxrwxrwx 1 root root 7 May 11 2019 lib -> usr/lib
lrwxrwxrwx 1 root root 9 May 11 2019 lib64 -> usr/lib64
drwx------ 2 root root 4096 Jan 13 21:48 lost+found
drwxr-xr-x 2 root root 4096 May 11 2019 media
drwxr-xr-x 2 root root 4096 May 11 2019 mnt
drwxr-xr-x 2 root root 4096 May 11 2019 opt
dr-xr-xr-x 95 root root 0 Jun 20 09:44 proc
dr-xr-x--- 2 root root 4096 Jan 13 21:49 root
drwxr-xr-x 11 root root 4096 Jan 13 21:49 run
lrwxrwxrwx 1 root root 8 May 11 2019 sbin -> usr/sbin
drwxr-xr-x 2 root root 4096 May 11 2019 srv
dr-xr-xr-x 13 root root 0 Jun 20 09:31 sys
drwxrwxrwt 7 root root 4096 Jan 13 21:49 tmp
drwxr-xr-x 12 root root 4096 Jan 13 21:49 usr
drwxr-xr-x 20 root root 4096 Jan 13 21:49 var
drwxr-xr-x 2 root root 4096 Jun 20 09:44 volume01   //这两个就是我们自动挂载的数据卷目录
drwxr-xr-x 2 root root 4096 Jun 20 09:44 volume02
[root@7b0a9902dbeb /]#

 

 

#验证是否挂载成功(在容器内部新建一个 av.txt文件,去宿主机寻找被同步的av.txt)

#进入容器内的挂载目录 /volum01,新建文件 av.txt

[root@7b0a9902dbeb /]# cd volume01
[root@7b0a9902dbeb volume01]# ls
[root@7b0a9902dbeb volume01]# touch av.txt
[root@7b0a9902dbeb volume01]# ls
av.txt
[root@7b0a9902dbeb volume01]#

 

 

#进入宿主机 

[root@ldk ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7b0a9902dbeb 49a84ce17460 "/bin/bash" 5 minutes ago Up 5 minutes serene_napier
709e5d31a7ad nginx "/docker-entrypoint.…" 57 minutes ago Up 57 minutes 0.0.0.0:32769->80/tcp nginx02
9aef70a2a4a5 nginx "/docker-entrypoint.…" About an hour ago Up About an hour 0.0.0.0:32768->80/tcp nginx01
[root@ldk ~]# docker inspect 7b0a9902dbeb
...
]
},
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/11bd55866068e52271cf7f50ab7adf3fdb1eef887f0f3560810ce83d36a44fcb-init/diff:/var/lib/docker/overlay2/07e92bfd3de681a8ac6ef84545406794783f828fd4f8f0303be4f18ae4e4e198/diff",
"MergedDir": "/var/lib/docker/overlay2/11bd55866068e52271cf7f50ab7adf3fdb1eef887f0f3560810ce83d36a44fcb/merged",
"UpperDir": "/var/lib/docker/overlay2/11bd55866068e52271cf7f50ab7adf3fdb1eef887f0f3560810ce83d36a44fcb/diff",
"WorkDir": "/var/lib/docker/overlay2/11bd55866068e52271cf7f50ab7adf3fdb1eef887f0f3560810ce83d36a44fcb/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "volume",
"Name": "d4a5330aa541110183f279343a769ec93712ec71f6b71ebb71a76a452e3e21e2",
"Source": "/var/lib/docker/volumes/d4a5330aa541110183f279343a769ec93712ec71f6b71ebb71a76a452e3e21e2/_data",
"Destination": "volume01",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
},
...
[root@ldk ~]# cd /var/lib/docker/volumes/d4a5330aa541110183f279343a769ec93712ec71f6b71ebb71a76a452e3e21e2/_data
[root@ldk _data]# ll
total 0
-rw-r--r-- 1 root root 0 Jun 20 17:50 av.txt
[root@ldk _data]#


 

 

四、数据卷容器

多个mysql同步数据!

技术图片

#启动我们自己制作的镜像(注:启动命名最后一个参数,要么填写镜像id。要么填写 镜像名称+tag,否则会报错)
[root@ldk /]# docker run -it --name docker01 ldk/centos:1.0
[root@8a3e0b293bf9 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  volume01    volume02

#启动成功之后 退出容器(Control + P + Q)

[root@8a3e0b293bf9 /]# [root@ldk /]#

#依赖docker01启动docker02,docker01就叫做数据卷容器 [root@ldk /]# docker run -it --name docker02 --volumes-from docker01 ldk/centos:1.0 [root@ee6fa31cd361 /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume01 volume02 [root@ee6fa31cd361 /]# cd volume01 [root@ee6fa31cd361 volume01]# ls

#进入docker01内部在挂载目录 volumes01下创建一个文件

[root@ldk /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ee6fa31cd361 ldk/centos:1.0 "/bin/sh -c /bin/bash" About a minute ago Up About a minute docker02
8a3e0b293bf9 ldk/centos:1.0 "/bin/sh -c /bin/bash" 4 minutes ago Up 4 minutes docker01
[root@ldk /]# docker attach 8a3e0b293bf9
[root@8a3e0b293bf9 /]# cd volume01
[root@8a3e0b293bf9 volume01]# ls
[root@8a3e0b293bf9 volume01]# touch docker01
[root@8a3e0b293bf9 volume01]# ls
docker01
[root@8a3e0b293bf9 volume01]#


#进入docker02内部在挂载目录 volumes01 查看是否有同步更新的文件
[root@ee6fa31cd361 volume01]# ls
docker01
[root@ee6fa31cd361 volume01]# 
#同理:创造一个docker03依赖docker01,效果一样,时拿出docker01,docker02 和docker03 已经 同步拷贝 的文件,依然存在!
技术图片

 


 

 

 

 

五、DockerFile介绍

1、基础介绍:

  dockerfile就是用来构建docker镜像的文件,定义了一切步骤,就是一段包含命令和参数的可执行脚本。

 

构建步骤:1、编写一个dockerfile文件

        2、docker build 构建成为一个镜像

     3、docker run 运行镜像

     4、docker push 发布镜像(DockerHub 、阿里云镜像仓库)

 

构建过程:

  基础知识:1、每个保留关键字(指令)都必须是大写字母

        2、从上向下执行

        3、# 表示注释

        4、每个指令都会创建一个新的镜像层,并提交

技术图片

 

 

 小总结:DockerFile是面向开发的,我们要发布项目,就需要制作镜像,就需要编写dockerfile文件,Docker镜像逐渐成为企业交付的标准。

    DockerFile:构建镜像的初始化文件,源代码。

    DockerImages:通过DockerFile构建生成的容器,最终发布和运行的产品。

    Docker容器:容器就是镜像运行起来的服务器。

 

DockerFile指令:

FROM      #基础镜像,一切的开始
MANTAINER   #镜像作者(姓名+邮箱)
RUN       #镜像构建的时候需要运行的命令
ADD       #步骤中添加tomcat镜像,这个tomcat压缩包就是添加内容
WORKDIR     #镜像的挂载目录
VOLUME     #挂载的目录位置
EXPOSE     #指定暴露端口
CMD       #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代,如果替代之后不是命令,会报错的
ENTRYPOINT   #指定这个容器启动的时候要运行的命令,可以追加执行命令
ONBUILD     #当构建一个被继承的DockerFile,这个时候就会运行ONBUILD 的指令,触发指令。
COPY       #类似AD的,将我们的镜像拷贝到镜像中
WNV       #构建的时候这只环境变量

 

2、实战:构建自己的centos

 

#1、编写DockerFile文件

[root@ldk home]# mkdir dockerfile
[root@ldk home]# cd dockerfile/
[root@ldk dockerfile]# ll
total 0
[root@ldk dockerfile]# vim dockerfile01

DockerFile文件内容:

FROM centos

MAINTAINER ldk<107123456@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash

#2、通过这个DockerFile构建镜像

[root@ldk dockerfile]# docker build -f dockerfile01 -t ldkcentos:0.1 .
Sending build context to Docker daemon 2.048kB
Step 1/10 : FROM centos
---> 470671670cac
Step 2/10 : MAINTAINER ldk<107123456@qq.com>

...

---> Running in 58114b729de4
Removing intermediate container 58114b729de4
---> 3c797ceb67f6
Successfully built 3c797ceb67f6
Successfully tagged ldkcentos:0.1
[root@ldk dockerfile]# 

#3、构建成功,测试运行

[root@ldk dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ldkcentos 0.1 3c797ceb67f6 5 minutes ago 317MB
ldk/centos 1.0 49a84ce17460 6 hours ago 237MB
tomcat latest 2eb5a120304e 10 days ago 647MB
nginx latest 2622e6cca7eb 10 days ago 132MB
mysql 5.7 9cfcce23593a 11 days ago 448MB
mysql latest be0dbf01a0f3 11 days ago 541MB
centos latest 470671670cac 5 months ago 237MB
hello-world latest bf756fb1ae65 5 months ago 13.3kB
[root@ldk dockerfile]#

#启动自己构建的镜像

[root@ldk dockerfile]# docker run -it ldkcentos:0.1
[root@b334b9f261bf local]#

#我们发现进入镜像,直接进入了刚才DockerFile 设置的工作目录 /usr/local 下。

#4、docker history 镜像id  :查看镜像的构建过程历史信息,可以自己试一下。



 

 

3、实战:DockerFile制作tomcat镜像

#1、准备镜像文件  tomcat压缩包,jdk压缩包
技术图片

#2、编写dockerfile文件,官方命名:DockerFile,build会自动寻找这个文件,就不需要-f指定了

[root@ldk tomcat]# vim Dockerfile

  #文件内容:

FROM centos
MAINTAINER ldk<107123456@qq.com>

COPY readme.txt /usr/local/readme.txt

ADD jdk-8u65-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.0.28.tar.gz /usr/local/

RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0.65
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_MOHE/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.0.28
ENV CATLINA_BASH /usr/local/apache-tomcat-8.0.28
ENV PATH $PATH:$JAVA_HOME/bin:$CATALIN_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-8.0.28/bin/startup.sh && tail -F /url/local/apache-tomcat-8.0.28/bin/logs/catalina.out


3、构建镜像

[root@ldk tomcat]# docker build -t diytomcat .

[root@ldk tomcat]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
diytomcat latest 2835818b0158 15 minutes ago 672MB
ldkcentos 0.1 3c797ceb67f6 About an hour ago 317MB
ldk/centos 1.0 49a84ce17460 7 hours ago 237MB
tomcat latest 2eb5a120304e 10 days ago 647MB
nginx latest 2622e6cca7eb 11 days ago 132MB
mysql 5.7 9cfcce23593a 11 days ago 448MB
mysql latest be0dbf01a0f3 11 days ago 541MB
centos latest 470671670cac 5 months ago 237MB
hello-world latest bf756fb1ae65 5 months ago 13.3kB
[root@ldk tomcat]#


4、启动镜像

[root@ldk tomcat]# docker run -d -p 3310:8080 --name ldkdiytomcat -v /home/ldk/build/tomcat/test:/url/local/apache-tomcat-8.0.28/webapps/test -v /home/ldk/build/tomcat/tomcatlogs/:/url/local/apache-tomcat-8.0.28/logs diytomcat
d29fef718ec1b522847d1be13811dcfe6bd64da753c2e887fa54fa982ce2d35f

[root@ldk tomcat]# pwd
/home/ldk/build/tomcat
[root@ldk tomcat]# ll
total 8
drwxr-xr-x 2 root root 4096 Jun 21 00:54 test
drwxr-xr-x 2 root root 4096 Jun 21 00:55 tomcatlogs
[root@ldk tomcat]#ll

total 8
drwxr-xr-x 2 root root 4096 Jun 21 00:54 test
drwxr-xr-x 2 root root 4096 Jun 21 00:55 tomcatlogs
[root@ldk tomcat]#


5、访问测试
技术图片

 

 



#ok,项目发布成功

 

 本周就暂时总结到这====》》》》

还剩下几个模块,

有兴趣的,记得留言,我后期再更,

没有留言就不更了~

 

发布镜像到DockerHub

发布镜像到阿里云容器服务

Docker所有流程小结

Docker0网络详解

容器互联--link

自定义网络

网络连通

 

以上是关于Docker精华 ,超全文档!的主要内容,如果未能解决你的问题,请参考以下文章

java银行管理系统代码,附超全教程文档

超全超香,数据分析与数据挖掘最频繁使用代码合集来了

你会的还只有初级安卓工程师的技术吗?附超全教程文档

超全K8s集群构建指南,建议收藏

java泛型方法具体实例,附超全教程文档

java响应式框架,附超全教程文档