Docker进阶学习

容器数据卷

docker的理念是将应用和环境打包成一个镜像。

如果数据都在容器中,那么我们容器删除,数据就会丢失!需求:数据可以持久化

需求:容器中的数据可以存在本地

容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地!

这就是卷技术!目录的挂在,将我们容器内的目录,挂载到Linux上面!

容器的持久化和同步操作!容器间也是可以共享的

使用数据卷

方式一 :直接使用命令来挂载 -v

docker run -it -v 主机目录:容器内目录
[root@VM-8-14-centos home]# docker run -it -v /home/test:/home centos /bin/bash
#容器内
[root@66917585e46c /]# cd home
[root@66917585e46c home]# ls
[root@66917585e46c home]# mkdir FANXU
#主机内
[root@VM-8-14-centos home]# ls
lighthouse  MUYU  test
[root@VM-8-14-centos home]# cd test
[root@VM-8-14-centos test]# ls
FANXU

无论是从主机的test目录添加文件,或是从容器中的home下添加文件,两边都会自动进行同步。

好处:我们以后修改只需要在本地修改即可,容器内会自动进行同步

安装Mysql

#获取容器
[root@VM-8-14-centos test]# docker pull mysql:5.7
5.7: Pulling from library/mysql
e1acddbe380c: Already exists
bed879327370: Pull complete
03285f80bafd: Pull complete
......
Digest: sha256:7cf2e7d7ff876f93c8601406a5aa17484e6623875e64e7acc71432ad8e0a3d7e
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7#运行容器:-d后台运行 -p设置端口 -v设置挂载路径 -e 环境配置,MYSQL_ROOT_PASSWORD设置mysql密码(必填)
[root@VM-8-14-centos test]# docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password --name mysql mysql:5.7
2da46ed95ba3e66612e25d4f77129e72d209bd1cdd26edd47d82816e07820a89

具名和匿名挂载

#匿名挂载
-v 容器内路径! -P 随机映射端口
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
#查看所有的volume的情况
[root@VM-8-14-centos data]# docker volume ls
DRIVER    VOLUME NAME
local     8613276e64c7d34e01b2366e80d6d2491dc2ae00f0c5ee6062dfc71a0bc897cb
#这种就是匿名挂载,在-v中只写了容器内的路径,没有写容器外的路径#具名挂载
docker run -d -P --name nginx01 -v /etc/nginx nginx
[root@VM-8-14-centos data]# docker volume ls
DRIVER    VOLUME NAME
local     juming-nginx
# 通过-v 卷名:容器内路径  命名#查看这个卷的详细信息
docker volume inpsect juming-nginx

所有docker容器内的卷,在没有指定目录的情况下都是存在/var/lib/docker/volumes/xxx/_data

推荐使用具名挂载

扩展

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx
#这种情况,ro代表read only 只读
#rw代表 read write 读写
#默认为读写,如果使用ro的话,那么只能从容器内部进行写操作,容器外只能读。

DockerFile挂载

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

通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个个的命令,每个命令都是一层!

使用dockerfile挂载文件夹

#创建一个dockerfile文件,名字可以随机,建议 Dockerfile
#文件中的内容 指令(大写) 参数
[root@VM-8-14-centos docker-test-volume]# pwd
/home/docker-test-volume
[root@VM-8-14-centos docker-test-volume]# vi dockerfile1
[root@VM-8-14-centos docker-test-volume]# cat dockerfile1
FROM centosVOLUME ["volume01","volume02"]CMD echo "----end----"
CMD /bin/bash
[root@VM-8-14-centos docker-test-volume]# docker build -f dockerfile1 -t fanxu/centos:1.0 .
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM centos---> 300e315adb2f
Step 2/4 : VOLUME ["volume01","volume02"]---> Running in 4bac924c41e9
Removing intermediate container 4bac924c41e9---> 8df2881b227e
Step 3/4 : CMD echo "----end----"---> Running in 26e85ef2daf0
Removing intermediate container 26e85ef2daf0---> c066d8c93847
Step 4/4 : CMD /bin/bash---> Running in 9da8dbb3ae17
Removing intermediate container 9da8dbb3ae17---> a879d71f361b
Successfully built a879d71f361b
Successfully tagged fanxu/centos:1.0

进入自己创建的镜像,查看挂载

[root@VM-8-14-centos docker-test-volume]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED              SIZE
fanxu/centos          1.0       a879d71f361b   About a minute ago   209MB
[root@VM-8-14-centos docker-test-volume]# docker run -it a879d71f361b /bin/bash

查看挂载到了主机中的哪个目录

[root@VM-8-14-centos /]# docker inspect 6a33393e604a

测试文件是否互通

#主机
[root@VM-8-14-centos /]# cd /var/lib/docker/volumes/b37419fb8fe1a5199f594c183e40d83f5e135b2ea7d1886083a65244105a0a0f/_data
[root@VM-8-14-centos _data]# ls
[root@VM-8-14-centos _data]# vi helloDockerFile
[root@VM-8-14-centos _data]# cat helloDockerFile
hello dockerfile#镜像
[root@6a33393e604a /]# cd volume01
[root@6a33393e604a volume01]# ls
helloDockerFile
[root@6a33393e604a volume01]# cat helloDockerFile
hello dockerfile

这种方式,平时使用的较多,因为我们通常会构建自己的镜像!假设构建镜像的时候没有挂载卷,就要手动镜像挂载 -v卷名 容器内路径

数据卷容器

多个容器同步数据,比如多个mysql同步数据

#docker01
[root@VM-8-14-centos docker-test-volume]# docker run -it --name docker01 fanxu/centos:1.0
[root@ecef5dcc0fb7 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  volume01 volume02
[root@ecef5dcc0fb7 /]# cd volume01
[root@ecef5dcc0fb7 volume01]# touch docker01
[root@ecef5dcc0fb7 volume01]# ls
docker01#docker02
#--volumes-from 挂载到docker01   有些像java中的一个类继承另一个类
[root@VM-8-14-centos _data]# docker run -it --name docker02 --volumes-from docker01 fanxu/centos:1.0
[root@654c8a26b2da /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  volume01 volume02
[root@654c8a26b2da /]# cd volume01
[root@654c8a26b2da volume01]# ls
docker01#docker03
[root@VM-8-14-centos ~]# docker run -it --name docker03 --volumes-from docker01 fanxu/centos:1.0
[root@958350b8f730 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  volume01 volume02
[root@958350b8f730 /]# cd volume0
bash: cd: volume0: No such file or directory
[root@958350b8f730 /]# cd volume01
[root@958350b8f730 volume01]# ls
docker01
#从docker3中新建一个文件
[root@958350b8f730 volume01]# touch docker03
[root@958350b8f730 volume01]# ls
docker01  docker03#docker01
[root@ecef5dcc0fb7 volume01]# ls
docker01  docker03
#docker02
[root@654c8a26b2da volume01]# ls
docker01  docker03
#此时三个镜像都是互通的,如果docker01删掉了会发生什么?
[root@VM-8-14-centos docker-test-volume]# docker rm -f docker01
docker01
#docker02
[root@654c8a26b2da volume01]# ls
docker01  docker03
#docker03
[root@958350b8f730 volume01]# ls
docker01  docker03
#可见docker01即使挂掉了也不会影响到docker02和docker03,所以这些镜像相互之间的关系应该是拷贝、备份关系,而不是映射关系,一个挂掉了,不影响其他两个的使用。但是docker02和docker03都是挂载到docker01上的,docker01挂掉了,docker02和docker03还互通吗#docker02 创建一个文件
[root@654c8a26b2da volume01]# touch docker02
[root@654c8a26b2da volume01]# ls
docker01  docker02  docker03
#docker03 可以查询到,所以说,虽然docker02和docker03都是挂载到docker01上的,但是即使没有docker01,他们两个也是互通的
[root@958350b8f730 volume01]# ls
docker01  docker02  docker03

DockerFile

dockerfile是用来构建docker镜像的文件!命令参数脚本!

构建步骤:

  1. 编写一个dockerfile文件
  2. docker build构建成为一个镜像
  3. docker run运行镜像
  4. docker push发布景象(DockerHub、阿里云镜像库)

很多官方镜像都是基础包,很多功能都没有,我们通常会自己搭建自己的镜像!

Dockerfile构建过程

基础知识:

  1. 每个保留关键字(指令)都必须是大写字母
  2. 执行从上到下顺序执行
  3. #表示注释
  4. 每一个指令都会创建提交一个新的镜像层,并提交

dockerfile是面向开发的,发布项目,做镜像,就要编写dockerfile文件,这个文件十分简单!

docker镜像主键成为了企业交付的标准

DockerFile:构建文件,定义了一切的步骤,源代码

DockerImages:通过DockerFIle构建生成的镜像。最终发布和运行的产品

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

DockerFile的指令

FROM         # 基础镜像,一切从这里开始构建
MAINTAINER  # 镜像是谁写的 姓名+邮箱
RUN         #镜像构建的时候需要运行的命令
ADD         # 步骤:tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR     # 镜像的工作目录
VOLUME      # 挂载的目录
EXPOST      # 保留端口配置
RUN         # 运行
CMD         # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT  # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD     # 构建一个被集成DockerFile 这个时候就会运行ONBUILD的指令。
COPY        #类似ADD,将我们的文件拷贝到镜像中
ENV         #构建的时候设置环境变量!

实战测试

DockerHub中99%的镜像都是从这个基础镜像过来的FROM scratch,然后配置需要的软件和配置来进行构建的。

创建一个自己的centos

#编写Dockerfile的文件
[root@VM-8-14-centos FANXU]# vi myDockerFile
[root@VM-8-14-centos FANXU]# cat myDockerFile
FROM centos
MAINTAINER fanxu<yigemuyu@126.com>ENV MYPATH /user/local
WORKDIR $MYPATHRUN yum -y install vim
RUN yum -y install net-toolsEXPOSE 80CMD echo $MYPATH
CMD echo "-----end----"
CMD /bin/bash#2、通过这个文件构建镜像
[root@VM-8-14-centos FANXU]# docker build -f myDockerFile-centos -t mycentos:1.0 .
......
Successfully built d3b9ff75ac9f
Successfully tagged mycentos:1.0#测试运行
[root@VM-8-14-centos FANXU]# docker run -it --name mycentos01 mycentos:1.0
[root@d773e340d0da local]# ls
[root@d773e340d0da local]# pwd
/user/local
[root@d773e340d0da local]# vi helloDocker
[root@d773e340d0da local]# ls
helloDocker
[root@d773e340d0da local]# more helloDocker
hello docker

可以通过docker history查看构建历史

CMD 和 ENTRYPOINT 的区别

CMD      #指定这个容器启动时要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT  #指定这个容器启动的时候要运行的命令,可以追加命令

测试cmd

[root@VM-8-14-centos FANXU]# vim dockerfile-cmd-test
[root@VM-8-14-centos FANXU]# more dockerfile-cmd-test
FROM centos
CMD ["ls","-a"] #创建镜像
[root@VM-8-14-centos FANXU]# docker build -f dockerfile-cmd-test -t cmdtest .
Sending build context to Docker daemon  3.072kB
Step 1/2 : FROM centos---> 300e315adb2f
Step 2/2 : CMD ["ls","-a"]---> Running in 143a14f5839e
Removing intermediate container 143a14f5839e---> 05d86eab4ac9
Successfully built 05d86eab4ac9
Successfully tagged cmdtest:latest
#启动容器
[root@VM-8-14-centos FANXU]# docker run 05d86eab4ac9
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
......
var
#想要追加一个命令的时候
[root@VM-8-14-centos FANXU]# docker run 05d86eab4ac9 -l
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 不是命令所以保存![root@VM-8-14-centos FANXU]# docker run 05d86eab4ac9 ls -l
total 48
lrwxrwxrwx   1 root root    7 Nov  3  2020 bin -> usr/bin
drwxr-xr-x   5 root root  340 Aug 26 12:35 dev
drwxr-xr-x   1 root root 4096 Aug 26 12:35 etc
drwxr-xr-x   2 root root 4096 Nov  3  2020 home
#如果想要追加命令的话,那就要写全命令,替换掉ls -l

测试entrypoint

[root@VM-8-14-centos FANXU]# vim dockerfile-cmd-entrypoint
[root@VM-8-14-centos FANXU]# cat dockerfile-cmd-entrypoint
FROM centos
ENTRYPOINT ["ls","-a"]
#创建镜像
[root@VM-8-14-centos FANXU]# docker build -f dockerfile-cmd-entrypoint -t entrypoint-test .
Sending build context to Docker daemon  4.096kB
Step 1/2 : FROM centos---> 300e315adb2f
Step 2/2 : ENTRYPOINT ["ls","-a"]---> Running in a76b97795d71
Removing intermediate container a76b97795d71---> b32cc7f739ea
Successfully built b32cc7f739ea
Successfully tagged entrypoint-test:latest
#查看所有的镜像
[root@VM-8-14-centos FANXU]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED         SIZE
entrypoint-test   latest    b32cc7f739ea   6 seconds ago   209MB
cmdtest           latest    05d86eab4ac9   9 minutes ago   209MB
mycentos          1.0       d3b9ff75ac9f   23 hours ago    307MB
centos            latest    300e315adb2f   8 months ago    209MB
#运行测试
[root@VM-8-14-centos FANXU]# docker run b32cc7f739ea
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
#末尾追加命令测试
[root@VM-8-14-centos FANXU]# docker run b32cc7f739ea -l
total 56
drwxr-xr-x   1 root root 4096 Aug 26 12:38 .
drwxr-xr-x   1 root root 4096 Aug 26 12:38 ..
-rwxr-xr-x   1 root root    0 Aug 26 12:38 .dockerenv
lrwxrwxrwx   1 root root    7 Nov  3  2020 bin -> usr/bin
drwxr-xr-x   5 root root  340 Aug 26 12:38 dev
drwxr-xr-x   1 root root 4096 Aug 26 12:38 etc
drwxr-xr-x   2 root root 4096 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 4096 Dec  4  2020 lost+found
drwxr-xr-x   2 root root 4096 Nov  3  2020 media
drwxr-xr-x   2 root root 4096 Nov  3  2020 mnt
drwxr-xr-x   2 root root 4096 Nov  3  2020 opt
dr-xr-xr-x 112 root root    0 Aug 26 12:38 proc
dr-xr-x---   2 root root 4096 Dec  4  2020 root
drwxr-xr-x  11 root root 4096 Dec  4  2020 run
lrwxrwxrwx   1 root root    8 Nov  3  2020 sbin -> usr/sbin
drwxr-xr-x   2 root root 4096 Nov  3  2020 srv
dr-xr-xr-x  13 root root    0 Aug 26 12:35 sys
drwxrwxrwt   7 root root 4096 Dec  4  2020 tmp
drwxr-xr-x  12 root root 4096 Dec  4  2020 usr
drwxr-xr-x  20 root root 4096 Dec  4  2020 var

DocekrFile中很多命令都十分的相似,我们需要了解他们的区别,我们最好的学习就是对比他们然后测试效果。

制作Tomcat镜像

  1. 准备镜像文件 tomcat压缩包,jdk压缩包

  2. 编写dockerfile文件,官方命名为Dockerfile,build会自动寻找到这个文件,就不需要-f指定了

    FROM centos
    MAINTAINER kuangshen<yigemuyu@126.com>
    COPY readme.txt /usr/local/readme.text
    ADD jdk /usr/local
    ADD apache  /usr/localRUN yum -y install vim
    ENV MYPATH /usr/local
    WORK $MYPATH
    ENV JAVA_HOME /usr/local/jdk
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV CATALINA_HOME /usr/local/apache
    ENV CATALINA_BASH /usr/local/apache
    ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/binEXPOSE 8080CMD /usr/local/apache/bin/startup.sh && tail -F /url/local/apache-tomcat/bin/logs/catalina.out
    
  3. build镜像

    [root@VM-8-14-centos FANXU]# docker build -t diycentos .#---------------------------------------------------------------------------------
    #-------------------------------------构建开始-------------------------------------
    Sending build context to Docker daemon  156.7MB
    Step 1/15 : FROM centos---> 300e315adb2f
    Step 2/15 : MAINTAINER fanxu<yigemuyu@126.com>---> Using cache---> 6062a81ce4df
    Step 3/15 : COPY readme.txt /usr/local/readme.text---> b0a25b15918a
    Step 4/15 : ADD jdk-8u301-linux-i586.tar.gz  /usr/local---> 3e6245552fc9
    Step 5/15 : ADD apache-tomcat-9.0.52.tar.gz  /usr/local---> c2d0f3d546fd
    Step 6/15 : RUN yum -y install vim---> Running in b0f2fe6a815c
    CentOS Linux 8 - AppStream                      7.1 MB/s | 8.8 MB     00:01
    CentOS Linux 8 - BaseOS                         943 kB/s | 5.6 MB     00:06
    CentOS Linux 8 - Extras                         4.7 kB/s |  10 kB     00:02
    Dependencies resolved.
    ================================================================================Package             Arch        Version                   Repository      Size
    ================================================================================
    Installing:vim-enhanced        x86_64      2:8.0.1763-15.el8         appstream      1.4 M
    Installing dependencies:gpm-libs            x86_64      1.20.7-17.el8             appstream       39 kvim-common          x86_64      2:8.0.1763-15.el8         appstream      6.3 Mvim-filesystem      noarch      2:8.0.1763-15.el8         appstream       48 kwhich               x86_64      2.21-12.el8               baseos          49 kTransaction Summary
    ================================================================================
    Install  5 PackagesTotal download size: 7.8 M
    Installed size: 30 M
    Downloading Packages:
    (1/5): gpm-libs-1.20.7-17.el8.x86_64.rpm        1.2 MB/s |  39 kB     00:00
    (2/5): vim-filesystem-8.0.1763-15.el8.noarch.rp 4.3 MB/s |  48 kB     00:00
    (3/5): vim-enhanced-8.0.1763-15.el8.x86_64.rpm   13 MB/s | 1.4 MB     00:00
    (4/5): vim-common-8.0.1763-15.el8.x86_64.rpm     32 MB/s | 6.3 MB     00:00
    (5/5): which-2.21-12.el8.x86_64.rpm             316 kB/s |  49 kB     00:00
    --------------------------------------------------------------------------------
    Total                                           7.0 MB/s | 7.8 MB     00:01
    warning: /var/cache/dnf/appstream-02e86d1c976ab532/packages/gpm-libs-1.20.7-17.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
    CentOS Linux 8 - AppStream                      1.6 MB/s | 1.6 kB     00:00
    Importing GPG key 0x8483C65D:Userid     : "CentOS (CentOS Official Signing Key) <security@centos.org>"Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65DFrom       : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
    Key imported successfully
    Running transaction check
    Transaction check succeeded.
    Running transaction test
    Transaction test succeeded.
    Running transactionPreparing        :                                                        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/5 Installed: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.noarchwhich-2.21-12.el8.x86_64             Complete!
    Removing intermediate container b0f2fe6a815c---> 3d1a5ef54d79
    Step 7/15 : ENV MYPATH /usr/local---> Running in 7cbecb42b6c1
    Removing intermediate container 7cbecb42b6c1---> 77e94a84490f
    Step 8/15 : WORKDIR $MYPATH---> Running in 3c33cbac7cfd
    Removing intermediate container 3c33cbac7cfd---> a3f8c5bac7ac
    Step 9/15 : ENV JAVA_HOME /usr/local/jdk1.8.0_301---> Running in 90b21630b6bb
    Removing intermediate container 90b21630b6bb---> b39222cbe52d
    Step 10/15 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar---> Running in 5f2ce6a55156
    Removing intermediate container 5f2ce6a55156---> b30335948859
    Step 11/15 : ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.52---> Running in 9b42156c8eac
    Removing intermediate container 9b42156c8eac---> 0eed8ebf580d
    Step 12/15 : ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.52---> Running in c1ba72c469e4
    Removing intermediate container c1ba72c469e4---> 301ab465f2a1
    Step 13/15 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin---> Running in 48f0b57c3fc1
    Removing intermediate container 48f0b57c3fc1---> fc986905ef5c
    Step 14/15 : EXPOSE 8080---> Running in 1ca1a08d5aa6
    Removing intermediate container 1ca1a08d5aa6---> 46082ba771b8
    Step 15/15 : CMD /usr/local/apache-tomcat-9.0.52/bin/startup.sh && tail -F /url/local/apache-tomcat-9.0.52/bin/logs/catalina.out---> Running in 31c08120952d
    Removing intermediate container 31c08120952d---> 72b78ce3f86d
    Successfully built 72b78ce3f86d
    Successfully tagged diycentos:latest
    #-------------------------------------构建结束-------------------------------------
    #---------------------------------------------------------------------------------
    [root@VM-8-14-centos FANXU]# clear
    #查看镜像
    [root@VM-8-14-centos FANXU]# docker images
    REPOSITORY        TAG       IMAGE ID       CREATED              SIZE
    diycentos         latest    72b78ce3f86d   About a minute ago   645MB#笔者这里由于jdk版本出了问题就不继续测试了,正常情况下可以curl localhost:8080访问到,外网也可以
    bash: /usr/local/jdk1.8.0_301/bin/javac: No such file or directory
    

小结

Docker进阶学习(容器数据卷、安装Mysql、DockerFile )相关推荐

  1. 9、使用容器数据卷部署MySQL

    使用容器数据卷部署MySQL实现数据持久化 步骤: 1.下载MySQL镜像文件 #查看是否存在mysql镜像在docker hub上 docker search mysql [root@iZ2zee7 ...

  2. docker入门,镜像,容器,数据卷,dockerfile,docker网络,springboot微服务打包docker镜像[狂神yyds]

    docker学习大纲 docker概述 docker安装 docker命令 镜像命令 容器命令 操作命令 - docker镜像 容器数据卷 dockerfile docker网络原理 IDEA整合do ...

  3. 【Docker镜像原理容器数据卷】

    文章目录 Docker镜像原理-commit镜像 一.镜像讲解 二.docker镜像加载原理 UnionFS (联合文件系统): 三.docker镜像分层 四.commit镜像 总结: 容器数据卷 五 ...

  4. Docker镜像、容器数据卷和Dockerfile

    Docker镜像 概述 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. UnionFS ...

  5. SpringBoot 入坑(八)Docker 暴露端口 容器数据卷 基本使用

    Docker端口+数据卷 1).暴露端口 2).容器数据卷使用 1).暴露端口 1.在不暴露端口的情况下启动tomcat docker run -d --name mTM01 tomcat 通过宿主机 ...

  6. Docker(三) 使用容器数据卷实现数据持久化与容器数据共享

    一,什么是容器数据卷 出现背景:我们在运行的容器中所产生的数据都生成在容器中,如果容器后期被我们删除,那么在容器中的文件数据都将彻底丢失.为了获得容器中的数据,只能通过 docker cp 命令将容器 ...

  7. Docker 使用容器数据卷 实现宿主机与容器共享数据 容器数据持久化

    容器数据卷:可以实现宿主机与容器进行共享.容器数据持久化,容器与容器共享数据.可以在run镜像时使用-v参数指定宿主机与容器进行挂载的目录,也可以使用dockerfile的volume指定容器中容器数 ...

  8. Marco's Java【Docker入门(四) 之 Dockerfile容器数据卷详解】

    前言 咱们上节已经接触过Dockerfile并使用Dockerfile创建容器数据卷,但是Dockerfile的作用远远不止如此! 因此本节会更深入的了解Dockerfile以及它的诸多使用方式, & ...

  9. Docker入门知识|基本命令|数据卷|dockerfile|发布镜像|基本概念

    文章目录 Docker 一.概述 二.安装 基本安装 阿里云镜像加速 三.基本 1.镜像启动流程 2.工作原理 3.帮助命令 4.镜像命令 5.容器命令 6.其它常用命令 7.Portainer可视化 ...

  10. 容器数据卷,Docker安装Mysql5.7以及MySQL主从搭建过程

    容器数据卷 文章目录 容器数据卷 Docker安装Mysql5.7 MySQL主从搭建过程 容器卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,容器卷的设计目 ...

最新文章

  1. python Django 学习笔记
  2. 带你少走弯路:五篇文章学完吴恩达机器学习
  3. MyBatis-Plus 高级功能 —— 自动填充功能
  4. Fabric 代码发布
  5. ios uiview 如何刷新_ios-如何在Swift中刷新imageview而无需重新加载页面?
  6. 360极速浏览器连接远程notebook会出现问题,403 GET /api/kernels/
  7. mfc之DDX_Control作用
  8. bodymovin导出没有html5,AE脚本-导出json格式的Web动画工具 Bodymovin v5.7.1 + 使用教程...
  9. 用C语言求解各类求和问题
  10. WPS添加带背景颜色的文本框
  11. SSM-Mybatis的Mapper.xml配置文件
  12. 经典古诗词名句 mysql_经典古诗词名句摘抄50句
  13. Javascript中大于和小于
  14. 学以致用:C语言能干点儿啥?
  15. r语言做绘制精美pcoa图_R语言:Bary-Curtis PCoA
  16. 51nod 1278 相离的圆 (排序)
  17. 5-2基于贝叶斯算法的新闻分类任务实战
  18. 独眼龙夏侯惇为什么能两次打败巅峰时期的赵云,他到底有多厉害?
  19. CORBA协议相关的概念
  20. 大学毕业小总结以及感想

热门文章

  1. 博科交换机常用配置命令
  2. leadtools将pdf转tif
  3. 用Python实现一个简单的微信聊天机器人
  4. 关于光纤宽带技术,看这一篇就够啦!
  5. 少儿编程培训行业分析
  6. #第七章 基于太阳系数据的股市拟合数学模型的理论应用7.1倾斜的时空
  7. 软件工程课程课后大作业
  8. 微信小程序地图实现多个位置标记marker
  9. qt plugins 插件框架
  10. Jira和禅道哪个好