Docker 的常用命令
本文是参照这篇文章测试整理的docker的常用的命令:
docker基础环境搭可以参照我整理的另一篇博客:
docker的介绍与安装
文章目录
1. 帮助命令
卸载Docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
设置Docker镜像仓库地址
# 默认是国外的
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
安装最新版Docker Engine和容器
yum makecache fast
重新安装docker
systemctl start docker
查看docker版本
docker version
显示docker的系统信息(包括镜像和容器数量)
docker info
帮助命令
docker 命令 --help
启动Docker
systemctl start docker
重启Docker
sudo systemctl restart docker
查看docker的状态
systemctl status docker
2.镜像命令
查看所有镜像
# 查看本地主机所有的镜像
docker images
搜索镜像
# 搜索镜像
docker search 镜像名
例如:
docker search mysql
下载镜像
# 下载镜像
docker pull 镜像名[:tag]
例如:docker pull mysql
指定版本下载:
docker pull mysql:5.7
删除镜像
# 删除镜像
docker rmi
docker rmi -f 镜像id 删除指定镜像
docker rmi -f 镜像id 镜像id 镜像id 删除指定多个镜像
docker rmi -f $(docker images -aq) 删除全部镜像
3. 容器命令
有了镜像才能够创建容器,这里下载一个centos镜像为以下测试做准备
[root@zmz1 local]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
新建容器并启动
# 新建容器并启动
docker run [可选参数] image
# 参数说明
--name="Name" 容器名字,用于区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器端口(小写)
-p ip:主机端口:容器端口
-p 主机端口:容器端口(最常用)
-P 容器端口
容器端口
-P 随机执行端口(大写)
测试:
#测试,启动进入容器
[root@zmz1 local]# docker run -it centos /bin/bash
#查看容器内的centos,基础版本,很多命令不完善
[root@dbc7d5866d12 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
#退出容器到主机
[root@dbc7d5866d12 /]# exit
exit
[root@zmz1 local]# ls
apache-maven-3.6.1 bin docker etc games include java jdk1.8 lib lib64 libexec maven mwget nginx sbin share src
列出所有运行的容器
# 列出所有运行的容器
docker ps [可选参数]
# 参数说明
-a 列出当前正在运行以及历史运行过的容器
-n=? 显示最近创建的容器
-q 只显示容器编号
# 列出所有运行的容器
[root@zmz1 local]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#列出当前正在运行以及历史运行过的容器
[root@zmz1 local]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dbc7d5866d12 centos "/bin/bash" 5 minutes ago Exited (0) 3 minutes ago angry_wescoff
1f13b44a2064 hello-world "/hello" 28 hours ago Exited (0) 28 hours ago wonderful_lovelace
#显示最近创建的一个容器
[root@zmz1 local]# docker ps -n=1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dbc7d5866d12 centos "/bin/bash" 6 minutes ago Exited (0) 4 minutes ago angry_wescoff
#列出当前正在运行以及历史运行过的容器的编号
[root@zmz1 local]# docker ps -aq
dbc7d5866d12
1f13b44a2064
退出容器
# 容器停止并退出
exit
# 容器不停止退出
Ctrl+p+q
删除容器
# 删除指定容器,不能删除正在运行的容器,强制删除用rm -f
docker rm 容器id
# 删除所有容器
docker rm -f $(docker ps -aq)
docker ps -a -q|xargs docker rm
测试
[root@zmz1 local]# docker ps -aq
67b082929661
dbc7d5866d12
1f13b44a2064
[root@zmz1 local]# docker rm dbc7d5866d12
dbc7d5866d12
[root@zmz1 local]# docker ps -aq
67b082929661
1f13b44a2064
# 删除所有容器
[root@zmz1 local]# docker rm -f $(docker ps -aq)
67b082929661
1f13b44a2064
[root@zmz1 local]# docker ps -aq
启动停止容器
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止正在运行的容器
docker kill 容器id # 强制停止当前容器
4. 常用其他命令
后台启动容器
# 后台启动容器
docker run -d 容器名
[root@zmz1 local]# docker run -d centos
c75e85a1a3ac4d40eb0cf92e55d22f55d7a96c98bf50040dbe7139bd7b7a38d3
# 列出所有运行的容器
[root@zmz1 local]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#列出当前正在运行以及历史运行过的容器
[root@zmz1 local]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c75e85a1a3ac centos "/bin/bash" About a minute ago Exited (0) About a minute ago upbeat_robinson
- 问题:后台启动容器,再用 docker ps 查看发现容器停止
- 原因:docker 容器使用后台运行,就必须有一个前台进程;如果仅仅后台启动,没有应用来提供服务,就会自动停止
查看日志
docker logs [可选参数] 容器ID
--details 显示提供给日志的其他详细信息
-f, --follow 跟踪日志输出
-n, --tail string 指定要显示的日志条数 (默认为全部)
-t, --timestamps 显示时间戳
测试:
# 后台启动容器,同时执行脚本不停打印zmz
docker run -d centos /bin/bash -c "while true;do echo zmz;sleep 1;done"
# 查看运行的容器,此时可以查看到
[root@zmz1 local]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
85177fca0a5d centos "/bin/bash -c 'while…" 40 seconds ago Up 39 seconds agitated_bhaskara
# 查看日志信息,显示时间戳,指定显示10条日志
[root@zmz1 local]# docker logs -t -n 10 85177fca0a5d
2022-09-03T14:32:34.934799784Z zmz
2022-09-03T14:32:35.938803519Z zmz
2022-09-03T14:32:36.942326422Z zmz
2022-09-03T14:32:37.946554106Z zmz
2022-09-03T14:32:38.948932303Z zmz
2022-09-03T14:32:39.951238592Z zmz
2022-09-03T14:32:40.953027055Z zmz
2022-09-03T14:32:41.955809564Z zmz
2022-09-03T14:32:42.959478601Z zmz
2022-09-03T14:32:43.963805836Z zmz
查看容器中的进程
# 查看容器中的进程
docker top 容器ID
测试:
[root@zmz1 local]# docker top 85177fca0a5d
UID PID PPID C STIME TTY TIME CMD
root 4698 4678 0 22:30 ? 00:00:00 /bin/bash -c while true;do echo zmz;sleep 1;done
root 4997 4698 0 22:34 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
查看镜像元数据
# 查看镜像元数据
docker inspect 容器ID
测试:
docker inspect 85177fca0a5d
进入当前正在运行的容器
容器通常都是使用后台方式运行的,这时候可能需要进入容器,修改一些配置
# 方式一: 进入容器后开启一个新的终端,可在里面进行操作(常用)
docker exec -it 容器id /bin/bash
# 方式二: 进入容器正在执行的终端,不会启动新的进程
docker attach 容器ID
# 测试方式一
[root@zmz1 local]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
85177fca0a5d centos "/bin/bash -c 'while…" 9 minutes ago Up 9 minutes agitated_bhaskara
[root@zmz1 local]# docker exec -it 85177fca0a5d /bin/bash
[root@85177fca0a5d /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
# 测试方式二
[root@zmz1 local]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
85177fca0a5d centos "/bin/bash -c 'while…" 12 minutes ago Up 12 minutes agitated_bhaskara
[root@zmz1 local]# docker attach 85177fca0a5d
zmz
zmz
zmz
...
进入死循环
从容器内拷贝文件到主机
# 从容器内拷贝文件到主机
docker cp 容器id:容器内路径 目的主机路径
测试:
[root@zmz1 local]# docker run -it centos /bin/bash
[root@54387a97cfa0 /]#
root@54387a97cfa0 /]# cd home
[root@54387a97cfa0 home]# ls
#在容器内部创建一个文件
[root@54387a97cfa0 home]# touch 1.txt
[root@54387a97cfa0 home]# exit
exit
[root@zmz1 local]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54387a97cfa0 centos "/bin/bash" 3 minutes ago Exited (0) About a minute ago lucid_cartwright
85177fca0a5d centos "/bin/bash -c 'while…" 20 minutes ago Up 20 minutes agitated_bhaskara
c75e85a1a3ac centos "/bin/bash" 28 minutes ago Exited (0) 24 minutes ago upbeat_robinson
[root@zmz1 local]# docker cp 54387a97cfa0:/home/1.txt /usr/local
[root@zmz1 local]# ls
1.txt apache-maven-3.6.1 bin docker etc games include java jdk1.8 lib lib64 libexec maven mwget nginx sbin share src
5.Docker命令实战
部署Nginx
# 1. 搜索镜像
docker search nginx
# 2. 下载镜像
docker pull nginx
# 3. 查看镜像是否下载成功
docker images
# 4. 启动容器(-d:后台运行 --name:容器名 -p:暴露端口 宿主机端口3344:容器端口80,使用宿主机的3344端口来访问容器nginx的80端口)
docker run -d --name nginx01 -p 3344:80 nginx
# 5. 查看容器是否启动
docker ps
# 6. 本机测试
curl localhost:3344
6.docker数据卷使用
挂载
Docker run -it -v 宿主机目录:容器内的目录
测试:
docker run -it -v /home/ceshi:/home/ centos bin/bash //就是让宿主机home目录下ceshi目录和容器内的home目录的数据同步
(docker exec -it 容器id /bin/bash 可以进入容器 操作后执行exit ,容器并不会停止)
启动容器我们可以使用docker inspect 容器id查看挂载的目录
查看效果,我们在容器的/home目录下新建一个1.txt的文件看看能不能同步到宿主机的/home/ceshi目录下
接下来我们关掉容器,在宿主机上修改文件看看能不能同步
Exit 直接退出
Docker ps 查看有没有后台运行
Vim 1.txt 修改当前的测试文件
Docker start 容器id 启动容器
Cat 1.txt 查看有没有修改文件
安装mysql
# 1. 下载mysql:5.7镜像
[root@zmz1 local]# docker pull mysql:5.7
5.7: Pulling from library/mysql
a076a628af6f: Already exists
f6c208f3f991: Already exists
88a9455a9165: Already exists
406c9b8427c6: Already exists
7c88599c0b25: Already exists
25b5c6debdaf: Already exists
43a5816f1617: Already exists
1831ac1245f4: Pull complete
37677b8c1f79: Pull complete
27e4ac3b0f6e: Pull complete
7227baa8c445: Pull complete
Digest: sha256:b3d1eff023f698cd433695c9506171f0d08a8f92a0c8063c1a4d9db9a55808df
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
# 2. 启动mysql容器
-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置
--name 容器名字
[root@zmz1 local]# docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -v/home/mysql/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
# 设置容器开机自启动
docker update --restart=always 容器名称
这里设置mysql容器自启
docker update --restart=always mysql01
启动之后,我们本机连接一下试试,记得打开阿里云服务器安全组设置的3310端口
点击连接,连接成功,则说明docker部署成功
我们回到xshell,查看主机下的/home/mysql
目录,可以看到conf
和data
两个目录,我们进入data
目录,可以看到相关文件
如果我们在navicat中新建一个数据库
如果我们删除容器,数据仍在不会丢失,仍保留在本地
如果我们删除容器,数据仍在不会丢失,仍保留在本地
7.具名和匿名挂载
匿名挂载
# 匿名挂载: -v:容器内路径(没有写容器外路径)
docker run -d -P --name nginx01 -v /etc/nginx nginx
# 查看所有volume的情况
docker volume ls
具名挂载(常用)
这个只是指定了名称和数据卷的指定路径又有一点区别
查看数据卷情况
# 具名挂载: -v 卷名:容器内路径
docker run -d -P --name nginx02 -v specific-nginx:/etc/nginx nginx
# 查看所有volume的情况
docker volume ls
# 查specific-nginx卷的具体信息
docker volume inspect specific-nginx
#查看容器的详细信息
docker inspect 容器id
拓展
# 通过 容器内路径:ro/rw 限制读写权限
ro:read only 只读,该路径文件只能通过宿主机来操作,容器内无法操作
rw:read write 可读可写
docker run -d -P --name nginx02 -v specific-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v specific-nginx:/etc/nginx:rw nginx
Dockerfile
基础
Dockerfile就是用来构建 docker 镜像的构建文件,就是一段命令脚本,通过这个脚本可以生成一个镜像
构建步骤:
编写一个dockerfile文件
docker build 构建成一个镜像
docker run 运行镜像
docker push 发布镜像(DockerHub、阿里云镜像仓库)
基础知识:
- 每个保留关键字(指令)都必须是大写字母(比如FROM ,VOLUME,CMD等)
- 执行顺序从上往下顺序执行
#
代表注释- 每条指令都会创建并提交一个新的镜像层
通过这个脚本可以生成镜像,镜像是一层一层的,脚本中就是一个个命令,每个命令对应一层
# 创建一个dockerfile文件
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "----end----"
CMD /bin/bash
root@zmz1 local]# pwd
/usr/local
[root@zmz1 local]# mkdir test-dockerfile
[root@zmz1 local]# cd test-dockerfile
----------编辑文件加上命令(输入i进入编辑模式 esc :wq保存退出)
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "----end----"
CMD /bin/bash
[root@zmz1 test-dockerfile]# cat dockerfile1
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "----end----"
CMD /bin/bash
--------执行脚本构建镜像-------------
[root@zmz1 test-dockerfile]# docker build -f ./dockerfile1 -t zmz/centos:1.0 .
--------查看构建的镜像--
[root@zmz1 test-dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zmz/centos 1.0 de007e4b4159 13 seconds ago 231MB
tomcat_zmz 1.0 ac03755ad99d 41 hours ago 684MB
nginx latest 605c77e624dd 8 months ago 141MB
tomcat latest fb5657adc892 8 months ago 680MB
mysql 5.7 c20987f18b13 8 months ago 448MB
hello-world latest feb5d9fea6a5 11 months ago 13.3kB
centos latest 5d0da3dc9764 11 months ago 231MB
portainer/portainer latest 580c0e4e98b0 17 months ago 79.1MB
-----------启动自己构建的镜像,会发现自动挂载了数据卷"volume01","volume02"
[root@zmz1 test-dockerfile]# docker run -it de007e4b4159 /bin/bash
[root@f731792fd2ca /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume01 volume02
dockerHub:dockerhub官网
注册账号
进入官网搜索镜像,点进去后
选择镜像版本然后就会跳转到一个github网站,里面就会有该镜像的dockerfile
这里面的镜像都是基础包,通常需要我们自己搭建
DockerFile指令
指令 | 说明 |
---|---|
FROM | 设置镜像使用的基础镜像 |
MAINTAINER | 设置镜像的作者 |
RUN | 编译镜像时运行的脚本 |
CMD | 设置容器的启动命令,指定容器启动时要运行的命令(只有最后一个生效,可被替代) |
LABLE | 设置镜像的标签 |
EXPOESE | 设置镜像暴露的端口 |
ENV | 设置容器的环境变量 |
ADD | 编译镜像时复制文件到镜像中 |
COPY | 编译镜像时复制文件到镜像中,如果 src 是归档文件(tar, zip, tgz, xz 等),文件会被自动解压到 dest。用于复制新文件、目录或者远程URL地址添加到容器的指定 路径下。 |
ENTRYPOINT | 设置容器的入口程序,指定容器启动时要运行的命令(可以追加命令) |
VOLUME | 设置容器的挂载卷 |
USER | 设置运行RUN CMD ENTRYPOINT 的用户名 |
WORKDIR | 设置运行RUN CMD ENTRYPOINT COPY ADD 指令的工作目录 |
ARG | 设置编译镜像时加入的参数 |
ONBUILD | 设置镜像的ONBUILD指令,当构建一个被继承DockerFile时就会运行ONBUILD指令 |
STOPSIGNAL | 设置容器的退出信号量 |
CMD和ENTRYPOINT的区别
测试CMD:
[root@zmz1 test-dockerfile]# vim dockerfile2
-----编辑dockerfile加入以下命令
FROM centos
CMD ["ls","-a"]
[root@zmz1 test-dockerfile]# ls
dockerfile1 dockerfile2
# 构建镜像
[root@zmz1 test-dockerfile]# docker build -f dockerfile2 -t testcmd .
Sending build context to Docker daemon 3.072kB
Step 1/2 : FROM centos
---> 5d0da3dc9764
Step 2/2 : CMD ["ls","-a"]
---> Running in dfd2e457e857
Removing intermediate container dfd2e457e857
---> f0611c954922
Successfully built f0611c954922
Successfully tagged testcmd:latest
# 通过镜像启动容器,看到 ls -a 命令生效
[root@zmz1 test-dockerfile]# docker run f0611c954922
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
[root@zmz1 test-dockerfile]# docker run f0611c954922
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
# 启动容器时追加 -l 命令,发现报错,这是因为CMD会覆盖以前的命令 相当于启动进入后只执行了-l
[root@zmz1 test-dockerfile]# docker run f0611c954922 -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.
ERRO[0000] error waiting for container: context canceled
# 启动容器时追加 ls -al 命令,不报错,这是因为CMD会覆盖以前的命令 之后执行 ls -l 所以不会报错
[root@zmz1 test-dockerfile]# docker run f0611c954922 ls -l
total 0
lrwxrwxrwx. 1 root root 7 Nov 3 2020 bin -> usr/bin
drwxr-xr-x. 5 root root 340 Sep 7 08:00 dev
drwxr-xr-x. 1 root root 66 Sep 7 08:00 etc
drwxr-xr-x. 2 root root 6 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 6 Sep 15 2021 lost+found
drwxr-xr-x. 2 root root 6 Nov 3 2020 media
drwxr-xr-x. 2 root root 6 Nov 3 2020 mnt
drwxr-xr-x. 2 root root 6 Nov 3 2020 opt
dr-xr-xr-x. 255 root root 0 Sep 7 08:00 proc
dr-xr-x---. 2 root root 162 Sep 15 2021 root
drwxr-xr-x. 11 root root 163 Sep 15 2021 run
lrwxrwxrwx. 1 root root 8 Nov 3 2020 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Nov 3 2020 srv
dr-xr-xr-x. 13 root root 0 Sep 7 06:24 sys
drwxrwxrwt. 7 root root 171 Sep 15 2021 tmp
drwxr-xr-x. 12 root root 144 Sep 15 2021 usr
drwxr-xr-x. 20 root root 262 Sep 15 2021 var
ENTRYPOINT
这个命令与上面的CMD不同 ,如果把dockerfile里面的CMD替换成ENTRYPOINT ,然后通过构建的镜像启动容器的时候,输入-l的话就相当于是在后面追加命令为 ls -a -l 就不会报错。
使用dockerfile构建自己的centos
官网centos
dockerfile
:Docker Hub 大多数基础镜像都是scratch
,然后添加所需的配置进行构建
root@zmz1 test-dockerfile]# vim centos-test-dockerfile
dockerfile:
FROM centos
MAINTAINER zmz<2363135527@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 8088
CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash
通过dockerfile构建镜像
# 命令: docker build -f dockerfile路径 -t 镜像名:[tag] .
docker build -f centos-test-dockerfile -t mycentos:0.1 .
发布镜像到 Docker Hub
首先要有自己
Docker Hub
的账号
1. 登录 Docker Hub
docker login
[root@zmz1 test-dockerfile]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: charmingzmz
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
2. 提交到 Docker Hub
用
docker tag 镜像id 账户名/镜像名:版本号
命令重命名要发布到镜像,名称格式为:账户名/镜像名:版本号
[root@zmz1 test-dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 3a8d7568d890 19 minutes ago 231MB
testcmd latest f0611c954922 45 minutes ago 231MB
zmz/centos 1.0 de007e4b4159 2 hours ago 231MB
tomcat_zmz 1.0 ac03755ad99d 43 hours ago 684MB
nginx latest 605c77e624dd 8 months ago 141MB
tomcat latest fb5657adc892 8 months ago 680MB
mysql 5.7 c20987f18b13 8 months ago 448MB
hello-world latest feb5d9fea6a5 11 months ago 13.3kB
centos latest 5d0da3dc9764 11 months ago 231MB
portainer/portainer latest 580c0e4e98b0 17 months ago 79.1MB
------------------发布镜像->查看镜像-------------
[root@zmz1 test-dockerfile]# docker tag de007e4b4159 charmingzmz/centos:1.0
[root@zmz1 test-dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 3a8d7568d890 23 minutes ago 231MB
testcmd latest f0611c954922 49 minutes ago 231MB
charmingzmz/centos 1.0 de007e4b4159 2 hours ago 231MB
zmz/centos 1.0 de007e4b4159 2 hours ago 231MB
tomcat_zmz 1.0 ac03755ad99d 43 hours ago 684MB
nginx latest 605c77e624dd 8 months ago 141MB
tomcat latest fb5657adc892 8 months ago 680MB
mysql 5.7 c20987f18b13 8 months ago 448MB
hello-world latest feb5d9fea6a5 11 months ago 13.3kB
centos latest 5d0da3dc9764 11 months ago 231MB
portainer/portainer latest 580c0e4e98b0 17 months ago 79.1MB
--------------------push到远程仓库------------
[root@zmz1 test-dockerfile]# docker push charmingzmz/centos:1.0
The push refers to repository [docker.io/charmingzmz/centos]
74ddd0ec08fa: Mounted from library/centos
1.0: digest: sha256:17341d9397c8bfe6701c854efec9afcec076c6814d450c447445a62562b2f418 size: 529
在dockerhub的的个人仓库便可以看到自己发布的镜像
发布镜像到阿里云镜像
1. 创建阿里云镜像仓库
首先登录阿里云,找到 容器镜像服务
创建个人实例
设置密码
创建仓库
创建成功
1.登录(可以在仓库详细信息离查看到登录命令)
docker login --username=charmingzmz123 registry.cn-hangzhou.aliyuncs.com
[root@zmz1 test-dockerfile]# docker login --username=charmingzmz123 registry.cn-hangzhou.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-store
Login Succeeded
2、使用docker tag命令重命名要发布的镜像
[root@zmz1 test-dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 3a8d7568d890 About an hour ago 231MB
testcmd latest f0611c954922 2 hours ago 231MB
charmingzmz/centos 1.0 de007e4b4159 3 hours ago 231MB
zmz/centos 1.0 de007e4b4159 3 hours ago 231MB
tomcat_zmz 1.0 ac03755ad99d 44 hours ago 684MB
nginx latest 605c77e624dd 8 months ago 141MB
tomcat latest fb5657adc892 8 months ago 680MB
mysql 5.7 c20987f18b13 8 months ago 448MB
hello-world latest feb5d9fea6a5 11 months ago 13.3kB
centos latest 5d0da3dc9764 11 months ago 231MB
portainer/portainer latest 580c0e4e98b0 17 months ago 79.1MB
---------------添加标签(注意标签命名规范 域名/命名空间/镜像名:版本号) 不然会报错 denied: requested access to the resource is denied-----------------
[root@zmz1 local]# docker tag de007e4b4159 registry.cn-hangzhou.aliyuncs.com/zmztest/aliyun-centos-test:2.0
[root@zmz1 local]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
charmingzmz/centos 1.0 de007e4b4159 8 hours ago 231MB
zmz/centos 1.0 de007e4b4159 8 hours ago 231MB
registry.cn-hangzhou.aliyuncs.com/zmztest/aliyun-centos-test 2.0 de007e4b4159 8 hours ago 231MB
------------------push到阿里云仓库-------------
[root@zmz1 local]# docker push registry.cn-hangzhou.aliyuncs.com/zmztest/aliyun-centos-test
Using default tag: latest
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/zmztest/aliyun-centos-test]
tag does not exist: registry.cn-hangzhou.aliyuncs.com/zmztest/aliyun-centos-test:latest
[root@zmz1 local]# docker push registry.cn-hangzhou.aliyuncs.com/zmztest/aliyun-centos-test:1.0
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/zmztest/aliyun-centos-test]
tag does not exist: registry.cn-hangzhou.aliyuncs.com/zmztest/aliyun-centos-test:1.0
[root@zmz1 local]# docker push registry.cn-hangzhou.aliyuncs.com/zmztest/aliyun-centos-test:2.0
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/zmztest/aliyun-centos-test]
74ddd0ec08fa: Pushed
2.0: digest: sha256:17341d9397c8bfe6701c854efec9afcec076c6814d450c447445a62562b2f418 size: 529