摘要:图解结论容器之间配置信息的传递,数据容器的生命周期一直持续到没有容器使用为止。
学习了docker命令后,接下来要进行学习的就是docker中比较核心的知识:容器数据卷、dockerFile以及docker网络,在这里将学习docker基础的过程记录下来
docker的理念是将我们写好的应用和环境进行打包成为一个镜像。
如果我们都将数据放在容器中,将容器删除以后,数据就会丢失。因此就引出了将数据持久化的需求。因此就有了容器之间数据共享的技术:将Docker容器中产生的数据同步到本地。这就是容器数据卷的技术:也叫目录的挂载,将容器内的目录挂载到本机上面。
图解:
容器数据卷的一个好处是哪怕此时容器没有启动,但是要修改容器内的数据只需在本地操作即可,同时容器间也可以进行数据的共享。
使用方法: 使用命令来进行挂载:-v
docker run -it -v 主机目录:容器目录# 测试:# 运行centos容器,并将容器中的/home目录挂载到主机中的/home/ceshi目录下[root@VM-16-16-centos home]# docker run -it -v /home/ceshi:/home centos /bin/bash...按快捷键Ctrl + P + Q退出容器...# 查看当前正在运行的容器[root@VM-16-16-centos ceshi]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb46ad200daed centos "/bin/bash" 20 seconds ago Up 19 seconds pensive_cartwright# 查看容器的元数据[root@VM-16-16-centos ceshi]# docker inspect b46ad200daed此处省略其它数据..."Mounts": [ { "Type": "bind", # 绑定的形式 "Source": "/home/ceshi", # 主机内地址 "Destination": "/home", # docker容器内的地址 "Mode": "", "RW": true, "Propagation": "rprivate" }],此处省略其它数据...
此时将容器删除后会发现挂载到本地的数据卷没有丢失,仍然存储在本机
在可以进行挂载卷以后,可以通过相应的命令来查看数据卷的挂载信息
docker volume [参数]# 可选参数Commands: create # 创建一个数据卷 inspect # 查看数据卷的元数据 ls # 查看所有的数据卷 rm # 移除一个或多个数据卷
匿名挂载就是我们在进行挂载时不写主机内路径,只写容器内路径,docker会自动帮我们在主机生成一个目录用于容器的数据挂载
-v 容器内路径# 例如:# 查看所有数据卷信息[root@VM-16-16-centos home]# docker volume ls DRIVER VOLUME NAME# 以下就是匿名挂载local 4bf18cbb2a6128f80fcb499803fc40fd4205255766da919c1dfa0e86accf1944local 4f417a0068e19f84c0f26a287ad1fde01cc07897d6be80122b7c21f574d78e02local 7e51a5b64ea902b4035769321b4156dbe9c118f5e32a3e5c70cf8c23968d5db8local 33119b40b12d49c1d325d8630c8cec5aeb6ceb3c225691e32d6aa407399a4b58
像这样VOLUME_NAME
中没有具体的名字,只有一串地址值的挂载方式就叫匿名挂载
同理,与匿名挂载相反,具名挂载就是在挂载前通过-v 卷名:容器内路径
来进行挂载
-v 卷名:容器内路径# 例如:# 将centos容器的/home/ceshi目录下的内容挂载到主机,并且将数据卷的名称设置为juming-centos[root@VM-16-16-centos home]# docker run -d -it -v juming-centos:/home/ceshi centosddfcb311e27b8bd3e592c89ef0f453e72d3f9031f2b7b8975553b946a14841a8# 查看所有的挂载列表[root@VM-16-16-centos home]# docker volume ls DRIVER VOLUME NAMElocal db38f0d2d4fd98997ae86acfcf096cfff6b39230963aeb323da14d1e942e2d08local juming-centos
但是此时只知道将容器内的数据卷挂载到了主机,具体挂载到了哪个位置则需要使用inspect
来查看
# 通过具体的数据卷名称来查看数据卷的元数据[root@VM-16-16-centos home]# docker volume inspect juming-centos [ { "CreatedAt": "2021-11-11T21:11:11+08:00", "Driver": "local", "Labels": null, # 本机具体的挂载位置 "Mountpoint": "/var/lib/docker/volumes/juming-centos/_data", "Name": "juming-centos", "Options": null, "Scope": "local" }]
所有docker容器内部的数据卷,在没有指定主机内的挂载目录时都是在/var/lib/docker/volumes/容器名称/_data
位置进行挂载
因为通过具名挂载可以使我们很方便的找到一个数据卷,因此在大多数情况下都是使用具名挂载
如何判断是具名挂载、匿名挂载还是指定路径挂载?
-v 容器内路径 # 匿名挂载-v 卷名:容器内路径 # 具名挂载-v /宿主机路径:/容器内路径 # 指定路径挂载
拓展:
在执行docker命令时会发现有这样的语句,会发现有ro或是rwdocker run -d -P --name centos02 -v juming-centos:/bin/bash:ro centosdocker run -d -P --name centos02 -v juming-centos:/bin/bash:rw centos
解释:
通过-v 容器内路径:ro/rw
可以改变读写权限
ro => readonly 只读
当出现ro时就说明这个路径只能通过宿主机来操作,容器内部是无法操作的rw => readwrite 可读可写(默认)
一旦设置了容器的权限,此时的容器对挂载出来的内容就会存在限制
Dockerfile就是用来构建docker镜像的构建文件,通过这个dockerfile脚本可以生成镜像。因为镜像是层级结构,因此Dockerfile脚本文件也具备层级结构,脚本文件中的每一层都是一个命令
创建dockerfile文件,名字可以随便,建议为dockerfile,文件中的内容指令全部为大写,文件中的每一个命令都是镜像中的一层
在这里写一个测试文件来进行测试
# 编辑dockerfile文件[root@VM-16-16-centos testDockerfile]# vim dockerfile# 查看编辑的文件内容 [root@VM-16-16-centos testDockerfile]# cat dockerfileFROM centosVOLUME ["volume01","volume02"]CMD echo "----------end----------"CMD /bin/bash# 在输出文件内容没有问题时,开始根据dockerfile构建docker镜像[root@VM-16-16-centos testDockerfile]# docker build -f dockerfile -t centos:1.0 .Sending build context to Docker daemon 2.048kB# 基础的镜像Step 1/4 : FROM centos ---> 5d0da3dc9764# 通过VOLUME进行挂载Step 2/4 : VOLUME ["volume01","volume02"] ---> Running in 02e35dd76b93Removing intermediate container 02e35dd76b93 ---> fa6b31173f3aStep 3/4 : CMD echo "----------end----------" ---> Running in 4508cdfca653Removing intermediate container 4508cdfca653 ---> 75c26eb52f3fStep 4/4 : CMD /bin/bash ---> Running in c836f8ca91a1Removing intermediate container c836f8ca91a1 ---> 30a7c5c2798fSuccessfully built 30a7c5c2798fSuccessfully tagged centos:1.0# 根据dockerfile构建好docker镜像后查看[root@VM-16-16-centos testDockerfile]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE# 这里就是我们刚才通过dockerfile构建的镜像centos 1.0 30a7c5c2798f About a minute ago 231MBtomcat latest b0e0b0a92cf9 3 weeks ago 680MBcentos latest 5d0da3dc9764 8 weeks ago 231MBmysql 8.0.13 102816b1ee7d 2 years ago 486MB# 启动自己写的容器[root@VM-16-16-centos testDockerfile]# docker run -it 30a7c5c2798f /bin/bash
此时的数据卷一定在本机有一个同步的目录,在dockerfile中VOLUME这一行中没有指定数据卷的名称,为匿名挂载
# 在容器内跳转到volume01目录下[root@6e08f4a4abbd /]# cd volume01# 在该目录下新建container.txt文件[root@6e08f4a4abbd volume01]# touch container.txt# 在不结束容器运行的前提下退出容器[root@6e08f4a4abbd volume01]# read escape sequence# 查看当前容器的元数据[root@VM-16-16-centos testDockerfile]# docker inspect 6e08f4a4abbd...... 此处省略其他数据 ......"Mounts": [ { "Type": "volume", "Name": "a54af2a118121fbff85d951429b4d4de69c8a7f8840a8cd8202b192c9bad9806", "Source": "/var/lib/docker/volumes/a54af2a118121fbff85d951429b4d4de69c8a7f8840a8cd8202b192c9bad9806/_data", "Destination": "volume02", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" }, { "Type": "volume", "Name": "6acd9a7ec3ffdaa8ccd728d6da31338fadff11042b5e052c9c35cfdee0f4cc4e", "Source": "/var/lib/docker/volumes/6acd9a7ec3ffdaa8ccd728d6da31338fadff11042b5e052c9c35cfdee0f4cc4e/_data", "Destination": "volume01", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" }],... 此处省略其他数据 ...
测试刚才在容器中新建的文件是否同步到了主机
这种方式就是数据卷的挂载,未来在构建自己的镜像时会经常使用这种挂载方式。
这这里启动三个容器来进行测试,通过刚才自己写的镜像来启动
# 启动第一个容器并命名为docker01[root@VM-16-16-centos _data]# docker run -it --name docker01 centos:1.0[root@837e1ade25ff /]# lsbin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume01 volume02
启动好第一个镜像后,按Ctrl + P + Q退出当前容器,来启动第二个容器,在启动时通过--volumes-from
命令将第二个容器的数据卷挂载到docker01上
[root@VM-16-16-centos _data]# docker run -it --name docker02 --volumes-from docker01 centos:1.0[root@f40031fc1017 /]# ls -ltotal 56lrwxrwxrwx 1 root root 7 Nov 3 2020 bin -> usr/bindrwxr-xr-x 5 root root 360 Nov 13 01:55 devdrwxr-xr-x 1 root root 4096 Nov 13 01:55 etcdrwxr-xr-x 2 root root 4096 Nov 3 2020 homelrwxrwxrwx 1 root root 7 Nov 3 2020 lib -> usr/liblrwxrwxrwx 1 root root 9 Nov 3 2020 lib64 -> usr/lib64drwx------ 2 root root 4096 Sep 15 14:17 lost+founddrwxr-xr-x 2 root root 4096 Nov 3 2020 mediadrwxr-xr-x 2 root root 4096 Nov 3 2020 mntdrwxr-xr-x 2 root root 4096 Nov 3 2020 optdr-xr-xr-x 120 root root 0 Nov 13 01:55 procdr-xr-x--- 2 root root 4096 Sep 15 14:17 rootdrwxr-xr-x 11 root root 4096 Sep 15 14:17 runlrwxrwxrwx 1 root root 8 Nov 3 2020 sbin -> usr/sbindrwxr-xr-x 2 root root 4096 Nov 3 2020 srvdr-xr-xr-x 13 root root 0 Nov 13 01:55 sysdrwxrwxrwt 7 root root 4096 Sep 15 14:17 tmpdrwxr-xr-x 12 root root 4096 Sep 15 14:17 usrdrwxr-xr-x 20 root root 4096 Sep 15 14:17 var# 在创建的docker02容器中也有了挂载的数据卷drwxr-xr-x 2 root root 4096 Nov 13 01:51 volume01drwxr-xr-x 2 root root 4096 Nov 13 01:51 volume02
现在进入docker01容器
# 查看当前正在运行的容器[root@VM-16-16-centos ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES822ae9cfcc8d centos:1.0 "/bin/sh -c /bin/bash" About a minute ago Up About a minute docker02837e1ade25ff centos:1.0 "/bin/sh -c /bin/bash" 56 minutes ago Up 56 minutes docker016e08f4a4abbd 30a7c5c2798f "/bin/bash" 2 hours ago Up 2 hours youthful_thompson# 进入到容器docker02中[root@VM-16-16-centos ~]# docker attach 822ae9cfcc8d# 跳转到docker02的volume01目录下[root@822ae9cfcc8d /]# cd volume01# 查看当前目录下的文件,发现此时docker02容器的volume01的目录下有在docker01中volume01目录中创建的文件[root@822ae9cfcc8d volume01]# lsdocker01.txt
图解:
在测试成功两个容器相互挂载后,现在再增加一个是否仍然可以挂载呢?
现在创建第三个容器docker03容器挂载到docker01容器上
[root@VM-16-16-centos ~]# docker run -it --name docker03 --volumes-from docker01 centos:1.0[root@6b7b0023d7c9 /]# cd volume01[root@6b7b0023d7c9 volume01]# lsdocker01.txt[root@6b7b0023d7c9 volume01]# touch docker03.txt[root@6b7b0023d7c9 volume01]# [root@VM-16-16-centos ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES6b7b0023d7c9 centos:1.0 "/bin/sh -c /bin/bash" 36 seconds ago Up 35 seconds docker03822ae9cfcc8d centos:1.0 "/bin/sh -c /bin/bash" 18 minutes ago Up 18 minutes docker02837e1ade25ff centos:1.0 "/bin/sh -c /bin/bash" About an hour ago Up About an hour docker016e08f4a4abbd 30a7c5c2798f "/bin/bash" 2 hours ago Up 2 hours youthful_thompson[root@VM-16-16-centos ~]# docker attach 837e1ade25ff[root@837e1ade25ff volume01]# lsdocker01.txt docker03.txt
此时容器docker02和docker03此时都挂载到了docker01上,那么又会产生一个问题,就是当我们将docker01容器删除或停止以后,docker02和docker03容器中的数据是否仍然存在?接着进行测试
测试结果发现,删除docker01容器后依旧可以访问挂载到docker01中的文件,因此可以发现,在docker 容器挂载是双向拷贝的概念,类似于vue中的v-model双向数据绑定,可以实现两个容器的数据同步。
图解:
结论:容器之间配置信息的传递,数据容器的生命周期一直持续到没有容器使用为止。一旦持久化到了本地,哪怕把所有的容器删除掉,这个时候本地的数据同样是不会删除的
dockerfile是用来构建docker镜像的文件,就是一个命令参数脚本
构建步骤:
查看官方是如何制作镜像文件的:https://hub.docker.com/
当点击daockerfile的链接跳转到GitHub上时,可以看到官方dockerfile的源码
基础知识:
dockerfile是面向开发的,以后要发布项目、做镜像时就需要编写dockerfile文件
步骤:开发、部署、运维
FROM // 基础镜像,一切从这里开始构建MAINTAINER // 镜像是谁写的,姓名+邮箱RUN // 镜像构建时需要运行的命令ADD // 步骤:其它镜像,其它镜像的压缩包就是添加的内容WORKDIR // 镜像的工作目录(可以自己指定)VOLUME // 挂载的目录EXPOSE // 暴露端口配置CMD // 指定这个容器启动时要运行的命令,只有最后一个会生效,可被替代ENTRYPOINT // 指定这个容器启动时要运行的命令,可以追加命令ONBUILD // 当构建一个被继承的DockerFile,这个时候就会运行ONBUILD的命令COPY // 类似ADD命令,将文件拷贝到镜像中ENV // 构建的时候设置环境变量
Centos8.0官方的dockerfile文件
Docker Hub中绝大部分镜像都是从scratch镜像中过来的,然后配置需要的软件和配置来进行构建
# 跳转到home目录下[root@VM-16-16-centos ~]# cd /home# 新建dockerfile的目录[root@VM-16-16-centos home]# mkdir dockerfile# 跳转到dockerfile目录中[root@VM-16-16-centos home]# cd dockerfile# 新建并编辑dockerfile文件[root@VM-16-16-centos dockerfile]# vim mydockerfile------------------- dockerfile文件内容 -------------------FROM centosMAINTAINER shijimodejiagoushi<1072876976@qq.com>ENV MYPATH /usr/localWORKDIR $MYPATHRUN yum -y install vimRUN yum -y install net-toolsEXPOSE 90CMD echo $MYPATHCMD echo "---------- end ----------"CMD /bin/bash------------------- dockerfile文件内容 -------------------
接下来对通过dockerfile构建成功的镜像进行查看与测试
[root@VM-16-16-centos dockerfile]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEmycentos 1.0 b87f31e57281 13 minutes ago 340MB # 这里就是我们通过dockerfile构建的镜像centos 1.0 30a7c5c2798f 2 days ago 231MBhalohub/halo 1.4.13 07dafc8f2711 8 days ago 325MBtomcat latest b0e0b0a92cf9 3 weeks ago 680MBcentos latest 5d0da3dc9764 2 months ago 231MBmysql 8.0.13 102816b1ee7d 2 years ago 486MB# 进入我们构建的镜像进行测试[root@VM-16-16-centos dockerfile]# docker run -it mycentos:1.0# 查看当前镜像的工作路径[root@df7b4314eb48 local]# pwd/usr/local
制作tomcat镜像需要使用到Tomcat的压缩包以及JDK的压缩包
下载链接:
官方命名为Dockerfile
,build时就会自动寻找这个文件,就不需要 -f
来进行指定了
在dockerfile文件中,使用ADD命令时添加的是压缩包的话,会自动进行解压
[root@VM-16-16-centos tomcat-dockerfile]# touch readme.txt[root@VM-16-16-centos tomcat-dockerfile]# vim Dockerfile[root@VM-16-16-centos tomcat-dockerfile]# cat DockerfileFROM centosMAINTAINER shijimodejiagoushi<1072876976@qq.com>COPY readme.txt /usr/local/readme.txtADD jdk-8u202-linux-x64.tar.gz /usr/local/ADD apache-tomcat-8.5.72.tar.gz /usr/local/RUN yum -y install vimENV MYPATH /usr/localWORKDIR $MYPATHENV JAVA_HOME /usr/local/jdk1.8ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENV CATALINA_HOME /usr/local/apache-tomcat-8.5.72ENV CATALINA_BASH /usr/local/apache-tomcat-8.5.72ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/binEXPOSE 8080CMD /usr/local/apache-tomcat-8.5.72/bin/startup.sh && tail -F /url/local/apache-tomcat-8.5.72/bin/logs/catalina.out
因为此时的dockerfile文件的名称为Dockerfile,与官方的名称相同,因此直接构建生成镜像即可,无需指定dockerfile的路径
[root@VM-16-16-centos tomcat-dockerfile]# docker build -t diytomcat .Sending build context to Docker daemon 157.4MBStep 1/15 : FROM centos ---> 5d0da3dc9764Step 2/15 : MAINTAINER shijimodejiagoushi<1072876976@qq.com> ---> Using cache ---> 4102f7944f69Step 3/15 : COPY readme.txt /usr/local/readme.txt ---> 72faff07d65dStep 4/15 : ADD jdk-8u311-linux-x64.tar.gz /usr/local/ ---> 469af64c2dffStep 5/15 : ADD apache-tomcat-8.5.72.tar.gz /usr/local/ ---> d8772f248742Step 6/15 : RUN yum -y install vim ---> Running in fde58a7e7aeaCentOS Linux 8 - AppStream 16 MB/s | 9.6 MB 00:00CentOS Linux 8 - BaseOS 4.7 MB/s | 8.5 MB 00:01CentOS Linux 8 - Extras 24 kB/s | 10 kB 00:00Dependencies resolved.================================================================================ Package Arch Version Repository Size================================================================================Installing: vim-enhanced x86_64 2:8.0.1763-15.el8 appstream 1.4 MInstalling dependencies: gpm-libs x86_64 1.20.7-17.el8 appstream 39 k vim-common x86_64 2:8.0.1763-15.el8 appstream 6.3 M vim-filesystem noarch 2:8.0.1763-15.el8 appstream 48 k which x86_64 2.21-12.el8 baseos 49 kTransaction Summary================================================================================Install 5 PackagesTotal download size: 7.8 MInstalled size: 30 MDownloading Packages:(1/5): gpm-libs-1.20.7-17.el8.x86_64.rpm 4.2 MB/s | 39 kB 00:00(2/5): vim-filesystem-8.0.1763-15.el8.noarch.rp 12 MB/s | 48 kB 00:00(3/5): vim-enhanced-8.0.1763-15.el8.x86_64.rpm 48 MB/s | 1.4 MB 00:00(4/5): vim-common-8.0.1763-15.el8.x86_64.rpm 90 MB/s | 6.3 MB 00:00(5/5): which-2.21-12.el8.x86_64.rpm 211 kB/s | 49 kB 00:00--------------------------------------------------------------------------------Total 5.3 MB/s | 7.8 MB 00:01warning: /var/cache/dnf/appstream-02e86d1c976ab532/packages/gpm-libs-1.20.7-17.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEYCentOS Linux 8 - AppStream 1.6 MB/s | 1.6 kB 00:00Importing GPG key 0x8483C65D: Userid : "CentOS (CentOS Official Signing Key) " Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D From : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficialKey imported successfullyRunning transaction checkTransaction check succeeded.Running transaction testTransaction test succeeded.Running transaction Preparing : 1/1 Installing : which-2.21-12.el8.x86_64 1/5 Installing : vim-filesystem-2:8.0.1763-15.el8.noarch 2/5 Installing : vim-common-2:8.0.1763-15.el8.x86_64 3/5 Installing : gpm-libs-1.20.7-17.el8.x86_64 4/5 Running scriptlet: gpm-libs-1.20.7-17.el8.x86_64 4/5 Installing : vim-enhanced-2:8.0.1763-15.el8.x86_64 5/5 Running scriptlet: vim-enhanced-2:8.0.1763-15.el8.x86_64 5/5 Running scriptlet: vim-common-2:8.0.1763-15.el8.x86_64 5/5 Verifying : gpm-libs-1.20.7-17.el8.x86_64 1/5 Verifying : vim-common-2:8.0.1763-15.el8.x86_64 2/5 Verifying : vim-enhanced-2:8.0.1763-15.el8.x86_64 3/5 Verifying : vim-filesystem-2:8.0.1763-15.el8.noarch 4/5 Verifying : which-2.21-12.el8.x86_64 5/5Installed: gpm-libs-1.20.7-17.el8.x86_64 vim-common-2:8.0.1763-15.el8.x86_64 vim-enhanced-2:8.0.1763-15.el8.x86_64 vim-filesystem-2:8.0.1763-15.el8.noarch which-2.21-12.el8.x86_64Complete!Removing intermediate container fde58a7e7aea ---> 25325ca2577fStep 7/15 : ENV MYPATH /usr/local ---> Running in a9c36972ce5aRemoving intermediate container a9c36972ce5a ---> 63bb0ba56832Step 8/15 : WORKDIR $MYPATH ---> Running in d09e1861e9abRemoving intermediate container d09e1861e9ab ---> 06619c0bcd1eStep 9/15 : ENV JAVA_HOME /usr/local/jdk1.8 ---> Running in 5ef54db767c4Removing intermediate container 5ef54db767c4 ---> 71dea4ae1e23Step 10/15 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ---> Running in 015882797b85Removing intermediate container 015882797b85 ---> cf09007b5767Step 11/15 : ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.72 ---> Running in 1109e02165b4Removing intermediate container 1109e02165b4 ---> 77bf619c4becStep 12/15 : ENV CATALINA_BASH /usr/local/apache-tomcat-8.5.72 ---> Running in 90cd718a8a5cRemoving intermediate container 90cd718a8a5c ---> ca611958f271Step 13/15 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin ---> Running in f07f036febf0Removing intermediate container f07f036febf0 ---> b83a4ed77e8dStep 14/15 : EXPOSE 8080 ---> Running in 3c1de3e2b0e8Removing intermediate container 3c1de3e2b0e8 ---> 4df529a4e623Step 15/15 : CMD CATALINA_HOME /usr/local/apache-tomcat-8.5.72/bin/startup.sh && tail --F /url/local/apache-tomcat-8.5.72/bin/logs/catalina.out ---> Running in 8206acc4eb6cRemoving intermediate container 8206acc4eb6c ---> 59ed85310171Successfully built 59ed85310171Successfully tagged diytomcat:latest
此时可以看到镜
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/123581.html
摘要:所以这里一般就是执行启动我们应用的那条命令。编译运行编译好的镜像打开浏览器进行测试 编译docker镜像 1.加速docker镜像下载速度 取决于网络速度,如果不慢的话,可以先不装 https://www.daocloud.io/mirror#accelerator-doc 执行下面的命令配置加速器 curl -sSL https://get.daocloud.io/daotools...
摘要:所以这里一般就是执行启动我们应用的那条命令。编译运行编译好的镜像打开浏览器进行测试 编译docker镜像 1.加速docker镜像下载速度 取决于网络速度,如果不慢的话,可以先不装 https://www.daocloud.io/mirror#accelerator-doc 执行下面的命令配置加速器 curl -sSL https://get.daocloud.io/daotools...
摘要:所以这里一般就是执行启动我们应用的那条命令。编译运行编译好的镜像打开浏览器进行测试 编译docker镜像 1.加速docker镜像下载速度 取决于网络速度,如果不慢的话,可以先不装 https://www.daocloud.io/mirror#accelerator-doc 执行下面的命令配置加速器 curl -sSL https://get.daocloud.io/daotools...
摘要:时间年月日星期六说明本文部分内容均来自慕课网。必填用于执行命令,当执行完毕后,将产生一个新的文件层。可选指定此镜像启动时默认执行命令。可选用于指定需要暴露的网络端口号。可选向镜像中挂载一个卷组。 时间:2017年09月16日星期六说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com 教学源码:无 学习源码:无 第一章:课程简介 1-1 课程介绍 Docke...
摘要:拉取镜像启动发现后端创建集群创建主管理员操作对象因为这里的既是主管理员又是发现服务后台,所以和的都是。主管理员操作节点的容器查看集群节点的容器列表删除容器启停容器与直接操作的区别就是后面加了 搭建基础环境 官方文档中演示时用到了五台主机/虚拟机; showImg(https://segmentfault.com/img/bVzce2); 这里因为资源有限,只用三台; showImg(h...
摘要:实现前述目的的方式有两种在一个文件中指定一个基础镜像及需要完成的修改或通过运行一个镜像,对其进行修改并提交。容器对外公开服务是必要的,因此允许公开容器的特定端口。镜像必须完全可移植,不允许例外。 Docker是一个相对较新且发展非常快速的项目,可用来创建非常轻量的虚拟机。注意,这里的引号非常重要,Docker创建的并非真正的虚拟机,而更像是打了激素的chroot,嗯,是大量的激素。 D...
阅读 3285·2021-11-18 10:02
阅读 482·2021-11-17 09:33
阅读 1384·2021-10-12 10:12
阅读 2815·2021-10-09 09:53
阅读 4372·2021-09-09 09:34
阅读 587·2021-09-06 15:02
阅读 2644·2021-08-05 10:02
阅读 2938·2019-08-30 15:44