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
# 如果删除容器,数据会被删除吗?
# 数据共享,只要还有一个容器在,数据就不会消失。
# 互相拷贝的概念(类似于病毒的感染,只有所有包含数据的容器删除,才能完全删除数据)
构建步骤
- 编写dockerfile文件
- docker build 创建镜像
- docker run 运行镜像
- 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