一、Docker概述
1.Docker简介
1.1.概念docker是一个开源的应用容器引擎,虚拟化软件,容器使用沙箱机制,相互之间不会有任何接口(可以解释为多个容器里面都部署了tomcat,且端口都是8080,只要宿主机容器软件端口映射,即可使用,多个容器里面的端口并不会冲突).
1.2.应用场景:
1)开发程序包可直接打包发布;
2)自动化测试环境组件安装可集成发布;
3)服务器环境部署,包括数据库或其他后台应用可直接打包,不需要每台机器都安装一次
2.Docker容器与传统虚拟机比较
传统虚拟机技术基于安装在主操作系统上的虚拟机管理系统
传统虚拟机:电脑主机—操作系统—虚拟机Vmware—创建虚拟服务器(基于硬件)–安装对应虚拟机重系统之上安装程序软件应用
Docker:电脑主机–操作系统—docker软件—Docker之上安装程序软件应用
Docker相较传统虚拟机的优势:启动速度快,占用体积小
3.Docker的组成部分
Docker容器:docker容器类似虚拟机,可以执行包含启动,停止,删除等。每个容器间是相互隔离的。容器中会运行特定的运用,包含特定应用的代码及所需的依赖文件。可以把容器看作一个简易版的linux环境(包含root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序。
Docker镜像:docker 的镜像概念类似虚拟机的镜像。是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。( docker create <image -id > :为指定的镜像添加一个可读写层,构成一个新的容器;)镜像上安装了tomcat、或者nginx,称之为tomact镜像、或者nginx镜像
Docker仓库:
Docker客户端:与docker守护进程进行通信,实现对docker的管理操作,
镜像与容器的联系:容器 = 容器镜像 + 可读可写层;镜像是文件, 容器是进程。 容器是基于镜像创建的, 即容器中的进程依赖于镜像中的文件, 这里的文件包括进程运行所需要的可执行文件, 依赖软件, 库文件, 配置文件等等
小结:
l Docker是一个应用容器引擎
l 应用场景:web的自动化打包发布;自动化测试、可持续集成;安装各种组件
l 与传统虚拟机比较:docker启动速度快,占用体积小
l 组成:docker守护进程;仓库;镜像;容器;docker客户端
二、Docker的安装与启动
1.离线安装
1)、下载
wget https://download.docker.com/linux/static/stable/x86_64/docker-18.06.1-ce.tgz
2)、解压
tar -xvf docker-18.06.1-ce.tgz
3)、将解压出来的docker文件内容移动到 /usr/bin/ 目录下
cp docker/* /usr/bin/
4)、将docker注册为service
vi /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
5)、启动
chmod +x /etc/systemd/system/docker.service #添加文件权限并启动docker
systemctl daemon-reload #重新加载配置文件
systemctl start docker #启动Docker
systemctl enable docker.service #设置开机自启
6)、验证
systemctl status docker #查看Docker状态
docker -v #查看Docker版本
systemctl start docker #启动docker
systemctl restart docker #重启docker
2.在线安装
#1 yum包更新到最新
sudo yum update
#2安装需要的软件包yum-utils提供yum-config-manager功能另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#3配置yum仓库
sudo yum-config-manager --add-repo http://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
#4安装docker
sudo yum install -y docker-ce
3.设置ustc镜像
ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustcdockermirror的优势之一就是不需要注册,是真正的公共服务。https://lug.ustc.edu.cn/wiki/mirrors/help/docker
1、编辑文件/etc/docker/daemon.json 配置中国地区docker加速器
#执行如下命令:
mkdir /etc/docker vi /etc/docker/daemon.json
2、在文件中加入下面内容
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
3.docker启动与停止命令
#查看docker服务状态
systemctl status docker
#启动docker服务
systemctl start docker
#停止docker服务
systemctl stop docker
#重启docker服务
systemctl restart docker
#设置开机启动docker服务
systemctl enable docker
小结:
l 更新yum源为ustc
l 安装docker
l 更新docker的镜像源为ustc;
l 使用docker命令操作docker
需求更新yum源和镜像源安装docker;安装之后可以使用docker -v
三、docker常用命令
1.镜像相关命令
docker images #查看镜像
docker search #搜索镜像
docker pull 镜像名称:版本号(若不指定拉取最新) #拉取镜像 时间比较久
docker rmi #删除镜像
docker rmi ‘docker images –q’ #删除本地所有镜像 (慎用)
| docker images #查看镜像
| ------------------------------------------------------------ |
| docker search #搜索镜像
| ------------------------------------------------------------ |
| docker pull 镜像名称:版本号(若不指定拉取最新) #拉取镜像
|
| docker rmi #删除镜像 |
| docker rmi ‘docker images –q’ #删除本地所有镜像 (慎用) |
**2.**设置ustc镜像
ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustcdockermirror的优势之一就是不需要注册,是真正的公共服务。https://lug.ustc.edu.cn/wiki/mirrors/help/docker
1、编辑文件/etc/docker/daemon.json 配置中国地区docker加速器
#执行如下命令:
mkdir /etc/docker vi /etc/docker/daemon.json
2、在文件中加入下面内容
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
3.docker启动与停止命令
#查看docker服务状态
systemctl status docker
#启动docker服务
systemctl start docker
#停止docker服务
systemctl stop docker
#重启docker服务
systemctl restart docker
#设置开机启动docker服务
systemctl enable docker
3.查看、创建并启动交互式容器
命令:
docker run
#参数说明:
-i :表示运行容器
-t :表示容器启动后会进入其命令行,加入这两个参数后,容器创建就能登录进去,即分配一个伪终端。--name:为创建的容器命名
-v :表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i-t两个参数,创建后就会自动进去容器)。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
创建交互式容器:
docker run -it --name=mycentos7 centons:7 /bin/bash
#创建交互式容器 exit 退出
| docker run -it --name=mycentos7 centons:7 /bin/bash 创建交互式容器 exit 退出 |
| ------------------------------------------------------------ |
| 小结:启动交互式容器之后是直接进入容器终端;可以查看容器的文件结构;使用exit命令则会退出终端并且停止容器。 |
4.创建并启动守护式容器
创建一个守护式容器;如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器,命令如下:
目标:
1)创建并启动docker容器,可以在后台运行:
2)在创建交互式容器之后如果退出的话,容器处于停止状态,可以使用命令再次启动容器,使用命令进入容器并操作
#创建并启动守护式容器
docker run -di --name=mycentos2 centos:7
#启动容器后在进入容器
docker exec -it mycentos2 /bin/bash
| 创建并启动守护式容器 docker run -di --name=mycentos2 centos:7
| ------------------------------------------------------------ |
| 启动容器后在进入容器 docker exec -it mycentos2 /bin/bash
|
| 小结:守护式容器在启动之后会一直在后台运行,即使进入容器之后执行exit命令也不会停止容器; 适用于需要长期运行容器的情况 |
4.容器相关命令
客户端电脑、宿主机、容器之间的联系
4.1查看&停止&拷贝容器
#查看所有容器
docker ps
#查看所有运行容器
docker ps –a
#停止docker
docker stop 名称/ID
#宿主机文件abc.txt拷贝到容器mycentos7的/目录下
docker cp abc.txt mycentos7:/
#容器mycentos7/目录下的123.txt拷贝到宿主机/root下(在宿主机执行)
docker cp mycentos7:/123.txt /root
4.2目录挂载
可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。
创建容器时添加-v参数,后边为宿主机目录:容器目录,
例如:
docker run -di -v /usr/local/test/:/usr/local/test --name=mycentos3 centos:7
#创建1inux宿主机器要挂载的目录
mkdir /usr/1ocal/test
#创建并启动容器mycentos3,并挂载1inux中的/usr/loca1/test目录到容器的/usr/local/test;也就是在Linux中的/usr/local/test中操作相当于对容器相应目录操作
docker run -di -v /usr/local/test/:/usr/local/test --name=mycentos3 centos:7
#在linux下创建文件
touch /usr/local/test/def.txt
#进入容器
docker exec -it mycentos3 /bin/bash
查看
4.3查看容器ip
可以通过以下命令查看容器运行的各种数据docker inspect容器名称(容器id)
#在linux宿主机下查看mycentos3的ip等详细信息
docker inspect mycentos3
4.4删除容器
#删除容器 docker rm 名称(容器ID) 删除之前容器必须停止
dcoker rm -f
四. Docker应用部署
1.MySql容器部署
分析:
-
拉取mysql镜像
-
创建并启动守护式容器
-
在容器中操作mysql
-
使用图形界面工具(windows)操作在docker中的mysql,在创建mysql容器时使用-p指定端口映射试下链接
-
在创建容器的时候mysql的root用户可以指定远程访问的密码
1.1拉取mysql镜像
#拉取mysql 5.7镜像
docker search mysql docker pull centos/mysql- 57-centos7
1.2.创建容器
docker run-di --name=mysql5.7 –p 3306:3306 –e MYSQL_ROOT_PASSWORD=root mysql
-p代表端口映射,格式为宿主机映射端口:容器运行端口
-e代表添加环境变量MYSQL_ROOT_PASSWORD是root用户的远程登陆密码(如果是在容器中使用root登录的话,那么其密码为空)
#创建mysq75.7容器
docker run -di --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7:latest
出现如下错误解决方法:
这里提示网络不可用,所以宿主机无法连接数据库
#解决办法:现在输入这个命令
vi /usr/lib/sysctl.d/00-system.conf
#在末尾添加这句:
net.ipv4.ip_forward=1
#重启network服务:
systemctl restart network
#先把刚才那个mysql的容器删除,重新创建容器
参考:https://blog.csdn.net/qq_43301158/article/details/89363101
1.3.进入容器在容器中操作mysql
#进入容器
docker exec -it mysql5.7 /bin/bash
#容器中操作mysql
mysql -u root –p
#如果是在容器中使用root登录的话,密码为空
1.4.Navicat连接mysql数据库
注意事项:
1)mysql密码在创建容器时已指定
2)连接失败
查看2章节操作
2.Tomcat容器部署
分析:
-
将项目文件上传到容器中的tomcat目录(webapps)
-
创建容器的手可以指定-v进行目录挂载,tomcat在容器中的目录(/usr/local/tomcat/webapps)
-
可以通过外部浏览器访问容器中的项目
-
创建容器的时候可以指定-p进行端口映射
2.1.拉取tomcat镜像;
docker pull tomcat
2.2.创建并启动tomcat容器;
#创建tomcat容器;井挂载了webapps目录
docker run -di --name=tomcat -p 9000:8080 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat
#如果出现
WARNING:IPv4 forwarding is disabled. Networking will not work
#执行如下操作
#1)编辑sysctl.conf
vi /etc/sysctl.conf
#2)在上述打开的文件中后面添加
net.ipv4.ip_forward=1
#3)重启network
systemctl restart network
2.3.访问容器中的tomcat
http://192.168.253.176:9000
3.nginx容器部署
分析:
l nginx的默认访问端口是:80
l 在创建容器的时候需要进行端口映射,指定-p,映射的端口80
3.1.拉取nginx镜像
docker pull nginx
3.2.创建并启动nginx容器
docker run -di --name=nginx -p 80:80 nginx
3.3.在浏览器上访问容器中的nginx,
http://192.168.253.176
如果宿主机80端口被占用,那么在指定映射的时候可以改变宿主机的端口映射,在访问时也需要带端口号
4.redis容器部署
分析:
-
拉取redis镜像
-
Redis默认端口是6379,如果需要外部访问则可以使用端口映射
-
连接redis:①使用命令行客户端②使用图形界面工具
4.1.拉取redis镜像
docker pull redis
4.2.创建并启动redis容器
docker run -di --name=redis --restart=always -p 6379:6379 redis
4.3.连接并验证redis
#进入redis
docker exec -it redis /bin/bash
#进入到/usr/local/bin/目录下
cd /usr/local/bin/
#执行redis-cli
./redis-cli
#进入127.0.0.1:6379>说明正常 验证如下:
五、Docker-compose
1.Compose简介
1.1.概念
Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。它是一个定义和运行多容器的docker应用工具。使用compose,你能通过YMAL文件配置你自己的服务,然后通过一个命令,你能使用配置文件创建和运行所有的服务。
1.2.组成
Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container).Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例.
-
服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。每个服务都有自己的名字、使用的镜像、挂载的数据卷、所属的网络、依赖哪些其他服务等等,即以容器为粒度,用户需要Compose所完成的任务.
-
项目(project):由一组关联的应用容器组成的一个完成业务单元,在docker-compose.yml中定义.即是Compose的一个配置文件可以解析为一个项目,Compose通过分析指定配置文件,得出配置文件所需完成的所有容器管理与部署操作。
Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。
使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如:要部署一个Web项目,除了Web服务容器,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等
2.安装与卸载
#下载
curl -L https://get.daocloud.io/docker/compose/releases/download/1.26.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
#离线安装
docker-compose /usr/local/bin/docker-compose
#设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose version
3.docker-compose常用命令
#使用格式:
docker-pose [-f 参数…][options][COMMAND][ARGS…]
#选项:
-f,-file FILE指定使用的Compose模板文件,默认为docker-compose.yml,可以多次指定
-p,-priject-name name指定项目名称,默认将使用所在目录名称作为项目名
-x-network-driver 使用docker的可插拔网络后端特性(需要docker1.9及以后版本)
-x-network-driver Driber指定网络后端的驱动,默认为bridge(需要docker1.9及以后版本)
-verbose 输出更多调试信息
-v –version打印版本并退出 |
4.compose模板文件
5.docker-compose的应用
docker-compose可以实现一次启动多个容器;通过配置docker-compose模板文件(docker-compose.yml),在这个配置文件中配置哥哥容器及相关的依赖
1) 编写模板文件
2) 创建并启动docker-compose项目(模板文件所在的目录,docker-compose.yml)
3) 测试
编写模板文件
#建立目录:
mkdir -p /usr/local/mycompose
#创建模板文件: 注意 :和- 后面都要有一个空格
cd /usr/local/mycompose
vi docker-compose.yml
#模板文件
version: "3"
services:
redis1:
image: redis
ports:
- "6379:6379"
container_name: "redis1"
networks:
- dev
mysql1:
image: centos/mysql-57-centos7
environment:
MYSQL_ROOT_PASSWORD: "root"
ports:
- "3306:3306"
container_name: "mysql1"
networks:
- dev
web1:
image: tomcat
ports:
- "9090:8080"
container_name: "web1"
networks:
- dev
- pro
networks:
dev:
driver: bridge
pro:
driver: bridge
#启动:在当前目录下执行
docker-compose up -d
![](Docker.assets/image-20200703122706003.png)
小结:
docker-compose可以配置一个模板文件实现一次可以启动多个容器,运行时候可以执行一个up 则会创建并启动模板文件中的各个服务
六、迁移与备份
涉及命令有
docker commit | 将容器保存为镜像 | |
---|---|---|
docker save | 将镜像备份为tar文件 | |
docker load | 根据tar文件恢复为镜像 | |
镜像保存及创建命令 | ||
docker save -o tomcat.tar tomcat:latest | 在外网linux下拉取镜像之后,保存镜像到本地 | |
docker load -i tomcat.tar tomcat | 镜像创建(离线) | |
容器创建镜像命令 | ||
docker commit nginx nginx:test | 将名称为nginx的容器创建为版本为test的nginx的镜像 |
七、Dockerfile
1.什么是dockerfile文件
前面的课程中已经知道了,要获得镜像,可以从Docker仓库中进行下载。那如果我们想自己开发一个镜像,那该如何做呢?答案是:Dockerfe
Dockerfile其实就是一个文本文件,由一系列命令和参数构成,Docker可以读取Dockerfie文件并根据Dockerfile文件的描述来构建镜像。
Dockerfile文件内容一般分为4部分:
-
基础镜像信息
-
维护者信息
-
镜像操作指令
-
容器启动时执行的指令
2.dockerfile常用命令
命令 | 作用 |
---|---|
FROM image_name:tag | 定义了使用哪个基础镜像启动构建流程 |
MAINTAINER user_name | 声明镜像的创建者 |
ENV key value | 设置环境变量,(可以写多条) |
RUN command | 是Dockerfile的核心部分(可写多条) |
ADD source_dir/filedest_dir/file | 将宿主机的文件复制到容器内,如果是一个压缩文件,将会复制后直接解压 |
COPY source_dir/filedest_dir/file | 和DD相似,但是如果有压缩文件并不能解压 |
WORKDIR path_dir | 设置工作目录 |
EXPOSE | 告诉 Docker 服务端容器对外映射的本地端口,需要在 docker run 的时候使用-p或者-P选项生效 |
CMD | CMD的目的是为了在启动容器时提供一个默认的命令执行选项。如果用户启动容器时指定了运行的命令,则会覆盖掉CMD指定的命令。 CMD指定在 Dockerfile 中只能使用一次,如果有多个,则只有最后一个会生效。 RUN 和CMD的区别: CMD会在启动容器的时候执行,build 时不执行。 RUN只是在构建镜像的时候执行 |
VOLUME | 将本地主机目录挂载到目标容器中 将其他容器挂载的挂载点 挂载到目标容器中 |
参考:https://www.jianshu.com/p/93a678d1bde6 |
3.使用Dockerfile创建镜像
分析:假设在centos7作为基础镜像上,添加jdk1.8并构建一个包含jdk1.8的centos7心镜像
–Dockerfile可以实现 ;Dockerfile是有一系列命令和参数构成的文本文件,在文件中可以指定各个组件资源和运行命令等
实现步骤
1) 拉取centos7镜像
2) 上次jdk1.8;
3) 编写Dockerfile文件;
4) 构建镜像
5) 测试(基于新镜像创建并运行容器,运行jave-version)
#创建目录:
mkdir -p /usr/local/java
cd /usr/local/java/
#下载jdk-8u162-linux-x64.tar.gz并上传至指定目录下
#在/usr/local/java目录下创建Dockerfile文件,内容如下
FROM centos:7
MAINTAINER WANGHUI
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u162-linux-x64.tar.gz /usr/local/java
ENV JAVA_HOME /usr/local/java/jdk1.8.0_162
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PAT
#执行命令构建镜像 (不要忘记最后那个 . 代表当前目录)
docker build -t='jdk1.8' .
八、私有仓库
1.私有仓库搭建预配置
Docker官方的Dockerhub(https://hub.docker.om)是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像到本地,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么我们就需要搭建自己的私有仓库来存储和管理自己的镜像。
私有仓库搭建步骤:
#拉取私有仓库镜像
docker pull registry
#启动私有仓库容器
docker run –di --name=registry –p 5000:5000registry
打开浏览器输入地址
http://宿主机ip:5000/v2/_catalog,
看到
{"repositories":["1"]}
表示私有仓库搭建成功
#修改daemon.json
vi /etc/docker/daemon.json
#在上述文件中添加一个key,保存退出,此步用于让docker信任私有仓库地址,
注意将宿主机ip修改为本机真是ip "insecure-registries":["宿主机ip:5000"]
#重启docker服务
systemctl restart docker
#启动私有仓库容器
registry docker start registry
小结:
拉取registry镜像;基于镜像创建私有仓库容器;需要修改docker的配置文件指定私有仓库地址在访问私有仓库http://ip:5000/v2/_catalog
2将镜像上传至私有仓库
操作步骤:
#标记镜像为私有仓库的镜像
docker tag jdk1.8 宿主机ip:5000/jdk1.8
#再次启动私有仓库容器
docker restart registry
#上传标记的镜像
docker push 宿主机ip:5000/jdk1.8
打开网址查看仓库效果
小结:
将本地镜像打标签(标记本地镜像为一个私有仓库中的镜像);将打了标签的镜像推送到私有仓库。
3.从私有仓库拉取镜像
3.1.拉取私有仓库
特殊:因为私有仓库所在的服务器已经存在相关镜像;所以先删除;请指定镜像名,而不是id
docker rmi 192.168.253.176:5000/jdk1.8
docker pull 192.168.253.176:5000/jdk1.8
3.2.可以通过如下命令查看docker的信息;了解私有仓库地址
docker info
3.3.从其他服务器拉取私有仓库
#打开配置文件
vi /usr/lib/system/system/docker.service 或者 vi /etc/systemd/system/docker.service
#在打开的上述文件中安装下面的图,添加如下内容,注意修改下面内容的ip地址
--add-registry=目标私有仓库ip:5000 –insecure-registry=目标私有仓库ip:5000
#修改daemon.json
vi /etc/docker/daemon.json
#在上述文件中添加一个key,保存退出,此步用于让docker信任私有仓库地址,注意将宿主机ip修改为本机真是ip
{
"insecure-registries":["目标私有仓库ip:5000"]
}
#修改完后需重新加载docker配置文件并重启
docker systemctl daemon-reload systemctl restart docker
#执行命令
docker pull 目标私有仓库ip:5000/tomcat
小结:
-
私有仓库与拉取镜像的服务器是在同一台机器上:直接拉取镜像:docker pull 私有仓库地址/镜像名称
-
私有仓库与拉取镜像的服务器不在同一台机器上:需要去修改docker的配置文件,指定私有仓库;在执行拉取镜像的命令
-
如果本地存在同名的镜像需要先删除镜像后拉取
3.3.从其他服务器拉取私有仓库
#打开配置文件
vi /usr/lib/system/system/docker.service 或者 vi /etc/systemd/system/docker.service
#在打开的上述文件中安装下面的图,添加如下内容,注意修改下面内容的ip地址
--add-registry=目标私有仓库ip:5000 –insecure-registry=目标私有仓库ip:5000
#修改daemon.json
vi /etc/docker/daemon.json
#在上述文件中添加一个key,保存退出,此步用于让docker信任私有仓库地址,注意将宿主机ip修改为本机真是ip
{
"insecure-registries":["目标私有仓库ip:5000"]
}
#修改完后需重新加载docker配置文件并重启
docker systemctl daemon-reload systemctl restart docker
#执行命令
docker pull 目标私有仓库ip:5000/tomcat
小结:
-
私有仓库与拉取镜像的服务器是在同一台机器上:直接拉取镜像:docker pull 私有仓库地址/镜像名称
-
私有仓库与拉取镜像的服务器不在同一台机器上:需要去修改docker的配置文件,指定私有仓库;在执行拉取镜像的命令
-
如果本地存在同名的镜像需要先删除镜像后拉取