Docker 笔记

Docker笔记

联合文件系统

Union File System, 简称UnionFS,是一种为Linux,FreeBSD,和NetBSD操作系统设计的把其他文件系统联合挂载到一个挂载点的文件系统服务。

它通过使用branch把不同文件系统的文件和目录覆盖,形成一个一致的文件系统。这些branch是只读或者只写的。当对文件进行写操作时候,才会真正的复制文件进行写操作。实际上本身没有对原来的文件进行修改,可以看做是共享了原来的文件。在写的时候进行修改用到了一种资源管理技术成为写时复制。

写时复制(copy-on write,CoW),也叫作隐式共享,如果一个资源是重复的,那我们没有必要去在拷贝一份。只需要将唯一的一份共享给不同的对象。当某一个对象需要去修改这个资源时,再去重新复制一份对新复制的进行修改。通过资源共享,可以减少未修改资源复制带来的消耗。在mapbit的垃圾回收算法中也会用到。

https://www.linuxidc.com/Linux/2018-11/155319.htm

AUFS

提交镜像

以Tomcat为例

docker commmit -m="提交的描述信息" -a="作者" 容器id

下载tomcat

docker pull tomcat:9 # 下载tomcat9

docker run -d --name 

docker start 容器名/容器id

docker ps

docker exec -it + 容器id # 进入tomcat终端

# 官方tomcat的webapps文件夹下没有

cp 命令进行复制

容器数据卷

数据不应该在容器中,容器删除,数据就会消失。需求:数据持久化

容器内的目录,挂载到虚拟机或者linux上,同步到本地,容器间也可以数据共享。

其实是持久化和同步操作。

方式一

直接使用命令挂载 -v

docker run -it -v 主机目录:容器目录 # 两个目录进行关联

docker inspect +容器id # mounts中是挂载信息
mysql 镜像存储问题

安装mysql

docker search mysql 
docker pull mysql:5.7
# -v 数据卷挂载 -e 环境配置 --name 名字配置 -d 后台运行 -p 绑定端口号
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7 


运行时做数据挂载

使用数据卷

docker run -it -v # 指定目录挂载

具名挂载和匿名挂载

# 匿名挂载
-v 容器内路径 
docker run -d -p --name nginx01 -v /etc/nginx/ nginx

#查看数据卷
docker volume ls

#具名挂载 jjj是挂载名 如果加/就是指定位置挂载
docker run -d -p --name nginx02 -v jjj:/etc/nginx/ nginx

#/var/lib/docker/volumes 挂载位置

# ro rw 改变读写权限 readonly readwrite
docker run -d -p --name nginx1 -v jjj:/etc/nginx:ro nginx

docker run -d -p --name nginx1 -v jjj:/etc/nginx:rw nginx

DockerFile

Dockerfile 就是用来构建docker镜像的构建文件

方式二

# 通过这个脚本可以生成镜像,
#dockerfile1内容
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "-------end--------"
CMD /bin/bash

# dockerfile中cmd和run的区别
# cmd是在run时执行,run是在build时执行
docker build -f dockerfile1 -t gyh/centos .

数据卷容器

多个mysql文件同步,

# 多个容器之间实现容器共享
--volumes -from 

# 第一个镜像
[root@VM_0_10_centos ~]# docker run -it --name gyh01 gyh/centos
[root@69174b7be136 /]# docker images
bash: docker: command not found
[root@69174b7be136 /]# ls     
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  volume01  volume02
[root@69174b7be136 /]# exit    
exit

[root@VM_0_10_centos ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
dd3224b8a3e9        gyh/centos          "/bin/sh -c /bin/bash"   About a minute ago   Up 32 seconds                           gyh02
69174b7be136        gyh/centos          "/bin/sh -c /bin/bash"   4 minutes ago        Up About a minute                       gyh01
[root@VM_0_10_centos ~]# docker attach 69174b7be136
[root@69174b7be136 /]# cd volume01
[root@69174b7be136 volume01]# touch docker01
[root@69174b7be136 volume01]# ls
docker01
[root@69174b7be136 volume01]# 

[root@VM_0_10_centos ~]# docker run -it --name gyh02 --volumes-from gyh01 gyh/centos

[root@113b5fc8fe3b /]# cd volume01
[root@113b5fc8fe3b volume01]# ls
docker01

# 如果删除容器,数据会被删除吗?
# 数据共享,只要还有一个容器在,数据就不会消失。
# 互相拷贝的概念(类似于病毒的感染,只有所有包含数据的容器删除,才能完全删除数据)

构建步骤

  1. 编写dockerfile文件
  2. docker build 创建镜像
  3. docker run 运行镜像
  4. docker push 发布镜像(Docker Hub 或者 阿里云镜像仓库)
# dockerfile的命令

FROM # 基础镜像信息

MAINTAINER # 维护者信息

RUN COPY ADD EXPOSE WORKDIR ONBUILD USER VOLUME # 镜像操作命令

CMD ENTRYPOINT 容器启动时执行指令

DockerFile命令详解

1. ARG
# ARG 是唯一一个可以用于FROM之前的指令
ARG CODE_VERSION=latest
2. FROM
# FROM 设置基础镜像,DockerFile文件必须以FROM指令开头。
# 指定的镜像可以使用任何有效的镜像

# 1.可以通过FROM指令中添加AS名称来指定一个名称给后续阶段的
# FROM和COPY --from=<name|index>使用。

# 2.tag和digest是可选的,如果不提供则使用latest

# FROM <image> [AS <name>]
# FROM <image> [:<tag>] [AS <name>]
# FROM <image> [@<digest>] [AS <name>]
FROM base:${CODE_VERSION}

3. RUN
# 在镜像的构建过程中执行特定的命令,并生成一个中间镜像,配置一些基础环境
# 可使用\换行

RUN <command>(shell格式)
RUN ["executable" , "param1" , "param2"](exec格式)

# executable 是 命令
# param 是 参数
# 采用exec格式指令将会被解析成json格式,所以不能用但应好,
# 并且使用反斜杠也是必须要转移的
4. CMD
# 指定容器运行时的默认参数

CMD ["executable" , "param1" , "param2"](exec格式,首选)
CMD ["param1" , "param2"](给ENTRYPOINT提供默认参数)
CMD command param1 param2 (shell格式)

# RUN是在构建的时候执行,生成一个新的镜像
# CMD在构建时不进行任何操作,在容器运行的时候执行
# 如果CMD用于为ENTRYPOINT指令提供缺省参数,那么CMD和ENTRYPOINT指令都应该使用JSON数组格式
# CMD 可被替换 ENTRYPOINT 追加 
5. LABEL

# LABEL给构建的镜像打标签
LABEL "com.example.vendor"="1"
LABEL com.example.vendor="1"
LABEL description="换行 \ 换行"
6. ENV
# 在构建镜像中设置环境变量,在后续的DockerFile指令中可以直接使用,
# 也可以固化在镜像里,在容器运行时仍然有效

ENV myName guo yuhang
7. ADD
# 构建镜像时,复制上下文中的文件到镜像内
ADD <src> ··· <dest> 
# src是文件夹、目录、URL
# src可以是docker可识别的压缩包,docker以tar -x 解压到<desct>(绝对路径)
8. COPY
# 将主机的文件复制到镜像中,如果目的位置不存在,
# Docker会自动创建所有需要的目录结构,但是它只是单纯的复制,
# 并不会去做文件提取和解压的工作。

COPY <src>···<dest>
COPY ["<src>" , ··· , "<dest>"]
9. VOLUME
# 指定镜像内的目录为数据卷

VOLUME ["/data"]

# 在容器运行的时候,docker会把镜像中的数据卷的内容复制到容器的数据卷中去
# 如果在接下来的DockerFile指令中,修改了数据卷中的内容,则修改无效。
10. WORKDIR
11. EXPOSE
# 暴露端口
EXPOSE <port>

实战测试

FROM centos
MAINTAINER guoyuhang<1242140285@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


# 操作
docker build -f dockerfile文件名 -t 镜像名:版本号 .


[root@VM_0_10_centos docker-test]# docker build -f mycentos -t mycentos1:1.0 .
Sending build context to Docker daemon  3.072kB
Error response from daemon: Dockerfile parse error line 6: unknown instruction: RUM
[root@VM_0_10_centos docker-test]# vim mycentos 
[root@VM_0_10_centos docker-test]# docker build -f mycentos -t mycentos1:1.0 .
Sending build context to Docker daemon  3.072kB
Step 1/10 : FROM centos
 ---> 831691599b88
Step 2/10 : MAINTAINER guoyuhang<1242140285@qq.com>
 ---> Running in 8f94d7659302
Removing intermediate container 8f94d7659302
 ---> fb03dabf8f8b
Step 3/10 : ENV MYPATH /usr/local
 ---> Running in 66f98e9e2d14
Removing intermediate container 66f98e9e2d14
 ---> 6044262a9d4f
Step 4/10 : WORKDIR $MYPATH
 ---> Running in 514798435ced
Removing intermediate container 514798435ced
 ---> 8248dea0e72f
Step 5/10 : RUN yum -y install vim
 ---> Running in 7d16f13c49f3
CentOS-8 - AppStream                            3.4 MB/s | 5.8 MB     00:01    
CentOS-8 - Base                                 2.3 MB/s | 2.2 MB     00:00    
CentOS-8 - Extras                                11 kB/s | 7.0 kB     00:00    
Dependencies resolved.
================================================================================
 Package             Arch        Version                   Repository      Size
================================================================================
Installing:
 vim-enhanced        x86_64      2:8.0.1763-13.el8         AppStream      1.4 M
Installing dependencies:
 gpm-libs            x86_64      1.20.7-15.el8             AppStream       39 k
 vim-common          x86_64      2:8.0.1763-13.el8         AppStream      6.3 M
 vim-filesystem      noarch      2:8.0.1763-13.el8         AppStream       48 k
 which               x86_64      2.21-12.el8               BaseOS          49 k

Transaction Summary
================================================================================
Install  5 Packages

Total download size: 7.8 M
Installed size: 31 M
Downloading Packages:
(1/5): gpm-libs-1.20.7-15.el8.x86_64.rpm        281 kB/s |  39 kB     00:00    
(2/5): vim-filesystem-8.0.1763-13.el8.noarch.rp 703 kB/s |  48 kB     00:00    
(3/5): which-2.21-12.el8.x86_64.rpm             1.4 MB/s |  49 kB     00:00    
(4/5): vim-enhanced-8.0.1763-13.el8.x86_64.rpm  5.0 MB/s | 1.4 MB     00:00    
(5/5): vim-common-8.0.1763-13.el8.x86_64.rpm     11 MB/s | 6.3 MB     00:00    
--------------------------------------------------------------------------------
Total                                           2.8 MB/s | 7.8 MB     00:02     
warning: /var/cache/dnf/AppStream-02e86d1c976ab532/packages/gpm-libs-1.20.7-15.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS-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 C65D
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : which-2.21-12.el8.x86_64                               1/5 
  Installing       : vim-filesystem-2:8.0.1763-13.el8.noarch                2/5 
  Installing       : vim-common-2:8.0.1763-13.el8.x86_64                    3/5 
  Installing       : gpm-libs-1.20.7-15.el8.x86_64                          4/5 
  Running scriptlet: gpm-libs-1.20.7-15.el8.x86_64                          4/5 
  Installing       : vim-enhanced-2:8.0.1763-13.el8.x86_64                  5/5 
  Running scriptlet: vim-enhanced-2:8.0.1763-13.el8.x86_64                  5/5 
  Running scriptlet: vim-common-2:8.0.1763-13.el8.x86_64                    5/5 
  Verifying        : gpm-libs-1.20.7-15.el8.x86_64                          1/5 
  Verifying        : vim-common-2:8.0.1763-13.el8.x86_64                    2/5 
  Verifying        : vim-enhanced-2:8.0.1763-13.el8.x86_64                  3/5 
  Verifying        : vim-filesystem-2:8.0.1763-13.el8.noarch                4/5 
  Verifying        : which-2.21-12.el8.x86_64                               5/5 

Installed:
  gpm-libs-1.20.7-15.el8.x86_64         vim-common-2:8.0.1763-13.el8.x86_64    
  vim-enhanced-2:8.0.1763-13.el8.x86_64 vim-filesystem-2:8.0.1763-13.el8.noarch
  which-2.21-12.el8.x86_64             

Complete!
Removing intermediate container 7d16f13c49f3
 ---> 94feac19f63c
Step 6/10 : RUN yum -y install net-tools
 ---> Running in 699d573c5c6b
Last metadata expiration check: 0:00:12 ago on Tue Jul 28 08:33:17 2020.
Dependencies resolved.
================================================================================
 Package         Architecture Version                        Repository    Size
================================================================================
Installing:
 net-tools       x86_64       2.0-0.51.20160912git.el8       BaseOS       323 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 323 k
Installed size: 1.0 M
Downloading Packages:
net-tools-2.0-0.51.20160912git.el8.x86_64.rpm   4.3 MB/s | 323 kB     00:00    
--------------------------------------------------------------------------------
Total                                           206 kB/s | 323 kB     00:01     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : net-tools-2.0-0.51.20160912git.el8.x86_64              1/1 
  Running scriptlet: net-tools-2.0-0.51.20160912git.el8.x86_64              1/1 
  Verifying        : net-tools-2.0-0.51.20160912git.el8.x86_64              1/1 

Installed:
  net-tools-2.0-0.51.20160912git.el8.x86_64                                     

Complete!
Removing intermediate container 699d573c5c6b
 ---> 4750d9ec7a81
Step 7/10 : EXPOSE 80
 ---> Running in 67f76fedba0c
Removing intermediate container 67f76fedba0c
 ---> f78e28b60782
Step 8/10 : CMD echo $MYPATH
 ---> Running in 6b0b61165f57
Removing intermediate container 6b0b61165f57
 ---> 05f661984a99
Step 9/10 : CMD echo "---end---"
 ---> Running in ca89365df1d5
Removing intermediate container ca89365df1d5
 ---> 2ad81af770cb
Step 10/10 : CMD /bin/bash
 ---> Running in 5ef893657208
Removing intermediate container 5ef893657208
 ---> 599d608eb264
Successfully built 599d608eb264
Successfully tagged mycentos1:1.0
[root@VM_0_10_centos docker-test]# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
mycentos1                1.0                 599d608eb264        4 minutes ago       295MB
gyh/centos               latest              8c60ea09b3fb        4 days ago          215MB
mysql                    5.7                 8679ced16d20        5 days ago          448MB
nginx                    latest              0901fa9da894        2 weeks ago         132MB
centos                   latest              831691599b88        5 weeks ago         215MB
portainer/portainer      latest              cd645f5a4769        8 weeks ago         79.1MB
wurstmeister/kafka       latest              f1905dce9659        2 months ago        431MB
hello-world              latest              bf756fb1ae65        6 months ago        13.3kB
wurstmeister/zookeeper   latest              3f43f72cb283        18 months ago       510MB

# 镜像的历史信息

[root@VM_0_10_centos docker-test]# docker history 599d608eb264
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
599d608eb264        15 minutes ago      /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "/bin…   0B                  
2ad81af770cb        15 minutes ago      /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B                  
05f661984a99        15 minutes ago      /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B                  
f78e28b60782        15 minutes ago      /bin/sh -c #(nop)  EXPOSE 80                    0B                  
4750d9ec7a81        15 minutes ago      /bin/sh -c yum -y install net-tools             22.7MB              
94feac19f63c        15 minutes ago      /bin/sh -c yum -y install vim                   57.2MB              
8248dea0e72f        16 minutes ago      /bin/sh -c #(nop) WORKDIR /usr/local            0B                  
6044262a9d4f        16 minutes ago      /bin/sh -c #(nop)  ENV MYPATH=/usr/local        0B                  
fb03dabf8f8b        16 minutes ago      /bin/sh -c #(nop)  MAINTAINER guoyuhang<1242…   0B                  
831691599b88        5 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B                  
<missing>           5 weeks ago         /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B                  
<missing>           5 weeks ago         /bin/sh -c #(nop) ADD file:84700c11fcc969ac0…   215MB

制作tomcat镜像

通过 tomcat 和 jdk 压缩包制作tomcat镜像

  • 准备镜像文件,两个压缩包
  • 编写dockerfile文件
FROM centos
MAINTAINER guoyuhang<1242140285@qq.com>

COPY readme.txt /usr/local/

ADD jdk-8u251-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.37.tar.gz /usr/local/

RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_251
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.37
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.37
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

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


# 创建镜像 docker默认的镜像名是Dockerfile,所以会根据这个名字来查找dockerfile的文件,也就是我们可以不用指定文件名

[root@VM_0_10_centos tomcat]# docker build -t diytomcat .
Sending build context to Docker daemon  206.3MB
Step 1/15 : FROM centos
 ---> 831691599b88
Step 2/15 : MAINTAINER guoyuhang<1242140285@qq.com>
 ---> Using cache
 ---> fb03dabf8f8b
Step 3/15 : COPY readme.txt /usr/local/
 ---> Using cache
 ---> f7ab0fa69dba
Step 4/15 : ADD jdk-8u251-linux-x64.tar.gz /usr/local/
 ---> 9e0ba387e7a0
Step 5/15 : ADD apache-tomcat-9.0.37.tar.gz /usr/local/
 ---> 53d2195725e9
Step 6/15 : RUN yum -y install vim
 ---> Running in be3e61777768
CentOS-8 - AppStream                            6.4 MB/s | 5.8 MB     00:00    
CentOS-8 - Base                                 2.1 MB/s | 2.2 MB     00:01    
CentOS-8 - Extras                               5.0 kB/s | 7.0 kB     00:01    
Dependencies resolved.
================================================================================
 Package             Arch        Version                   Repository      Size
================================================================================
Installing:
 vim-enhanced        x86_64      2:8.0.1763-13.el8         AppStream      1.4 M
Installing dependencies:
 gpm-libs            x86_64      1.20.7-15.el8             AppStream       39 k
 vim-common          x86_64      2:8.0.1763-13.el8         AppStream      6.3 M
 vim-filesystem      noarch      2:8.0.1763-13.el8         AppStream       48 k
 which               x86_64      2.21-12.el8               BaseOS          49 k

Transaction Summary
================================================================================
Install  5 Packages

Total download size: 7.8 M
Installed size: 31 M
Downloading Packages:
(1/5): gpm-libs-1.20.7-15.el8.x86_64.rpm        899 kB/s |  39 kB     00:00    
(2/5): vim-filesystem-8.0.1763-13.el8.noarch.rp 1.6 MB/s |  48 kB     00:00    
(3/5): vim-enhanced-8.0.1763-13.el8.x86_64.rpm   15 MB/s | 1.4 MB     00:00    
(4/5): which-2.21-12.el8.x86_64.rpm             1.2 MB/s |  49 kB     00:00    
(5/5): vim-common-8.0.1763-13.el8.x86_64.rpm    8.7 MB/s | 6.3 MB     00:00    
--------------------------------------------------------------------------------
Total                                           4.6 MB/s | 7.8 MB     00:01     
warning: /var/cache/dnf/AppStream-02e86d1c976ab532/packages/gpm-libs-1.20.7-15.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS-8 - AppStream                            1.4 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 C65D
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : which-2.21-12.el8.x86_64                               1/5 
  Installing       : vim-filesystem-2:8.0.1763-13.el8.noarch                2/5 
  Installing       : vim-common-2:8.0.1763-13.el8.x86_64                    3/5 
  Installing       : gpm-libs-1.20.7-15.el8.x86_64                          4/5 
  Running scriptlet: gpm-libs-1.20.7-15.el8.x86_64                          4/5 
  Installing       : vim-enhanced-2:8.0.1763-13.el8.x86_64                  5/5 
  Running scriptlet: vim-enhanced-2:8.0.1763-13.el8.x86_64                  5/5 
  Running scriptlet: vim-common-2:8.0.1763-13.el8.x86_64                    5/5 
  Verifying        : gpm-libs-1.20.7-15.el8.x86_64                          1/5 
  Verifying        : vim-common-2:8.0.1763-13.el8.x86_64                    2/5 
  Verifying        : vim-enhanced-2:8.0.1763-13.el8.x86_64                  3/5 
  Verifying        : vim-filesystem-2:8.0.1763-13.el8.noarch                4/5 
  Verifying        : which-2.21-12.el8.x86_64                               5/5 

Installed:
  gpm-libs-1.20.7-15.el8.x86_64         vim-common-2:8.0.1763-13.el8.x86_64    
  vim-enhanced-2:8.0.1763-13.el8.x86_64 vim-filesystem-2:8.0.1763-13.el8.noarch
  which-2.21-12.el8.x86_64             

Complete!
Removing intermediate container be3e61777768
 ---> 41ccba18863a
Step 7/15 : ENV MYPATH /usr/local
 ---> Running in 06c27f73f97f
Removing intermediate container 06c27f73f97f
 ---> a29994c99772
Step 8/15 : WORKDIR $MYPATH
 ---> Running in cc8b74860d82
Removing intermediate container cc8b74860d82
 ---> c49ed5b9bffa
Step 9/15 : ENV JAVA_HOME /usr/local/jdk1.8.0_251
 ---> Running in be5fc4659fc8
Removing intermediate container be5fc4659fc8
 ---> a392cf866841
Step 10/15 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 ---> Running in 6c39356f1f89
Removing intermediate container 6c39356f1f89
 ---> 004d3c8c13a9
Step 11/15 : ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.37
 ---> Running in 93218e3e8edc
Removing intermediate container 93218e3e8edc
 ---> 535d3e5f7132
Step 12/15 : ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.37
 ---> Running in b1aa6b5a97a8
Removing intermediate container b1aa6b5a97a8
 ---> b627317f8d7b
Step 13/15 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
 ---> Running in 315a68cb75a1
Removing intermediate container 315a68cb75a1
 ---> 0e42a6edbdbf
Step 14/15 : EXPOSE 8080
 ---> Running in 30a11a003a12
Removing intermediate container 30a11a003a12
 ---> 96e5cdfa3ae2
Step 15/15 : CMD /usr/local/apache-tomcat-9.0.37/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.37/bin/logs/catalina.out
 ---> Running in b5ff9e494bb3
Removing intermediate container b5ff9e494bb3
 ---> cb307d7bbf94
Successfully built cb307d7bbf94
Successfully tagged diytomcat:latest
[root@VM_0_10_centos tomcat]# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
diytomcat                latest              cb307d7bbf94        19 seconds ago      694MB
mycentos1                1.0                 599d608eb264        2 hours ago         295MB
gyh/centos               latest              8c60ea09b3fb        4 days ago          215MB
mysql                    5.7                 8679ced16d20        5 days ago          448MB
nginx                    latest              0901fa9da894        2 weeks ago         132MB
centos                   latest              831691599b88        5 weeks ago         215MB
portainer/portainer      latest              cd645f5a4769        8 weeks ago         79.1MB
wurstmeister/kafka       latest              f1905dce9659        2 months ago        431MB
hello-world              latest              bf756fb1ae65        6 months ago        13.3kB
wurstmeister/zookeeper   latest              3f43f72cb283        18 months ago       510MB


# 可以看见diytomcat -- 镜像制作完成,下面开始启动


# docker 启动
 docker run -d -p 9090:8080 --name diytomcat1 -v /usr/local/src/tomcat/diytomcat1/test:/usr/local/apache-tomcat-9.0.37/webapps/test -v /usr/local/src/tomcat/diytomcat1/logs:/usr/local/apache-tomcat-9.0.37/logs

[root@b154c048c55b apache-tomcat-9.0.37]# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  temp  webapps  work

# test文件夹下新建index.jsp WEB-INF 和 WEB-INF/web.xml

[root@b154c048c55b WEB-INF]# cat web.xml 
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                            http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">
</web-app>

[root@b154c048c55b test]# cat index.jsp 
<!DOCTYPE html>
<html>
<head><title>Hello World</title></head>
<body>
Hello World!
</body>
</html>

发布镜像

# 注册账号
# 确定账号可以登录
# 在服务器上提交自己的镜像
[root@VM_0_10_centos ~]# docker login -u 用户名 -p 密码
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

[root@VM_0_10_centos ~]# docker push diytomcat
The push refers to repository [docker.io/library/diytomcat]
782d4355a9b6: Preparing 
f72c88363e53: Preparing 
ddbddd62c338: Preparing 
ac98f83e76d3: Preparing 
eb29745b8228: Preparing 
denied: requested access to the resource is denied
# 尝试失败


# 更改版本号 keydous 是用户名 / diytomcat是镜像名
[root@VM_0_10_centos ~]# docker tag cb307d7bbf94 keydous/diytomcat:1.0

# push
[root@VM_0_10_centos ~]# docker push keydous/diytomcat:1.0
The push refers to repository [docker.io/keydous/diytomcat]
782d4355a9b6: Pushing [======>                                            ]  7.061MB/57.18MB
f72c88363e53: Pushing [===========>                                       ]   3.71MB/15.63MB
ddbddd62c338: Pushing [>                                                  ]  2.188MB/405.8MB
ac98f83e76d3: Pushed 
eb29745b8228: Pushing [>                                                  ]  3.281MB/215.3MB

企业实战

DockersCompose

Docker Swarm

CI/CD jenkins 流水线

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值