Docker基础

    科技2022-07-12  125

    一、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-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选项生效CMDCMD的目的是为了在启动容器时提供一个默认的命令执行选项。如果用户启动容器时指定了运行的命令,则会覆盖掉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的配置文件,指定私有仓库;在执行拉取镜像的命令

    如果本地存在同名的镜像需要先删除镜像后拉取

    Processed: 0.013, SQL: 8