Docker基础

一、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的配置文件,指定私有仓库;在执行拉取镜像的命令

  • 如果本地存在同名的镜像需要先删除镜像后拉取
    在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值