docker常用命令

Docker 的常用命令

本文是参照这篇文章测试整理的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目录,可以看到confdata两个目录,我们进入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 镜像的构建文件,就是一段命令脚本,通过这个脚本可以生成一个镜像

构建步骤

  1. 编写一个dockerfile文件

  2. docker build 构建成一个镜像

  3. docker run 运行镜像

  4. docker push 发布镜像(DockerHub、阿里云镜像仓库)

    基础知识

    1. 每个保留关键字(指令)都必须是大写字母(比如FROM ,VOLUME,CMD等)
    2. 执行顺序从上往下顺序执行
    3. #代表注释
    4. 每条指令都会创建并提交一个新的镜像层

通过这个脚本可以生成镜像,镜像是一层一层的,脚本中就是一个个命令,每个命令对应一层

# 创建一个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官网

注册账号

进入官网搜索镜像,点进去后

vH2rcD.png

选择镜像版本然后就会跳转到一个github网站,里面就会有该镜像的dockerfile

vH2RAI.png

这里面的镜像都是基础包,通常需要我们自己搭建

vH27uQ.png

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

官网centosdockerfile: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的的个人仓库便可以看到自己发布的镜像

vHIRsK.png

发布镜像到阿里云镜像

1. 创建阿里云镜像仓库

首先登录阿里云,找到 容器镜像服务

vHTsjx.png

创建个人实例

设置密码

vHT7KP.png

创建仓库

vHTLVS.png

vHTX5Q.png

创建成功

vH7CrV.png

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

然后到阿里云平台查看自己的仓库
vbVyY4.png

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厌世小晨宇yu.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值