1. Docker是什么
了解
Docker
是什么、应用场景及其组成部分
Docker
是一个应用容器引起;- 应用场景:
web
的自动化打包发布,自动化测试、可持续集成,安装各种组件; - 与传统虚拟机比较:
docker
启动速度比较快,占用体积较小; - 组成:
docker
守护进程,仓库,镜像,容器,docker
客户端
2. Docker安装与启动
2.1安装Docker
Docker
官方建议在Ubuntu
中安装,因为Docker
是基于Ubuntu
发布的,而且一般Docker
出现的问题Ubuntu
是最先更新或者打补丁的。
在很多版本的CentOS
中是不支持更新最新的一些补丁包的。
由于我们学习的环境都使用的是CentOS
,因此这里我们将Docker
安装到CentOS
上。注意:这里建议安装在CentOS7.x
以上的版本,在CentOS6.x
的版本中, 安装前需要安装其他很多的环境而且Docker
很多补丁不支持更新。
请直接挂载课程配套的Centos7.x
镜像
yum
包更新到最新sudo yum update
安装需要的软件包,yum-util 提供yum-config manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 [root@iZwz97sm51bf4kxapt7xzvZ ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2 Last metadata expiration check: 1:17:33 ago on Mon 04 Apr 2022 12:05:30 PM CST. Dependencies resolved. ... ... ... Installed: device-mapper-event-8:1.02.175-5.1.al8.x86_64 device-mapper-event-libs-8:1.02.175-5.1.al8.x86_64 device-mapper-persistent-data-0.9.0-4.al8.x86_64 libaio-0.3.112-1.2.al8.x86_64 lvm2-8:2.03.11-5.1.al8.x86_64 lvm2-libs-8:2.03.11-5.1.al8.x86_64 yum-utils-4.0.21-4.al8.noarch Complete! [root@iZwz97sm51bf4kxapt7xzvZ ~]#
设置
yum
源为阿里云sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo [root@iZwz97sm51bf4kxapt7xzvZ ~]# sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo Adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo [root@iZwz97sm51bf4kxapt7xzvZ ~]#
安装
docker
sudo yum install docker-ce # docker-ce为社区版,docker-ee企业版
安装后查看
docker
版本docker -v [root@iZwz97sm51bf4kxapt7xzvZ ~]# docker -v Docker version 20.10.14, build a224086 [root@iZwz97sm51bf4kxapt7xzvZ ~]#
到此为止,docker
就安装完成了。
更新yum
源为ustc
;
ustc
是老牌的linux
镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。https://ug.ustc.edu.cn/wiki/mirrors/help/docker编辑该文件
vi /etc/docker/daemon.json
在该文件中输入如下内容:
{ "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn"] }
需求更新 yum
源和镜像源安装docker
;安装之后可以使用 docker -v
# 启动
systemctl start docker
# 停止
systemctl stop docker
# 重新启动docker
systemctl restart docker
#查看docker启动状态
systemctl status docker
# 开机自动启动
systemctl enable docker
查看当前的ip
[root@iZwz97sm51bf4kxapt7xzvZ ~]# ip addr
3. 镜像相关命令
3.1查看镜像
docker images
REPOSITORY
:镜像名称
TAG
:镜像标签
IMAGE ID
:镜像ID
CREATED
:镜像的创建日期(不是获取该镜像的日期)
SIZE
:镜像大小
这些镜像都是存储在Docker
宿主机的/var/ib/docker目录下
搜索镜像
docker search centos
拉取镜像
docker pull tutum/centos
分析:
- 拉取镜像(容器是基于镜像运行);
- 创建并启动交互式容器,
docker
交互式容器(启动容器之后会直接进入容器的命令行终端,如果退出则容器停止运行)
删除镜像
docker rmi 镜像id
删除所有镜像
docker rmi `docker images -q`
小结:
拉取:docker pull 镜像名称:版本号(若不指定则会拉取最新的版本)
删除全部镜像:docker rmi ` docker images -q ` (慎用)
4. 查看&创建并启动交互式容器
查看正在运行的容器
docker ps
查看所有容器
docker ps -a
查看最后一次运行的容器
docker ps -l
查看停止的容器
docker ps -f status=exited
小结:
# 查看容器
docker ps -a
# 创建并启动交互式容器
docker run -it --name=mycentos7 centos:7 /bin/bash
#退出
exit
启动交互式容器之后是直接进入容器终端;可以查看容器的文件结构;使用exit命令则会退出终端并且停止容器。
5. 创建并启动守护式容器
创建容器常用的参数说明:
创建容器命令: docker run
-i
:表示运行容器
-t
:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
--name
:为创建的容器命名。
-v
:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d
:在run后面加上-d参数则会创建一个守护式容器在后 台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
-p
:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p
做多个端口映射
交互式方式创建容器:
docker run -it --name = 容器名称 镜像名称:标签 /bin/bash [root@iZwz97sm51bf4kxapt7xzvZ ~]# docker run -it --name=mysql mysql:latest /bin/bash # 已经进去MySQL容器 root@d843bd189299:/#
这时我们通过ps命令查看,发现可以看到启动的容器,状态为启动状态
退出当前容器
exit # 当我们退出来的时候容器就已经停止了
守护式方式创建容器:
docker run -di --name = 容器名称镜像名称:标签
登录守护式容器方式:
docker exec -it 容器名称(或者容器ID) /bin/bash
分析:
创建并启动docker
容器,可以在后台运行;
在创建交互式容器之后如果退出的话,容器处于停止状态,可以使用命令再次启动容器,使用命令进入容器并操作。
# 创建并启动守护式容器
docker run -di --name=mycentos2 centos:7
# 启动容器后再进入容器
docker exec -it mycentos2 /bin/bash
小结:
守护式容器在启动之后会一直在后台运行,即使进入容器之后执行exit命令也不会停止容器;
适用于需要长期运行容器的情况
6. 停止&拷贝&挂载&查看ip&删除容器
6.1 停止与启动容器
停止容器:
docker stop 容器名称(或者容器ID)
启动容器:
docker start 容器名称(或者容器ID)
[root@iZwz97sm51bf4kxapt7xzvZ ~]# docker start mysql
mysql
[root@iZwz97sm51bf4kxapt7xzvZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d843bd189299 mysql:latest "docker-entrypoint.s…" 25 minutes ago Up 3 seconds 3306/tcp, 33060/tcp mysql
[root@iZwz97sm51bf4kxapt7xzvZ ~]# docker stop mysql
mysql
[root@iZwz97sm51bf4kxapt7xzvZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@iZwz97sm51bf4kxapt7xzvZ ~]#
6.2 文件拷贝
如果我们需要将文件拷贝到容器内可以使用cp命令
docker cp 需要拷贝的文件或目录容器名称:容器目录
也可以将文件从容器内拷贝出来
docker cp 容器名称:容器目录需要拷贝的文件或目录
eg:
docker cp anaconda-ks. cfg mycentos2:/usr/ local # 复制
docker exec -it mycentos2 /bin/ bash # 进去容器看看是否成功
exit # 退出
docker cp mycentos2:/usr/local/anaconda-ks.cfg anaconda-ks2.cfg # 将文件从容器内拷贝出来
6.3 目录挂载
我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。创建容器添加V参数后边为宿主机目录:容器目录,例如:
docker run -di -V /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7
如果你共享的是多级的目录,可能会出现权限不足的提示。
这是因为CentOS7
中的安全模块selinux把权限禁掉了,我们需要添加参数 -privileged=true
来解决挂载的目录没有权限的问题
6.4 查看容器IP地址
我们可以通过以下命令查看容器运行的各种数据
docker inspect 容器名称(容器ID)
[root@iZwz97sm51bf4kxapt7xzvZ ~]# docker inspect mysql5
也可以直接执行下面的命令直接输出IP地址
docker inspect -- format='{{ NetworkSettings.IPAddress}}' 容器名称(容器ID)
6.5 删除容器
删除指定的容器:
docker rm 容器名称(容器ID)
目标:能够使用容器的停止、拷贝文件、目录挂载、查看IP、删除命令
小结:
容器停止、启动
拷贝文件:容器与宿主机之间的文件互拷
目录挂载:将宿主机的目录映射到容器对于目录
查看容器IP
容器删除:只能删除停止状态的容器;docker rm `docker ps -a -q`
7. MySQL容器部署
记得上去阿里云,先把一些端口号开了
拉取mysql镜像
docker pull centos/mysq1-57-centos7
创建容器
docker run -di --name=tensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
-p
代表端口映射,格式为宿主机映射端口:容器运行端口
-e
代表添加环境变量MYSQ _ROOT_PASSWORD是root用 户的登陆密码
进入mysql容器
docker exec -it tensquare_mysq1 /bin/bash [root@iZwz97sm51bf4kxapt7xzvZ ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 409936706b58 mysql "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp tensquare_mysql b1929a2a0715 tomcat "catalina.sh run" 42 minutes ago Up 42 minutes 0.0.0.0:9000->8080/tcp, :::9000->8080/tcp mytomcat 9a63583f2c8c registry "/entrypoint.sh /etc…" 5 hours ago Up 3 hours 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp registry 4cc709c8cfa0 nginx "/docker-entrypoint.…" 9 hours ago Up 40 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp nginx [root@iZwz97sm51bf4kxapt7xzvZ ~]# docker exec -it mysql /bin/bash Error: No such container: mysql [root@iZwz97sm51bf4kxapt7xzvZ ~]# docker exec -it 409936706b58 /bin/bash root@409936706b58:/# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.28 MySQL Community Server - GPL Copyright (c) 2000, 2022, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER; Query OK, 0 rows affected (0.01 sec) mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql>
登陆mysql
mysql -u root -p
navicat远程连接MySQL。(这一步操作之前,先检查阿里云端口3306,是否打开)
修改加密规则
ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
更新一下用户的密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
刷新权限
flush privileges;
使用图形界面工具(windows
)操作在docker
中安装的mysql
;在创建mysql
容器的时候使用-p
指定端口映射实现连接
在创建容器的时候mysql
的root
用户可以指定远程访问的密码。
小结:
在创建容器的时候指定环境变量MYSQL_ROOT_PASSWORD表示使用root进行远程连接时候的密码。如果需要进行远程连接的话可以使用
-p
进行端口映射。
8. Tomcat容器部署
目标:拉取tomcat
镜像,启动容器,操作容器中的tomcat
分析:
将项目文件上传到容器中的tomcat目录(webapps)
创建容器的时候可以指定-v进行目录挂载,tomcat在容器中的目录(/usr/local/tomcat/webapps)
可以通过外部浏览器访问容器中的项目
创建容器的时候可以指定-p进行端口映射
拉取tomcat镜像;
docker pull tomcat
创建并启动tomcat容器;
docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat
访问容器中tomcat
小结:
上传项目文件可以使用容器的目录挂载功能,外部访问可以使用端口映射
9. Nginx容器部署
拉取nginx镜像
docker pull nginx
创建容器
docker run -di --name = mynginx -p 80:80 nginx [root@iZwz97sm51bf4kxapt7xzvZ ~]# docker run -di --name=nginx -p 80:80 nginx 4cc709c8cfa0f1398775e54fac8c3079652182446e0228a71d7ce7a300fa7e19 [root@iZwz97sm51bf4kxapt7xzvZ ~]#
nginx的默认访问端口是:80
在创建容器的时候需要进行端口映射,指定-p,映射的端口80
- 拉取nginx镜像;
- 创建并启动nginx容器;
- 在浏览器上访问容器中nginx,http://120.25.145.188:80
小结:
如果被占用了80端口,那么在指定映射的时候可以改变宿主机的端口映射,在访问时也需要带上端口号。
10. Redis容器部署
分析:
拉取redis镜像;
docker pull redis
创建并启动redis容器;默认端口是6379,如果需要外部访问则可以使用端口映射;
# 创建容器 docker run -di --name=myredis -p 6379:6379 redis # 进入容器 docker exec -it myredis /bin/bash
连接redis: ①使用命令行客户端 ②使用图形界面工具
11. 迁移与备份
容器保存为镜像
我们可以通过以下命令将容器保存为镜像
docker commit mynginx mynginx_i
# 保存成功
[root@iZwz97sm51bf4kxapt7xzvZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynginx_i latest 5fec3772aedd 2 seconds ago 141MB
tomcat latest b00440a36b99 4 days ago 680MB
mysql latest 667ee8fb158e 7 days ago 521MB
redis latest bba24acba395 7 days ago 113MB
nginx latest 12766a6745ee 7 days ago 141MB
centos/mysql-57-centos7 latest f83a2938370c 2 years ago 452MB
docker run -di --name=mynginx2 -p 81:80 mynginx_i
# 访问 http://120.25.145.188:81
镜像备份
我们可以通过以下命令将镜像保存为tar文件
docker save -o mynginx.tar mynginx_i
[root@iZwz97sm51bf4kxapt7xzvZ ~]# docker save -o mynginx.tar mynginx_i
[root@iZwz97sm51bf4kxapt7xzvZ ~]# dir
mynginx.tar
镜像恢复与迁移
首先我们先删除掉mynginx_ jimg镜像然后执行此命令进行恢复
docker load -i mynginx.tar
-i输入的文件
执行后再次查看镜像,可以看到镜像已经恢复
12. docker-compose简介&安装
目标:docker-compose的作用;能够安装docker-compose
小结:
docker-compose是一个应用工具;可以通过配置docker-compose.yml文件同时启动多个容器。
部署项目时可以编写一个docker-compose.yml文件作为启动项目单位,同时启动项目相关的那些容器。
13. docker-compose应用
目标:编写模版文件同时启动docker容器
分析:
docker-compose可以实现一次启动多个容器;通过配置docker-compose模板文件(docker-compose.yml),在这个配置文件中去配置各个容器及其相关的依赖。
- 编写模板文件;
- 创建并启动docker-compose项目(模板文件所在的目录,docker-compose.yml)
- 测试
小结:
docker-compose可以配置一个模板文件实现一次可以启动多个容器,运行时候可以执行一个up则会创建并启动模板文件中的各个服务。
模板文件是yml格式的;编写的时候需要注意其格式。
14. 迁移与备份
目标:能够将容器保存为镜像,备份,恢复镜像再启动以恢复的镜像作为基础的容器
分析:
在当前的容器中安装了各种组件;期望在其他服务器上也能快速拥有该容器的一切环境;可以将当前的容器制作为一个镜像,再将该奖项复制到其他服务器,其他服务器再基于镜像运行容器。
- 将容器保存为一个镜像;
- 备份镜像;
- 恢复镜像;
- 基于镜像运行容器
小结:
docker容器可以保存为一个镜像;备份为一个镜像包(*.tar)可以复制迁移到其他服务器,再恢复该tar包中的镜像,基于镜像运行容器实现环境的一致。
15. 使用Dockerfile创建镜像
14.1 什么是Dockerfile
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像 。
- 对于开发人员:可以为开发团队提供一个完全一 致的开发环境;
- 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了;
- 对于运维人员:在部署时,可以实现应用的无缝移植。
14.2 常用命令命令
命令 | 作用 |
---|---|
FROM image name:tag | 定义了使用哪个基础镜像启动构建流程 |
MAINTAINER user_ name | 声明镜像的创建者 |
ENV key value | 设置环境变量(可以写多条) |
RUN command | 是Dockerfile的核心部分(可以写多条) |
ADD source_ dir/file dest_ dir/file | 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压 |
COPY source_ dir/file dest_ dir/file | 和ADD相似,但是如果有压缩文件并不能解压 |
WORKDIR path_ dir | 设置工作目录 |
使用Dockerfile创建一个自定义jdk1.8的镜像
分析:
假设在centos7作为基础镜像上;添加jdk1.8并构建一个包含jdk1.8的centos7新镜像。
– Dockerfile可以实现;Dockerfile是由一系列命令和参数构成的文本文件,在文件中可以指定各个组件资源和运行命令等。
实现步骤:
- 拉取centos7镜像;
- 上传jdk1.8;
- 编写Dockerfile文件;
- 构建镜像;
- 测试(基于新镜像创建并运行容器,运行java -version)
小结:
Dockerfile可以基于镜像制作镜像;docker build -t='jdk1.8' .
[root@iZwz97sm51bf4kxapt7xzvZ dockerjdk8]# vi Dockerfile # 编写Dockerfile文件
[root@iZwz97sm51bf4kxapt7xzvZ dockerjdk8]# cat Dockerfile
FROM centos:7
MAINTAINER nateshao
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u161-linux-x64.tar.gz /usr/local/java
ENV JAVA_HOME /usr/local/java/jdk1.8.0_161
ENV JAR_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools/jar:$JAE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
[root@iZwz97sm51bf4kxapt7xzvZ dockerjdk8]# docker build -t='jdk1.8' . # 执行 -t:指定镜像名称 .指当前的Dockerfile文件
Sending build context to Docker daemon 575.5MB
Step 1/9 : FROM centos:7
7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407
Status: Downloaded newer image for centos:7
---> eeb6ee3f44bd
Step 2/9 : MAINTAINER nateshao
---> Running in 52ef4d3e4150
Removing intermediate container 52ef4d3e4150
---> eaef68b5e34c
Step 3/9 : WORKDIR /usr
---> Running in 1cd9559b9c5a
Removing intermediate container 1cd9559b9c5a
---> a3e3e2ee5f40
Step 4/9 : RUN mkdir /usr/local/java
---> Running in 3f4db6ae3685
Removing intermediate container 3f4db6ae3685
---> a0b910ff061e
Step 5/9 : ADD jdk-8u161-linux-x64.tar.gz /usr/local/java
---> 33a70ca25db8
Step 6/9 : ENV JAVA_HOME /usr/local/java/jdk1.8.0_161
---> Running in 4261fa4976ff
Removing intermediate container 4261fa4976ff
---> 6d8879663b2a
Step 7/9 : ENV JAR_HOME $JAVA_HOME/jre
---> Running in c1ff5f3c5f76
Removing intermediate container c1ff5f3c5f76
---> 87f867d8b627
Step 8/9 : ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools/jar:$JAE_HOME/lib:$CLASSPATH
---> Running in 3a8531131bc2
Removing intermediate container 3a8531131bc2
---> a27d96cec297
Step 9/9 : ENV PATH $JAVA_HOME/bin:$PATH
---> Running in 68626ccfe53d
Removing intermediate container 68626ccfe53d
---> 889915745bd6
Successfully built 889915745bd6
Successfully tagged jdk1.8:latest
.... 到这里就构建成功了
docker images 看看
[root@iZwz97sm51bf4kxapt7xzvZ local]# docker images # 可以看到jdk.8已经有了
REPOSITORY TAG IMAGE ID CREATED SIZE
jdk1.8 latest 889915745bd6 3 minutes ago 588MB
mynginx_i latest 5fec3772aedd 2 hours ago 141MB
tomcat latest b00440a36b99 4 days ago 680MB
mysql latest 667ee8fb158e 7 days ago 521MB
redis latest bba24acba395 7 days ago 113MB
nginx latest 12766a6745ee 7 days ago 141MB
centos 7 eeb6ee3f44bd 6 months ago 204MB
centos/mysql-57-centos7 latest f83a2938370c 2 years ago 452MB
运行并查看jdk
[root@iZwz97sm51bf4kxapt7xzvZ local]# docker run -it jdk1.8 /bin/bash
[root@c6764a7159c9 usr]# java
Usage: java [-options] class [args...]
[root@c6764a7159c9 usr]# java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
[root@c6764a7159c9 usr]# exit
exit
[root@iZwz97sm51bf4kxapt7xzvZ local]#
16. 私有仓库搭建与配置
拉取私有仓库镜像(此步省略)
docker pull registry
启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry
打开浏览器输入地址 http://120.25.145.188:5000/v2/_catalog 看到(“repositories”:0]表示私有仓库搭建成功并且内容为空
修改daemon.json
vi /etc/docker/daemon.json
添加以下内容,保存退出。
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries":["120.25.145.188:5000"]
}
此步用于让docker信任私有仓库地址
重启docker服务
systemctl restart docker 重启之后,还需要重新启动registry哦 docker start registry
小结:
拉取registry镜像;基于镜像创建私有仓库容器;需要去修改docker的一个配置文件指定私有仓库地址;再访问私有仓库:http://ip:5000/v2/_catalog
17. 将镜像上传至私有仓库
标记此镜像为私有仓库的镜像
docker tag jdk1.8 120.25.145.188:5000/jdk1.8
上传标记的镜像
docker push 120.25.145.188:5000/jdk1.8
如果push不上去的话,检查阿里云的端口开通了没哦
[root@iZwz97sm51bf4kxapt7xzvZ dockerjdk8]# docker start registry registry [root@iZwz97sm51bf4kxapt7xzvZ dockerjdk8]# docker push 120.25.145.188:5000/jdk1.8
小结:
将本地镜像打标签(标记本地镜像为一个私有仓库中的镜像);将打了标签的镜像推送到私有仓库。
18. 从私有仓库拉取镜像
目标:将私有仓库中的jdk1.8镜像拉取到本地
小结:
- 私有仓库与拉取镜像的服务器是在同一台机器上:直接拉取镜像;
docker pull 私有仓库地址/镜像名称
- 私有仓库与拉取镜像的服务器是不在同一台机器上:需要去修改docker的配置文件,指定私有仓库地址;再执行拉取镜像的命令。
如果本地存在同名的镜像需要先删除镜像后拉取