Docker开始--Dockerfile
环境准备
#系统内核版本3.10以上
[root@localhost /]# uname -r
3.10.0-1062.el7.x86_64
#系统版本
[root@localhost /]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
[root@localhost /]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
安装
帮助文档:
需要的安装包#删除旧版本的Docker
[root@localhost /]# yum remove docker \
> docker-client \
> docker-client-latest \
> docker-common \
> docker-latest \
> docker-latest-logrotate \
> docker-logrotate \
> docker-engine
Loaded plugins: fastestmirror
No Match for argument: docker
No Match for argument: docker-client
No Match for argument: docker-client-latest
No Match for argument: docker-common
No Match for argument: docker-latest
No Match for argument: docker-latest-logrotate
No Match for argument: docker-logrotate
No Match for argument: docker-engine
No Packages marked for removal
#备注: /var/lib/docker/ 下面的 容器,镜像,网络,磁盘卷 会被保留
#需要的安装包
yum -y install yum-utils
#设置镜像仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo #默认是国外的
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #建议使用阿里云的镜像地址
#更新yum软件包索引
yum makecache fast
#安装docker docker-ce:社区版 ee企业版
yum -y install docekr-ce docker-ce-cli containerd.io
yum -y install docker-ce docker-ce-cli containerd.io
#启动docker 启动报错查看是否下载完包
systemctl start docker
docker version
#测试hello world-world
docker run hello-world
注意:报错的话需要配置 阿里云镜像加速器。
#阿里云加速器配置
[root@localhost docker]# cd /etc/docker/
[root@localhost docker]# touch daemon.json
[root@localhost docker]# cat daemon.json
{
"registry-mirrors":["https://alzgoonw.mirror.aliyuncs.com"]
}
[root@localhost docker]# systemctl restart docker
了解:卸载docker
#卸载 依赖
yum -y remove docekr-ce docker-ce-cli containerd.io
# 删除资源
rm -rf /var/lib/docker docker默认工作目录
Docker常用命令
docker version # 查看docker版本信息
docker info #显示docker系统信息
docker()--help #帮助信息
查看帮助文档:
镜像命令
docker images 查看所有本地的主机上的镜像
[root@dockerYa ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest 9a9ad4f631f8 4 weeks ago 647MB
nginx latest 8cf1bfb43ff5 5 weeks ago 132MB
docker search 搜索镜像信息
docker search mysql --filter=STARS=3000
[root@dockerYa ~]# docker search mysql --filter=STARS=3000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 9911 [OK]
mariadb MariaDB is a community-developed fork of MyS… 3627 [OK]
docker pull:下载镜像
#下载镜像 docker pull 镜像名[:tag]
[root@dockerYa ~]# docker pull mysql
docker rmi 删除镜像
docker rmi -f 镜像ID docker rmi -f `(docker images -aq)` #删除所有镜像
容器命令
说明:有了镜像才有容器。
新建容器并启动
docker run [可选参数] image #参数说明 --name=“name” 容器名字 Tomcat01 Tomcat02 用来区分容器 -d 后来方式运行 -it 使用交互式方式运行,进入容器查看内容 -p 指定容器的端口 -p 8080:8090 -p ip:主机端口:容器端口 -p 主机端口:容器端口(常用) -p 容器端口 -p 随机指定端口 docker run -it centos /bin/bash
列出当前运行的容器
# docker ps 命令 -a 列出当正在运行的容器+历史停用的容器 -n=? 显示最近创建的容器 -q 只显示容器的编号
退出容器
exit 退出并停止容器 CTRL + P + Q 容器不停止退出
删除容器
docker rm 容器ID 不能删除正在运行的容器 强制删除:rm -f docker rm -f `docker ps -aq` 删除所有容器
启动和停止容器
docker start 启动容器 docker restart 重启容器 docker stop 停止容器 docker kill 强制停止容器
常用的其他命令
后台启动容器
#命令 docker run -d centos
查看日志命令
docker logs -f -t --tail N [容器id] -tf 显示全部 --tail number 显示N条日志 # docker run -d centos /bin/bash -c "while true;do echo kobe kobe;sleep 1;done" docker ps docker logs -f -t --tail 10 [容器id]
查看容器中进程信息
# 命令 docekr top 容器ID
查看镜像源数据
# 命令 docker inspect 容器ID
进入当前正在运行的容器
# 命令 docker exec -it 容器ID /bin/bash 进入容器后 开启一个新的终端(常用) # docker attach 容器ID 进入正在执行的终端,不启动新的终端
容器内拷贝文件到主机
# docker cp 容器ID:/home/a.txt /home 拷贝是手动过程 后期 -v 容器卷
图命令
可视化
-
portainer (先用这个)
docker run -d -p 8080:9000 \ --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
-
Rancher(CI/CD再用)
什么是portainer?
Docker图形化界面管理工具!提供一个后台面板。
部署ES+kibana
# es 暴露端口很多 # es 十分耗内存 # es 的数据一般需要放置到安全目录! 挂载 # -- net somenetwork ? 网络配置 # 启动 elasticsearch docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2 # 启动了 会卡 docker stats 查看 cpu 状态 # 测试一下 es 是否成功 [root@dockerYa ~]# curl localhost:9200 { "name" : "ee4a10ac7225", "cluster_name" : "docker-cluster", "cluster_uuid" : "EUVYW1eHTk6Q0WoMT6v1Tg", "version" : { "number" : "7.6.2", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "build_snapshot" : false, "lucene_version" : "8.4.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" } # 赶紧关闭 增加内存的限制 docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
commit镜像(入门)
docker commit 提交容器成为一个新的副本 #命令和Git原理类似 docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]
#启动一个默认的Tomcat #发现这个默认的tomcat没有webapps应用, #自己拷贝进去了基本文件
容器数据卷
什么是容器数据卷
docker的理念
将应用和环境打包为一个镜像!
数据持久化,容器删除、数据就会丢失。(跑路?)
数据可以存储到本地,容器之间有一个数据共享技术,docker容器产生的数据,同步到本地!目录挂载、将容器的目录挂载在Linux上面。
容器的持久化和同步操作、容器间也是可以数据共享
方式一:直接使用命令挂载 -v
docker run -it -v 主机目录:容器内目录
测试!
以后修改就可以在本地修改即可。
具名挂载和匿名挂载
#匿名挂载 -v 容器内路径 docker run -d -p --name nginx01 -v /etc/nginx nginx #查看所有卷的情况 docker volume ls #这里发现,这种就是匿名挂载,我们在-v的时候 只写了容器内的路径,没有写容器外的路径。 #具名挂载 -v 卷名:容器内路径 docker run -d -p --name nginx02 -vjuming-nginx:/etc/nginx nginx #docker volume ls #查看卷路径 docker volume inspect juming0-nginx 具名gauzei可以方便的找到我们的卷,大多数使用具名挂载。 #指定路径挂载 -v /宿主机路径:容器内路径 #通过 -v 容器内路径 :ro rw 改变读写权限 ro readonly 只读 (只能通过宿主机来操作) rw readwrite 可读可写
初识Dockerfile
Dockerfile 就是用来构建docker镜像的构建文件!命令脚本!
通过脚本生成镜像,
#创建一个dockerfile文件、名称随机、建议dockerfile #文件中的内容 指令(大写) 参数 FROM centos VOLUME ["volume01","volume02"] CMD echo "----end----" CMD /bin/bash #这里的每个命令,就是镜像的一层! [root@dockerYa docker-test-volume]# docker build -f dockerfile01 -t mycentos:1.0 . Sending build context to Docker daemon 2.048kB Step 1/4 : FROM centos ---> 0d120b6ccaa8 Step 2/4 : VOLUME ["volume01","volume02"] ---> Using cache ---> f3c819fc7493 Step 3/4 : CMD echo "----end----" ---> Using cache ---> b0707582f94c Step 4/4 : CMD /bin/bash ---> Using cache ---> efb34e151925 Successfully built efb34e151925 Successfully tagged mycentos:1.0 [root@dockerYa docker-test-volume]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mycentos 1.0 54f49660f5bf 2 seconds ago 215MB redis latest 41de2cc0b30e 6 days ago 104MB nginx latest 4bb46517cac3 3 weeks ago 133MB centos latest 0d120b6ccaa8 4 weeks ago 215MB elasticsearch 7.6.2 f29a1ee41030 5 months ago 791MB #启动自己的容器 [root@dockerYa docker-test-volume]# docker run -it 54f49660f5bf /bin/bash [root@ee7d7712b1a4 /]# ls -l (查看挂载卷) total 0 lrwxrwxrwx. 1 root root 7 May 11 2019 bin -> usr/bin drwxr-xr-x. 5 root root 360 Sep 8 07:16 dev drwxr-xr-x. 1 root root 66 Sep 8 07:16 etc drwxr-xr-x. 2 root root 6 May 11 2019 home drwxr-xr-x. 2 root root 6 Sep 8 07:16 volume01 drwxr-xr-x. 2 root root 6 Sep 8 07:16 volume02 [root@dockerYa ~]# docker inspect ffdd27bce00d "Mounts": [ { "Type": "volume", "Name": "4998d9966ae9fdd7d4c8760dcec9b5faa79d93f324e0476b38cff1e6a82f35c6", "Source": "/var/lib/docker/volumes/4998d9966ae9fdd7d4c8760dcec9b5faa79d93f324e0476b38cff1e6a82f35c6/_data", "Destination": "volume02", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" }, { "Type": "volume", "Name": "f91989da2f2b1d6b595bd368643fc2cbe3b2b8fd199aacebd83e15006a0cdea2", "Source": "/var/lib/docker/volumes/f91989da2f2b1d6b595bd368643fc2cbe3b2b8fd199aacebd83e15006a0cdea2/_data", "Destination": "volume01", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } [root@dockerYa ~]# cd /var/lib/docker/volumes/f91989da2f2b1d6b595bd368643fc2cbe3b2b8fd199aacebd83e15006a0cdea2/_data [root@dockerYa _data]# ls container.txt **文件测试成功!** #这种方式使用十分多,会经常构建自己的镜像! 假设构建镜像时候没有挂载卷,需要手动挂载 -v 卷名:容器内路径
数据卷容器
两(多)个mysql同步数据!
#启动3个容器 docker run -it --name docker01 mycentos:1.0 #02数据卷挂载到01 docker run -it --name docker02 --volumes-from docker01 mycentos:1.0 #实现两个容器数据同步
结论:
容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使为止。
但是一旦数据持久化到本地,这个时候本地的数据是不会删除的!
Dockerfile
dockerfile介绍:
dockerfile是用来构建docker镜像的文件!命令参数脚本!
构建步骤:
-
编写一个dockerfile文件
-
docker build 构建成为一个镜像
-
docker run 运行镜像
-
docker push 发布镜像(DockerHub、阿里云镜像仓库)
官方镜像:
Dockerfile构建过程
基础知识:
-
每个保留的关键字(指令)必须是大写字母
-
执行从上到下顺序执行
-
(#)表示注释
-
每一个指令都会创建提交一个镜像层,并提交!
dockerfile是面向开发的,我们以后要发布项目,作镜像,就要编写dockerfile。
Docker镜像逐渐成为企业交付的标准,必须掌握!
步骤:开发、部署、运维。。。
dockerfile:构建文件,定义了一切的步骤,源代码
docker images: 通过dockerfile构建生成镜像,最终发布和运行的产品
docker容器:容器就是镜像运行起来提供服务器
dockerfile的指令
常用指令:
FROM #基础镜像 centos 。。
MAINTAINER #镜像是谁写的,姓名—邮箱
RUN #镜像构建的时候需要运行的命令
ADD #步骤:Tomcat镜像,这个tomcat压缩包。添加内容
WORKDIR #镜像的工作目录
VOLUME #挂载的目录
EXPOST #保留的端口配置
CMD #指定这个容器启动的时候需要运行的命令,只有最后一个命令会生效,可被替代。
ENRYPOINT #指定这个容器启动的时候需要运行的命令,可以追加命令
ONBUILD # 当构建一个被继承的dockerfile 这个时候就会运行onbuild指令,触发指令。
COPY #类似ADD,将文件拷贝到镜像中
ENV #构建时设置环环境变量。
测试:
创建一个自己的Centos
# 1:编写dockerfile的文件
[root@docker-angent_1 dockerfile]# cat mydockerfile-centos
FROM centos
MAINTAINER kobeqiang1278190430@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
# 2:通过文件构建镜像
#命令 docker build -f dockerfile文件路径 -t 镜像名:[Tag]
Successfully built c20beded6e33
Successfully tagged mycentos:1.0
# 3:测试运行、对比:
#默认的:
[root@38731bc19fe3 /]# pwd
/
[root@38731bc19fe3 /]# ifconfig
bash: ifconfig: command not found
[root@38731bc19fe3 /]# vim
bash: vim: command not found
[root@38731bc19fe3 /]#
#增加后的:
[root@docker-angent_1 dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos 1.0 c20beded6e33 2 minutes ago 295MB
mysql 5.7 d589ea3123e0 3 days ago 448MB
centos 7 7e6257c9f8d8 4 weeks ago 203MB
centos latest 0d120b6ccaa8 4 weeks ago 215MB
[root@docker-angent_1 dockerfile]# docker run -it mycentos:1.0
[root@a7c875f9deb0 local]# pwd
/usr/local
[root@a7c875f9deb0 local]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.3 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:03 txqueuelen 0 (Ethernet)
RX packets 8 bytes 656 (656.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@a7c875f9deb0 local]# vim test
我们可以列出当前镜像变更的历史:
[root@docker-angent_1 dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos 1.0 c20beded6e33 9 minutes ago 295MB
mysql 5.7 d589ea3123e0 3 days ago 448MB
centos 7 7e6257c9f8d8 4 weeks ago 203MB
centos latest 0d120b6ccaa8 4 weeks ago 215MB
[root@docker-angent_1 dockerfile]# docker history c20beded6e33
IMAGE CREATED CREATED BY SIZE COMMENT
c20beded6e33 9 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/bin… 0B
8742ea6daf2b 9 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B
6948ab4a68df 9 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B
82af7c7bae1a 9 minutes ago /bin/sh -c #(nop) EXPOSE 80 0B
0bf010f9501d 9 minutes ago /bin/sh -c yum -y install net-tools 22.8MB
a9b24b62f637 9 minutes ago /bin/sh -c yum -y install vim 57.2MB
35577f90fe90 9 minutes ago /bin/sh -c #(nop) WORKDIR /usr/local 0B
d38edae96079 9 minutes ago /bin/sh -c #(nop) ENV MYPATH=/usr/local 0B
bfea141b46e4 9 minutes ago /bin/sh -c #(nop) MAINTAINER kobeqiang12781… 0B
0d120b6ccaa8 4 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 4 weeks ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
<missing> 4 weeks ago /bin/sh -c #(nop) ADD file:538afc0c5c964ce0d… 215MB
CMD和ENTRYPOINT的区别
CMD #指定这个容器启动的时候需要运行的命令,只有最后一个命令会生效,可被替代。
ENRYPOINT #指定这个容器启动的时候需要运行的命令,可以追加命令
测试cmd
# 编写dockerfile文件
[root@docker-angent_1 dockerfile]# cat dockerfile-CMD
FROM centos
CMD ["ls","-a"]
#构建镜像:
[root@docker-angent_1 dockerfile]# docker build -f dockerfile-CMD -t cmdtest .
Successfully built 2b765e586e71
Successfully tagged cmdtest:latest
#run 运行 发现ls -a 命令生效
[root@docker-angent_1 dockerfile]# docker run cmdtest
.
..
.dockerenv
bin
dev
etc
home
lib
#想追加一个命令 -l、发现报错、而ls -al 则成功。
#CMD 情况下 -l替换了CMD["ls","-a"]命令
[root@docker-angent_1 dockerfile]# docker run cmdtest -l
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"-l\": executable file not found in $PATH": unknown.
[root@docker-angent_1 dockerfile]# docker run cmdtest ls -al
total 0
drwxr-xr-x. 1 root root 6 Sep 8 13:46 .
drwxr-xr-x. 1 root root 6 Sep 8 13:46 ..
-rwxr-xr-x. 1 root root 0 Sep 8 13:46 .dockerenv
lrwxrwxrwx. 1 root root 7 May 11 2019 bin -> usr/bin
测试 ENTRYPOINT
[root@docker-angent_1 dockerfile]# docker build -f dockerfile-entrypoint -t entry-test .
Sending build context to Docker daemon 4.096kB
Step 1/2 : FROM centos
---> 0d120b6ccaa8
Step 2/2 : ENTRYPOINT ["ls","-a"]
---> Running in 338ed757f0c3
Removing intermediate container 338ed757f0c3
---> 97f41a603ec6
Successfully built 97f41a603ec6
Successfully tagged entry-test:latest
[root@docker-angent_1 dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
entry-test latest 97f41a603ec6 37 seconds ago 215MB
cmdtest latest 2b765e586e71 11 minutes ago 215MB
[root@docker-angent_1 dockerfile]# docker run entry-test
dev
etc
home
[root@docker-angent_1 dockerfile]# docker run entry-test -l
total 0
drwxr-xr-x. 1 root root 6 Sep 8 13:52 .
drwxr-xr-x. 1 root root 6 Sep 8 13:52 ..
# 发现ENTRYPOINT命令 可以追加-l
实战:tomcat镜像
-
准备镜像文件Tomcat压缩包、jdk的压缩包
[root@localhost tomcat]# pwd
/home/tomcat
[root@localhost tomcat]# ll
total 150712
-rw-r--r--. 1 root root 11211292 Sep 9 15:03 apache-tomcat-9.0.37.tar.gz
-rw-r--r--. 1 root root 143111803 Sep 9 15:26 jdk-8u261-linux-x64.tar.gz -
编写dockerfile文件,官方命名Dockerfile,build 会自动寻找这个文件,就不需要-f指定了。
FROM centos
MAINTAINER kobeqinag<>
COPY readme.txt /usr/local/readme.txt
ADD jdk-8u261-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_261
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/ca
talina.out -
构建镜像
#构建镜像
[root@localhost tomcat]# docker build -t mytomcat .
[root@localhost tomcat]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat latest c2e2336760d0 7 minutes ago 640MB
centos latest 0d120b6ccaa8 4 weeks ago 215MB
hello-world latest bf756fb1ae65 8 months ago 13.3kB
#启动镜像、访问测试、
[root@localhost tomcat]# docker run -d -p 9090:8080 --name dirtomcat -v /home/tomcat/test:/usr/local/apache-tomcat-9.0.37/webapps/test -v /home/tomcat/tomcatlogs:/usr/local/apache-tomcat-9.0.37/logs mytomcat
[root@localhost ~]# curl localhost:9090
<!DOCTYPE html>
<html lang="en">
发布项目(做了卷挂载、本地操作)
[root@localhost test]# pwd
/home/tomcat/test
[root@localhost test]# ls
index.jsp WEB-INF
[root@localhost test]# cd WEB-INF/
[root@localhost WEB-INF]# ls
web.xml
#web.xml
[root@localhost WEB-INF]# cat web.xml
[root@localhost test]# pwd
/home/tomcat/test
[root@localhost test]# ls (注意index.jsp 与 web.xml文件的位置)
index.jsp WEB-INF
[root@localhost test]# cat index.jsp
<%
项目发布成功可以直接访问
发布自己的镜像
DockerHub
-
注册DockerHub账户https://hub.docker.com
-
确定这个账户可以登录
-
在自己的服务器上提交自己的镜像
[root@localhost test]# docker login --help
Usage: docker login [OPTIONS] [SERVER]
Log in to a Docker 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@localhost test]# docker login -u kobeqiang
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-store
Login Succeeded -
登录完毕后就可以提交镜像了、docker push
[root@localhost tomcat]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat 1.1 c2e2336760d0 58 minutes ago 640MB
mytomcat latest c2e2336760d0 58 minutes ago 640MB
centos latest 0d120b6ccaa8 4 weeks ago 215MB
#push报错、
[root@localhost tomcat]# docker push kobeqiang/mytomcat:1.1
The push refers to repository [docker.io/kobeqiang/mytomcat]
An image does not exist locally with the tag: kobeqiang/mytomcat
#解决、增加一个Tag
[root@localhost tomcat]# docker tag c2e2336760d0 kobeqiang/tomcat:1.0
[root@localhost tomcat]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat latest c2e2336760d0 About an hour ago 640MB
kobeqiang/tomcat 1.0 c2e2336760d0 About an hour ago 640MB
#docker push 上去成功!注意:自己发布的镜像要带上版本号
[root@localhost tomcat]# docker push kobeqiang/tomcat:1.0
The push refers to repository [docker.io/kobeqiang/tomcat]
22890905b57c: Pushed
fc6c3a9a742b: Pushed
2fea3826ffdc: Pushed
8be62079cae0: Pushed
291f6e44771a: Mounted from library/centos
1.0: digest: sha256:a76aaae4afc72ece0853c60bb5a8d78fee1060b341a8308c547fbb62017f3dec size: 1373
#提交的时候也是按照镜像一层一层提交的。
#退出:
[root@localhost tomcat]# docker logout
Removing login credentials for https://index.docker.io/v1/发布到阿里云镜像服务上
-
登录阿里云
-
找到容器镜像服务
-
创建命名空间
-
创建容器镜像
-
查看信息
-
根据阿里云文档进行操作、
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kobeqiang/tomcat 1.0 c2e2336760d0 2 hours ago 640MB
mytomcat 1.1 c2e2336760d0 2 hours ago 640MB
mytomcat latest c2e2336760d0 2 hours ago 640MB
[root@localhost ~]# docker tag c2e2336760d0 registry.cn-beijing.aliyuncs.com/kobeqiang/kobeqiang-test:1.0
[root@localhost ~]# docker push registry.cn-beijing.aliyuncs.com/kobeqiang/kobeqiang-test:1.0
The push refers to repository [registry.cn-beijing.aliyuncs.com/kobeqiang/kobeqiang-test]
22890905b57c: Pushed
fc6c3a9a742b: Pushed
2fea3826ffdc: Pushed
8be62079cae0: Pushed
291f6e44771a: Pushed
1.0: digest: sha256:a76aaae4afc72ece0853c60bb5a8d78fee1060b341a8308c547fbb62017f3dec size: 1373
-
push阿里云成功!
-
小结: