Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布

目录

一、Docker 简介

Docker组成部分

二、Docker安装与启动  ★

配置阿里云镜像加速器 

三、常用命令  ★★

1、总结

2、镜像相关命令

3、容器相关命令  

4、应用部署 (Mysql、Redis、Nginx、Tomcat)  ★

(3) Redis 部署 (挂载配置文件)

5、迁移与备份 ★

四、Docker 私有仓库

1、私有仓库搭建与配置

2、镜像上传至私有仓库

五、镜像发布 (上传阿里云)  ★


学习目标:

  • 掌握Docker基础知识,能够理解Docker镜像与容器的概念
  • 完成Docker安装与启动
  • 掌握Docker镜像与容器相关命令
  • 掌握Tomcat Nginx 等软件的常用应用的安装
  • 掌握docker迁移与备份相关命令
  • 能够运用Dockerfile编写创建容器的脚本
  • 能够搭建与使用docker私有仓库

一、Docker 简介

Docker 帮助我们快速搭建环境,并且保证环境的一致性,避免了兼容等问题。

Docker 是一个开源的应用容器引擎,基于 Go 语言开发。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低

作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验 , 这个时候 Docker 横空出世,是因为它对此给出了一个标准化的解决方案。
Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第1张图片

  • 为什么选择Docker?
    • Docker的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现“这段代码在我机器上没问题啊”这类问题;——致的运行环境
    • 可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。——更快速的启动时间
    • 避免公用的服务器,资源会容易受到其他用户的影响。——隔离性
    • 善于处理集中爆发的服务器使用压力;——弹性伸缩,快速扩展
    • 可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。——迁移方便
    • 使用Docker可以通过定制应用镜像来实现持续集成、持续交付、部署。——持续交付和部署
  • Docker应用场景

① Web 应用的自动化打包和发布

② 自动化测试和持续集成、发布

③ 在服务型环境中部署和调整数据库或其他的后台应用

使用Docker可以实现开发人员的开发环境、测试人员的测试环境、运维人员的生产环境的一致性。
Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第2张图片

什么是虚拟化?

​虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(vip)、桌面虚拟化、服务虚拟化、虚拟机等等。

Docker组成部分

​Docker是一个客户端-服务器(C/S)架构程序。Docker客户端只需要向Docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。Docker提供了一个命令行工具Docker以及一整套RESTful API。你可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。

Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第3张图片Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第4张图片

镜像:类似虚拟机镜像 , 是一个特殊的文件系统

容器:类似linux系统环境,运行和隔离应用。是镜像运行时的实体

仓库:集中存放镜像文件的地方。

公共仓库:Docker Hub  

(说明:在Docker Hub下载镜像巨慢,可以自己构建私有的Registry)。

容器与虚拟机比较

  • 传统虚拟机

传统虚拟机技术基于安装在主操作系统上的虚拟机管理系统(如:VirtualBox和VMWare等),创建虚拟机(虚拟出各种硬件),在虚拟机上安装从操作系统,在从操作系统中安装部署各种应用。

Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第5张图片

  • Docker

Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker优势体现为启动速度快、占用体积小。

 Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第6张图片

二、Docker安装与启动  ★

1. 确定你是CentOS7及以上版本

cat /etc/redhat-release

2. yum 安装 gcc 相关

yum -y install gcc

yum -y install gcc-c++

3. 安装需要的软件包

yum install -y yum-utils device-mapper-persistent-data lvm2

4. 设置阿里云为镜像仓库 (外网仓库会超时)

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5. 更新yum软件包索引 

yum makecache fast

6. 安装DOCKER CE(社区版)(DOCKER EE企业版收费) 

yum -y install docker-ce

7. 启动docker 

手动启动:systemctl start docker

自动启动:systemctl enable docker

检查版本:docker version

8. 下载并运行HelloWorld

docker run hello-world

 输出这段提示以后,hello world就会停止运行,容器自动终止。Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第7张图片

Hello from Docker!

这条消息显示您的安装工作正常。  

为了生成此消息,Docker采取了以下步骤:  

1.    Docker客户端联系Docker守护进程。  

2.    Docker守护进程从Docker Hub拉出“hello-world”映像。  

3.    Docker守护进程根据该映像创建了一个新容器,该容器运行可执行文件,生成当前正在读取的输出。 

4.     Docker守护进程将这些输出流到Docker客户端,由客户端将其发送到终端。 Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第8张图片

8. 卸载

systemctl stop docker

yum -y remove docker-ce

rm -rf /var/lib/docker

yum remove docker \

docker-client \

docker-client-latest \

docker-common \

docker-latest \

docker-latest-logrotate \

docker-logrotate \

         docker-engine

配置阿里云镜像加速器 

 (之前的镜像是为了下载Docker本身,下面的镜像加速器为了加速下载的镜像)

Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第9张图片

1. 注意文件名:daemon!不是dea! 

mkdir -p /etc/docker
vim  /etc/docker/daemon.json 

{
"registry-mirrors": ["https://n5gwxq4s.mirror.aliyuncs.com"]
}

2. 令配置生效,重启docker 

systemctl daemon-reload
systemctl restart docker

拉取镜像

docker pull centos/mysql-57-centos7
docker pull tomcat:7-jre7   (拉取指定版本,:版本号)
docker pull nginx
docker pull redis
docker pull registry

三、常用命令  ★★

1、总结

注:镜像名、容器名均可用id替代

Docker 命令
启动docker: systemctl start docker
开机启动: systemctl enable docker
停止docker: systemctl stop docker
重启docker: systemctl restart docker
状态docker:  systemctl status docker
查看docker概要信息: docker info
查看docker帮助文档:     docker --help 
镜像 (image) 命令
查看镜像: docker images
搜索镜像: docker search 镜像名称
拉取镜像: docker pull 镜像名称
删除镜像:

docker rmi 镜像ID

        强制删除镜像:docker rmi -f 镜像ID
        删除多个镜像:docker rmi -f   镜像名1:TAG    镜像名2:TAG
        删除所有镜像:docker rmi -f $(docker images -qa)

        如果名字过长:docker rmi 镜像名:标签(版本)

容器 (container) 命令
查看正在运行的容器: docker ps
查看所有容器: docker ps –a
查看最后一次运行的容器: docker ps –l
查看停止的容器: docker ps -f status=exited
交互式启动容器: docker run -it --name=容器名称 镜像名称:标签(版本) /bin/bash
后台启动容器: docker run -id --name=mycentos2 centos:7
守护式启动容器: docker run -id --name=容器名称 镜像名称:标签
启动容器: docker start 容器名
停止容器: docker stop 容器名
登录容器:

docker exec -it 容器名 /bin/bash

docker attach 容器ID   (鸡肋,守护式没有提示符)

删除容器 docker rm -f 容器名|id
退出容器:

exit  (交换式启动的容器,首次退出会自动停止)

ctrl + p + q   (容器不停止退出,守护式无法使用)

重启容器: docker restart 容器名
文件拷贝:

docker cp 宿主机目录 容器名称:容器目录

例:docker cp hello.txt mycentos2:/opt/

docker cp 容器名称:容器目录 宿主机目录

例:docker cp mycentos2:/opt/hello.txt /opt

目录挂载

(创建容器并运行)

docker run -di --name=容器的名字 -v 宿主机目录:容器目录 容器:标签(版本)

例:docker run -id --name=mycentos7_3 -v /a/b/c:/aa/bb centos:7

查看容器日志

docker logs [OPTIONS] 容器名

        -t :是加入时间戳
        -f :跟随最新的日志打印
        -n :数字 显示最后多少条

查看容器内运行的进程 docker top 容器名

查看容器细节

docker inspect 容器名

只查看ip:docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名

迁移与备份 命令
将容器保存为镜像

docker commit 容器名  镜像名

将镜像备份为tar文件

docker save –o tar文件名 镜像名

根据tar文件恢复为镜像

docker load -i tar文件名

拉取镜像

docker pull centos/mysql-57-centos7
docker pull tomcat:7-jre7   (拉取指定版本,:版本号)
docker pull nginx
docker pull redis
docker pull registry

应用部署 

Mysql:
# docker run -di --name=容器名字 -p 宿主机端口:容器端口 -e MYSQL_ROOT_PASSWORD=mysql密码 容器名称
docker run -di --name=mysql5.7 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7
Nginx:
docker run -di --name=mynginx -p 1111:80 nginx
Redis:
docker run -di --name=myredis -p 6379:6379 redis

镜像发布 (上传阿里云)

1. 登录阿里云Docker Registry
docker login --username=a11104255 registry.cn-hangzhou.aliyuncs.com

2. 从Registry中拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/a11104255/repository:[镜像版本号]

3. 将镜像推送到Registry

docker login --username=a11104255 registry.cn-hangzhou.aliyuncs.comdocker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/a11104255/repository:[镜像版本号]docker push registry.cn-hangzhou.aliyuncs.com/a11104255/repository:[镜像版本号]

2、镜像相关命令

镜像:Docker镜像是由文件系统叠加而成(是一种文件的存储形式);是docker中的核心概念,可以认为镜像就是对某些运行环境或者软件打的包,用户可以从docker仓库中下载基础镜像到本地,比如,开发人员可以从docker仓库拉取(下载)一个只包含centos7系统的基础镜像,然后在这个镜像中安装jdk、mysql、Tomcat和自己开发的应用,最后将这些环境打成一个新的镜像。开发人员将这个新的镜像提交给测试人员进行测试,测试人员只需要在测试环境下运行这个镜像就可以了,这样就可以保证开发人员的环境和测试人员的环境完全一致。

Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第10张图片

有个容器正在使用,不允许删除,需要强制删除 

有多个引用,不允许删除,使用 docker rmi 镜像名:标签(版本号)Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第11张图片

3、容器相关命令  

容器也是docker中的核心概念,镜像是创建容器的软件 , 容器是由镜像运行产生的运行实例。镜像和容器的关系,就如同Java中类和对象的关系

如果需要通俗的描述容器的话,我觉得容器就是一个存放东西的地方,就像书包可以装各种文具、衣柜可以放各种衣服、鞋架可以放各种鞋子一样。我们现在所说的容器存放的东西可能更偏向于应用。比如网站、程序甚至是系统环境。
Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第12张图片

创建容器命令:docker run

-i:表示运行容器

-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。

--name :为创建的容器命名。

-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。

-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。

-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

文件拷贝

我们需要在容器内安装一个软件,软件首先需要有安装包,我们就需要把安装包拷贝到容器内。我们通常的操作是先把文件上传到宿主机,然后我们在将文件从宿主机拷贝到容器内的某个目录下面进行安装。先将文件拷贝到宿主机,再从宿主机拷贝到容器
Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第13张图片

目录挂载

将宿主机的目录与容器内的目录进行映射,这样就可以保证我们两个目录的数据是同步的

概念:

数据卷

Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。为了能保存数据,在docker中我们使用卷。

卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性:

卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。

特点:

  • 1:数据卷可在容器之间共享或重用数据
  • 2:卷中的更改可以直接生效
  • 3:数据卷中的更改不会包含在镜像的更新中
  • 4:数据卷的生命周期一直持续到没有容器使用它为止

②数据卷容器:

命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器。

总结: 

Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第14张图片

attach    Attach to a running container                 # 当前 shell 下 attach 连接指定运行镜像
build     Build an image from a Dockerfile              # 通过 Dockerfile 定制镜像
commit    Create a new image from a container changes   # 提交当前容器为新的镜像
cp        Copy files/folders from the containers filesystem to the host path   #从容器中拷贝指定文件或者目录到宿主机中
create    Create a new container                        # 创建一个新的容器,同 run,但不启动容器
diff      Inspect changes on a container's filesystem   # 查看 docker 容器变化
events    Get real time events from the server          # 从 docker 服务获取容器实时事件
exec      Run a command in an existing container        # 在已存在的容器上运行命令
export    Stream the contents of a container as a tar archive   # 导出容器的内容流作为一个 tar 归档文件[对应 import ]
history   Show the history of an image                  # 展示一个镜像形成历史
images    List images                                   # 列出系统当前镜像
import    Create a new filesystem image from the contents of a tarball # 从tar包中的内容创建一个新的文件系统映像[对应export]
info      Display system-wide information               # 显示系统相关信息
inspect   Return low-level information on a container   # 查看容器详细信息
kill      Kill a running container                      # kill 指定 docker 容器
load      Load an image from a tar archive              # 从一个 tar 包中加载一个镜像[对应 save]
login     Register or Login to the docker registry server    # 注册或者登陆一个 docker 源服务器
logout    Log out from a Docker registry server          # 从当前 Docker registry 退出
logs      Fetch the logs of a container                 # 输出当前容器日志信息
port      Lookup the public-facing port which is NAT-ed to PRIVATE_PORT    # 查看映射端口对应的容器内部源端口
pause     Pause all processes within a container        # 暂停容器
ps        List containers                               # 列出容器列表
pull      Pull an image or a repository from the docker registry server   # 从docker镜像源服务器拉取指定镜像或者库镜像
push      Push an image or a repository to the docker registry server    # 推送指定镜像或者库镜像至docker源服务器
restart   Restart a running container                   # 重启运行的容器
rm        Remove one or more containers                 # 移除一个或者多个容器
rmi       Remove one or more images             # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
run       Run a command in a new container              # 创建一个新的容器并运行一个命令
save      Save an image to a tar archive                # 保存一个镜像为一个 tar 包[对应 load]
search    Search for an image on the Docker Hub         # 在 docker hub 中搜索镜像
start     Start a stopped containers                    # 启动容器
stop      Stop a running containers                     # 停止容器
tag       Tag an image into a repository                # 给源中镜像打标签
top       Lookup the running processes of a container   # 查看容器中运行的进程信息
unpause   Unpause a paused container                    # 取消暂停容器
version   Show the docker version information           # 查看 docker 版本号
wait      Block until a container stops, then print its exit code   # 截取容器停止时的退出状态值

4、应用部署 (Mysql、Redis、Nginx、Tomcat)  ★

(1) MySQL部署

1. 拉取Mysql5.7镜像

docker pull centos/mysql-57-centos7

2. 应用部署

Mysql:
# docker run -di --name=容器名字 -p 宿主机端口:容器端口 -e MYSQL_ROOT_PASSWORD=mysql密码 容器名称
docker run -di --name=mysql5.7 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7

3. 远程登录

 连接宿主机的IP ,指定端口为33306Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第15张图片 Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第16张图片

(2) Nginx 部署

1. 拉取镜像

docker pull nginx

2. 创建Nginx容器 (注意端口,最好不要重复)

docker run -di --name=mynginx -p 1111:80 nginx

3. 安装完成之后,请求nginx页面 

宿主机id:映射ip 

Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第17张图片

(3) Redis 部署 (挂载配置文件)

docker安装redis并以配置文件方式启动_祗是辉哥哥的博客-CSDN博客_docker安装redis

1. 拉取镜像

docker pull redis

2. 创建配置文件,创建配置文件,修改配置

mkdir /usr/local/docker

vi /usr/local/docker/redis.conf

bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问

protected-mode no #默认yes,开启保护模式,限制为本地访问

daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败


databases 16 #数据库个数(可选),我修改了这个只是查看是否生效。。

dir  ./ #输入本地redis数据库存放文件夹(可选)

appendonly yes #redis持久化(可选)

3. 创建Redis 容器,挂载目录并启动

docker run -p 6379:6379 --name myredis -v /docker/redis/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

docker run -p 6379:6379 --name myredis -v /usr/local/docker/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

--appendonly    开启AOF持久化(默认RDB) 

docker run -di --name=myredis -p 6379:6379 redis (不用这个)

4. 通过客户端工具连接测试。(redis 默认没有账号密码)

Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第18张图片

如果redis 重启后数据丢失问题,无法读取rdb、aof文件。

1、编辑 sysctl.conf 配置文件

vi /etc/sysctl.conf

2、检查sysctl.conf配置文件中的vm.overcommit_memory参数是否为0,若为0Linux系统不允许回写,可将参数vm.overcommit_memory = 1。(如果没有这个参数,则另起一行增加参数 vm.overcommit_memory 配置,如下):

vm.overcommit_memory = 1

3、使配置文件生效

sysctl -p

(4) Tomcat 部署 (一般不用)

1. 拉取镜像

docker pull tomcat:7-jre7

2. 创建容器

创建容器  -p表示地址映射 -v 表示目录挂载

# 创建tomcat容器;并挂载了webapps目录
docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7

5、迁移与备份 ★

可以保证环境的一致性,如开发环境、测试环境

Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第19张图片

四、Docker 私有仓库

 Docker官方的Docker hub(https://hub.docker.com)是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像到本地,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么我们就需要搭建自己的私有仓库来存储和管理自己的镜像。

1、私有仓库搭建与配置

1.拉取私有仓库镜像(此步省略)

docker pull registry

2.启动私有仓库容器 

docker run -di --name=registry -p 5000:5000 registry

通过 docker ps -a 查看容器是否创建成功 
打开浏览器 输入地址 http://192.168.86.86:5000/v2/_catalog 确认私有仓库搭建成功Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第20张图片

3. 修改daemon.json (注意逗号!)

"insecure-registries":["192.168.86.86:5000"]

Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第21张图片

4.重启docker 服务

systemctl restart docker

5.由于重启服务器导致容器停止,启动registry容器

docker start registry

2、镜像上传至私有仓库

1.标记此镜像为私有仓库的镜像

docker tag mynginx_i 192.168.86.86:5000/mynginx

Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第22张图片

2.上传标记的镜像

docker push 192.168.86.86:5000/mynginx 

Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第23张图片

3.访问仓库,上传成功

Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第24张图片

4. 如何拉取?

docker pull 192.168.86.86:5000/mynginx

五、镜像发布 (上传阿里云)  ★

首先得去阿里云开发者平台进行注册并开通容器镜像服务。然后依次创建命名空间和仓库。

1.进入实例列表,创建个人实例

Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第25张图片

2.创建命名空间Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第26张图片

3.创建仓库 - 本地仓库

Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第27张图片

4.接下来按照参考文档进行

Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第28张图片

1.登入阿里云仓库,密码可以通过访问凭证进行设置。

docker login --username=a11104255 registry.cn-hangzhou.aliyuncs.com

2.从Registry中拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/a11104255/repository:[镜像版本号]

3. 将镜像推送到Registry 

docker login --username=a11104255 registry.cn-hangzhou.aliyuncs.comdocker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/a11104255/repository:[镜像版本号]docker push registry.cn-hangzhou.aliyuncs.com/a11104255/repository:[镜像版本号]

Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第29张图片 Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第30张图片

备注:如果镜像id有重复如何删除

Day100.Docker: 安装、常用命令、应用部署、迁移与备份、镜像发布_第31张图片docker rmi 镜像名:版本号

你可能感兴趣的:(Docker,docker,java,容器)