docker理念回顾
将应用和环境打包成一个镜像!
数据?如果数据都在容器中,那么我们容器删除,数据就会丢失!需求:数据可以持久化
MySQL,容器删了,删库跑路!需求:MySQL数据可以存储在本地!
容器之间可以有一个数据共享技术!Docker容器中产生的数据,同步到本地!
这就是卷技术,目录的挂载,将我们容器内的目录挂载到linux目录上面!
总结:容器的持久化和同步操作!容器间数据也是可以共享的!
方式一:直接使用命令来挂载 -v
docker run -it -v 主机目录:容器目录[root@iZ2zeg4ytp0whqtmxbsqiiZ home]# docker run -it -v /home/ceshi:/home centos /bin/bash
启动之后新开一个窗口,通过 docker inspect 容器id 查看具体挂载的内容
测试文件的同步(在主机上改动,观察容器变化)
再来测试
1.停止容器,然后在主机上修改文件
2.启动并进入容器,查看容器内数据,容器内的数据依旧是同步的!
好处:我们以后修改只需要在本地修改即可,容器内会自动同步!
思考:MySQL的数据持久化的问题!
# 获取镜像
[root@iZ2zeg4ytp0whqtmxbsqiiZ home]# docker pull mysql:5.7# 运行容器, 需要做数据挂载! # 安装启动mysql,需要配置密码(注意)
# 官方测试, docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag# 启动我们的
-d # 后台运行
-p # 端口隐射
-v # 卷挂载
-e # 环境配置
--name # 容器的名字
[root@iZ2zeg4ytp0whqtmxbsqiiZ home]# 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=000000 --name mysql01 mysql:5.7
4e380de478d6ce69e23c4253e03c2beb9482ac2c300be9a9bc6f499b94882c7e
[root@iZ8vbgi1zpv4do6camhur3Z home]# ls
ceshi kuangshen mysql redis www
[root@iZ8vbgi1zpv4do6camhur3Z home]# cd mysql
[root@iZ8vbgi1zpv4do6camhur3Z mysql]# ls
conf data
[root@iZ8vbgi1zpv4do6camhur3Z mysql]# cd data
[root@iZ8vbgi1zpv4do6camhur3Z data]# ls
auto.cnf ca.pem client-key.pem ibdata1 ib_logfile1 mysql private_key.pem server-cert.pem sys
ca-key.pem client-cert.pem ib_buffer_pool ib_logfile0 ibtmp1 performance_schema public_key.pem server-key.pem
问题:那我们将mysql容器删除,卷还在嘛?
[root@iZ8vbgi1zpv4do6camhur3Z home]# docker ps #查看正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4e380de478d6 mysql:5.7 "docker-entrypoint.s…" 40 minutes ago Up 40 minutes 33060/tcp, 0.0.0.0:3310->3306/tcp, :::3310->3306/tcp mysql01
[root@iZ8vbgi1zpv4do6camhur3Z home]# docker stop 4e380de478d6 #停止容器
4e380de478d6
[root@iZ8vbgi1zpv4do6camhur3Z home]# docker rm -f mysql01 #删除容器
mysql01
[root@iZ8vbgi1zpv4do6camhur3Z home]# docker ps -a #查看容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e6836cef1437 centos "/bin/bash" About an hour ago Exited (0) 56 minutes ago friendly_hugle
删除之后,去主机的data目录查看
[root@iZ8vbgi1zpv4do6camhur3Z home]# ls
ceshi kuangshen mysql redis www
[root@iZ8vbgi1zpv4do6camhur3Z home]# cd mysql
[root@iZ8vbgi1zpv4do6camhur3Z mysql]# ls
conf data
[root@iZ8vbgi1zpv4do6camhur3Z mysql]# cd data
[root@iZ8vbgi1zpv4do6camhur3Z data]# ls
auto.cnf ca.pem client-key.pem ibdata1 ib_logfile1 performance_schema public_key.pem server-key.pem test
ca-key.pem client-cert.pem ib_buffer_pool ib_logfile0 mysql private_key.pem server-cert.pem sys
发现,我们加载到本地的数据卷依旧没有丢失,这就实现了容器数据持久化功能!
匿名挂载
-v 容器内路径
docker run -d -P --name nginx01 -v /etc/nginx nginx # -P 随机指定端口# 查看所有volume(卷)的情况
[root@iZ2zeg4ytp0whqtmxbsqiiZ ~]# docker volume ls
DRIVER VOLUME NAME
local 561b81a03506f31d45ada3f9fb7bd8d7c9b5e0f826c877221a17e45d4c80e096
local 36083fb6ca083005094cbd49572a0bffeec6daadfbc5ce772909bb00be760882# 这里发现,这种情况就是匿名挂载,我们在-v 后面只写了容器内的路径,没有写容器外的路径!
具名挂载
[root@iZ2zeg4ytp0whqtmxbsqiiZ ~]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
26da1ec7d4994c76e80134d24d82403a254a4e1d84ec65d5f286000105c3da17
[root@iZ2zeg4ytp0whqtmxbsqiiZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26da1ec7d499 nginx "/docker-entrypoint.…" 3 seconds ago Up 2 seconds 0.0.0.0:32769->80/tcp nginx02
486de1da03cb nginx "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 0.0.0.0:32768->80/tcp nginx01
[root@iZ2zeg4ytp0whqtmxbsqiiZ ~]# docker volume ls
DRIVER VOLUME NAME
local 561b81a03506f31d45ada3f9fb7bd8d7c9b5e0f826c877221a17e45d4c80e096
local 36083fb6ca083005094cbd49572a0bffeec6daadfbc5ce772909bb00be760882
local juming-nginx# 通过-v 卷名:容器内的路径
# 查看一下这个卷
# docker volume inspect juming-nginx[root@iZ2zeg4ytp0whqtmxbsqiiZ ~]# docker volume inspect juming-nginx
[{"CreatedAt": "2020-08-12T18:15:21+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data","Name": "juming-nginx","Options": null,"Scope": "local"}
]
所有docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/xxxxx/_data
我们通过具名挂载可以方便的找到我们的一个卷,大多数情况下使用的是具名挂载
# 如何确定是具名挂载还是匿名挂载,还是指定路径挂载!
-v 容器内路径 # 匿名挂载
-v 卷名:容器内路径 # 具名挂载
-v /主机路径:容器内路径 # 指定路径挂载
拓展
默认的权限是rw
# 通过 -v 容器内容路径 ro rw 改变读写权限
ro readonly # 只读
rw readwrite # 可读可写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 只要看到ro就说明这个路径只能通过宿主机来操作,容器内容无法操作
DockerFile就是用来构建docker镜像的构建文件!命令脚本!
[root@iZ8vbgi1zpv4do6camhur3Z home]# mkdir docker-test-colume
[root@iZ8vbgi1zpv4do6camhur3Z home]# ls
ceshi docker-test-colume kuangshen mysql redis www
[root@iZ8vbgi1zpv4do6camhur3Z home]# cd docker-test-colume/
[root@iZ8vbgi1zpv4do6camhur3Z docker-test-colume]# clear
[root@iZ8vbgi1zpv4do6camhur3Z docker-test-colume]# pwd
/home/docker-test-colume
通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个个的命令,每个命令都是一层!
# 创建一个dockerfile文件
vim dockerfile1
# 文件的内容 指定(大写) 参数#按i进入编辑模式,输入
FROM centosVOLUME ["volume01", "volume02"]CMD echo "----end----"
CMD /bin/bash
#按esc,退出编辑模式
:wq
# 这里的每一个命令都是镜像的一层!
构建并查看镜像
[root@iZ8vbgi1zpv4do6camhur3Z docker-test-colume]# cat dockerfile1 #查看文件
FROM centosVOLUME ["volume01", "volume02"]CMD echo "----end----"
CMD /bin/bash
[root@iZ8vbgi1zpv4do6camhur3Z docker-test-colume]# docker build -f dockerfile1 -t shuangma/contos:1.0 . #构建
[+] Building 0.1s (5/5) FINISHED => [internal] load build definition from dockerfile1 0.0s=> => transferring dockerfile: 121B 0.0s=> [internal] load .dockerignore 0.0s=> => transferring context: 2B 0.0s=> [internal] load metadata for docker.io/library/centos:latest 0.0s=> [1/1] FROM docker.io/library/centos 0.0s=> exporting to image 0.0s=> => exporting layers 0.0s=> => writing image sha256:0282d836c4f5ab8268cf4ebcf33ca7109bd03217f82358c4fa764466139852f2 0.0s=> => naming to docker.io/shuangma/contos:1.0 0.0s
[root@iZ8vbgi1zpv4do6camhur3Z docker-test-colume]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 c20987f18b13 14 months ago 448MB
shuangma/contos 1.0 0282d836c4f5 17 months ago 231MB
centos latest 5d0da3dc9764 17 months ago 231MB
这个卷和外部一定有一个同步的目录!
[root@iZ8vbgi1zpv4do6camhur3Z docker-test-colume]# docker run -it 0282d836c4f5 /bin/bash
[root@d5ffb179942a /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume01 volume02
[root@d5ffb179942a /]# cd volume01
[root@d5ffb179942a volume01]# ls
[root@d5ffb179942a volume01]# touch container.txt
[root@d5ffb179942a volume01]# ls
container.txt
[root@iZ8vbgi1zpv4do6camhur3Z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d5ffb179942a 0282d836c4f5 "/bin/bash" 2 minutes ago Up 2 minutes infallible_villani
[root@iZ8vbgi1zpv4do6camhur3Z ~]# docker inspect d5ffb179942a
进入到匿名挂载卷里的文件是否同步
[root@iZ8vbgi1zpv4do6camhur3Z ~]# cd /var/lib/docker/volumes/f49d8938103d318672f59bf34cf7c840bb920cb20ceffc0ce263c971d0973e4f/_data
[root@iZ8vbgi1zpv4do6camhur3Z _data]# ls
container.txt
多个mysql同步数据!
启动3个容器,通过我们刚才自己写的镜像启动
[root@iZ8vbgi1zpv4do6camhur3Z home]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 c20987f18b13 14 months ago 448MB
centos latest 5d0da3dc9764 17 months ago 231MB
shuangma/contos 1.0 0282d836c4f5 17 months ago 231MB
[root@iZ8vbgi1zpv4do6camhur3Z home]# docker run -it --name docker01 0282d836c4f5
[root@2ce5e311bb81 /]# ls -l
[root@40980c48f0f4 /]# [root@iZ8vbgi1zpv4do6camhur3Z ~]# clear
[root@iZ8vbgi1zpv4do6camhur3Z ~]# docker run -it --name docker02 --volumes-from docker01 0282d836c4f5
[root@iZ8vbgi1zpv4do6camhur3Z /]# docker attach 40980c48f0f4
[root@40980c48f0f4 /]# cd volume01
[root@40980c48f0f4 volume01]# ls
[root@40980c48f0f4 volume01]# touch docker01
[root@40980c48f0f4 volume01]# ls
docker01
多个mysql实现数据共享
[root@iZ2zeg4ytp0whqtmxbsqiiZ home]# docker run -d -p 3344:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7[root@iZ2zeg4ytp0whqtmxbsqiiZ home]# docker run -d -p 3344:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql:5.7
结论
容器之间配置信息的传递, 数据卷容器的声明周期一直持续到没有容器使用为止。
但是一旦你持久化到了本地,这个时候,本地的数据是不会删除的!
dockerFile是用来构建docker镜像的文件!命令参数脚本!
构建步骤:
查看一下官方是怎么做的?
很多官方镜像都像是基础包,很多功能都不具备,我们通常会自己搭建自己的镜像!
官方既然可以制作镜像,那我们一样可以!
基础知识:
#
表示注释dockerFile是面向开发的, 我们以后要发布项目, 做镜像, 就需要编写dockefile文件, 这个文件十分简单!
Docker镜像逐渐成为企业的交互标准,必须要掌握!
步骤:开发,部署, 运维..... 缺一不可!
DockerFile:构建文件, 定义了一切的步骤,源代码
DockerImages:通过DockerFile构建生成的镜像, 最终发布和运行的产品!
Docker容器:容器就是镜像运行起来提供服务器
FROM # 基础镜像,一切从这里开始构建
MAINTAINER # 镜像是谁写的, 姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤, tomcat镜像, 这个tomcat压缩包!添加内容
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 声明端口配置
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令, 可以追加命令
ONBUILD # 当构建一个被继承DockerFile 这个时候就会运行 ONBUILD 的指令,触发指令
COPY # 类似ADD, 将我们文件拷贝到镜像中
ENV # 构建的时候设置环境变量!
[root@iZ8vbgi1zpv4do6camhur3Z home]# mkdir dockerfile
[root@iZ8vbgi1zpv4do6camhur3Z home]# cd dockerfile/
[root@iZ8vbgi1zpv4do6camhur3Z dockerfile]# vim mydockerfile-centos
[root@iZ8vbgi1zpv4do6camhur3Z dockerfile]# cat mydockerfile-centos
FROM centos:7
MAINTAINER shuangma<21212121212@qq.com>ENV MYPATH /usr/local
WORKDIR $MYPATHRUN yum -y install vim
RUN yum -y install net-toolsEXPOSE 80CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash
# 命令 docker build -f dockerfile文件路径 -t 镜像名:[tag] .
docker build -f mydockerfile-centos -t mycentos:0.1 .
查看镜像,使用原生centos的命令,使用自己镜像里下载的命令
[root@iZ8vbgi1zpv4do6camhur3Z dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos 0.1 7a745cbdcbc3 2 minutes ago 630MB
mysql 5.7 c20987f18b13 14 months ago 448MB
centos latest 5d0da3dc9764 17 months ago 231MB
shuangma/contos 1.0 0282d836c4f5 17 months ago 231MB
[root@iZ8vbgi1zpv4do6camhur3Z dockerfile]# docker run -it centos
[root@50ecddf32722 /]# pwd
/
[root@50ecddf32722 /]# vim
bash: vim: command not found
[root@50ecddf32722 /]# exit
exit
[root@iZ8vbgi1zpv4do6camhur3Z dockerfile]# docker run -it mycentos:0.1
[root@118b7117b6ea local]# pwd
/usr/local
[root@118b7117b6ea local]# ifconfig
eth0: flags=4163 mtu 1500inet 172.18.0.3 netmask 255.255.0.0 broadcast 172.18.255.255ether 02:42:ac:12:00:03 txqueuelen 0 (Ethernet)RX packets 8 bytes 656 (656.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73 mtu 65536inet 127.0.0.1 netmask 255.0.0.0loop txqueuelen 1000 (Local Loopback)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[root@118b7117b6ea local]# vim test
[root@118b7117b6ea local]# cat test
1
docker history 容器id
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效 可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令, 可以追加命令
测试CMD
[root@iZ8vbgi1zpv4do6camhur3Z dockerfile]# vim dockerfile-cmd-test
[root@iZ8vbgi1zpv4do6camhur3Z dockerfile]# cat dockerfile-cmd-test
FROM centos:7
CMD ["ls","-a"]
[root@iZ8vbgi1zpv4do6camhur3Z dockerfile]# docker build -f dockerfile-cmd-test -t cmdtest .
[root@iZ8vbgi1zpv4do6camhur3Z dockerfile]# docker run d53776618e7ca21294bf0d76a1042fa5976f2b0992727c1122ede2900cd8ba93
[root@iZ8vbgi1zpv4do6camhur3Z dockerfile]# docker run d53776618e7ca21294bf0d76a1042fa5976f2b0992727c1122ede2900cd8ba93 -l
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "-l": executable file not found in $PATH: unknown.
测试ENTRYPOINT
[root@iZ8vbgi1zpv4do6camhur3Z dockerfile]# vim dockerfile-cmd-entrypoint
[root@iZ8vbgi1zpv4do6camhur3Z dockerfile]# cat dockerfile-cmd-entrypoint
FROM centos:7
ENTRYPOINT ["ls","-a"]
[root@iZ8vbgi1zpv4do6camhur3Z dockerfile]# docker build -f dockerfile-cmd-entrypoint -t entrypoint-test .
这里我直接xftp工具了,因为之前在学习linux的时候下载过tomcat和jdk的包,直接复制一份到一个新文件夹中
Dockerfile
, build会自动寻找这个文件,就不需要-f指定了![root@iZ8vbgi1zpv4do6camhur3Z tomcat]# touch readme.txt
[root@iZ8vbgi1zpv4do6camhur3Z tomcat]# vim Dockerfile
[root@iZ8vbgi1zpv4do6camhur3Z tomcat]# cat Dockerfile
FROM centos:7
MAINTAINER shuangma<4042@qq.com>COPY readme.txt /usr/local/readme.txtADD jdk-8u361-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.69.tar.gz /usr/local/RUN yum -y install vimENV MYPATH /usr/local
WORKDIR $MYPATHENV JAVA_HOME /usr/local/jdk1.8.0_361
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.69
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.69
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/binEXPOSE 8080CMD /usr/local/apache-tomcat-9.0.69/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.69/bin/logs/catalina.out
docker build -t diytomcat .
docker run -d -p 3344:8080 --name shuangmatomcat1 -v /home/kuangshen/build/tomcat/test:/usr/local/apache-tomcat-9.0.69/webapps/test -v /home/kuangshen/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.69/logs diytomcat
curl localhost:3344
6.发布项目(由于做了卷挂载, 我们直接在本地编写项目就可以发布了)
[root@iZ8vbgi1zpv4do6camhur3Z test]# mkdir WEB-INF
[root@iZ8vbgi1zpv4do6camhur3Z test]# ls
WEB-INF
[root@iZ8vbgi1zpv4do6camhur3Z test]# cd WEB-INF/
[root@iZ8vbgi1zpv4do6camhur3Z WEB-INF]# vim web.xml
[root@iZ8vbgi1zpv4do6camhur3Z WEB-INF]# cat web.xml
[root@iZ8vbgi1zpv4do6camhur3Z WEB-INF]# cd ..
[root@iZ8vbgi1zpv4do6camhur3Z test]# vim index.jsp
[root@iZ8vbgi1zpv4do6camhur3Z test]# cat index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
hello. xiaofan
Hello World!
<%
System.out.println("-----my test web logs------");
%>
发现:项目部署成功, 可以直接访问ok!
我们以后开发的步骤:需要掌握Dockerfile的编写! 我们之后的一切都是使用docker进行来发布运行的!
[root@iZ8vbgi1zpv4do6camhur3Z test]# cd ..
[root@iZ8vbgi1zpv4do6camhur3Z tomcat]# ls
apache-tomcat-9.0.69.tar.gz Dockerfile jdk-8u361-linux-x64.tar.gz readme.txt test tomcatlogs
[root@iZ8vbgi1zpv4do6camhur3Z tomcat]# cd tomcatlogs/
[root@iZ8vbgi1zpv4do6camhur3Z tomcatlogs]# ll
total 24
-rw-r----- 1 root root 6707 Mar 7 19:33 catalina.2023-03-07.log
-rw-r----- 1 root root 6763 Mar 7 19:39 catalina.out
-rw-r----- 1 root root 0 Mar 7 19:18 host-manager.2023-03-07.log
-rw-r----- 1 root root 408 Mar 7 19:18 localhost.2023-03-07.log
-rw-r----- 1 root root 1217 Mar 7 19:39 localhost_access_log.2023-03-07.txt
-rw-r----- 1 root root 0 Mar 7 19:18 manager.2023-03-07.log
[root@iZ8vbgi1zpv4do6camhur3Z tomcatlogs]# cat catalina.out
docker hub 地址:https://hub.docker.com/
[root@iZ8vbgi1zpv4do6camhur3Z tomcat]# docker login --helpUsage: docker login [OPTIONS] [SERVER]Log in to a registry.
If no server is specified, the default is defined by the daemon.Options:-p, --password string Password--password-stdin Take the password from stdin-u, --username string Username
[root@iZ8vbgi1zpv4do6camhur3Z tomcat]# docker login -u shuangma
Password:
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-storeLogin Succeeded
4.在我们的服务器上提交自己的镜像
[root@iZ8vbgi1zpv4do6camhur3Z tomcat]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
diytomcat latest 78d382d52e5a 57 minutes ago 815MB
mycentos 0.1 7a745cbdcbc3 3 hours ago 630MB
mysql 5.7 c20987f18b13 14 months ago 448MB
cmdtest latest d53776618e7c 17 months ago 204MB
entrypoint-test latest dbcf4f99ed1c 17 months ago 204MB
centos latest 5d0da3dc9764 17 months ago 231MB
shuangma/contos 1.0 0282d836c4f5 17 months ago 231MB
[root@iZ8vbgi1zpv4do6camhur3Z tomcat]# docker tag 78d382d52e5a shuangma/diytomcat:1.0
[root@iZ8vbgi1zpv4do6camhur3Z tomcat]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
diytomcat latest 78d382d52e5a 57 minutes ago 815MB
shuangma/diytomcat 1.0 78d382d52e5a 57 minutes ago 815MB
mycentos 0.1 7a745cbdcbc3 3 hours ago 630MB
mysql 5.7 c20987f18b13 14 months ago 448MB
cmdtest latest d53776618e7c 17 months ago 204MB
entrypoint-test latest dbcf4f99ed1c 17 months ago 204MB
centos latest 5d0da3dc9764 17 months ago 231MB
shuangma/contos 1.0 0282d836c4f5 17 months ago 231MB
[root@iZ8vbgi1zpv4do6camhur3Z tomcat]# docker push shuangma/diytomcat:1.0
提交也是按照镜像的层级进行提交的
[root@iZ8vbgi1zpv4do6camhur3Z tomcat]# docker login --username=jsm18678940958 registry.cn-zhangjiakou.aliyuncs.com
Password:
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-storeLogin Succeeded
[root@iZ8vbgi1zpv4do6camhur3Z tomcat]# docker tag 78d382d52e5a shuangma/diytomcat:1.0
[root@iZ8vbgi1zpv4do6camhur3Z tomcat]# docker push shuangma/diytomcat:1.0