Docker学习笔记

Docker的安装

# 1、yum 包更新到最新 
[root@localhost ~]# yum update

# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

# 3、 设置yum源
[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 4.查看所有仓库中所有docker版本
[root@localhost ~]# yum list docker-ce --showduplicates | sort -r
* updates: mirror.lzu.edu.cn
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror
 * extras: mirrors.bfsu.edu.cn
docker-ce.x86_64            3:20.10.1-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.0-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.9-3.el7                     docker-ce-stable
...
 * base: mirrors.bfsu.edu.cn
Available Packages

# 5.安装docker,出现输入的界面都按 y 
[root@localhost ~]# yum install docker-ce-20.10.1-3.el7

# 6.查看docker版本,验证是否验证成功
[root@localhost ~]# docker -v
Docker version 20.10.1, build 831ebea


Docker配置镜像加速器

https://www.runoob.com/docker/docker-mirror-acceleration.html

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://l10nt4hq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker


Docker服务相关命令

# 启动 Docker服务
[root@localhost ~]# systemctl start docker

# 查看 Docker服务 状态
[root@localhost ~]# systemctl status docker

# 关闭 Docker服务
[root@localhost ~]# systemctl stop docker

# 重启 Docker服务
[root@localhost ~]# systemctl restart docker

# 配置 Docker服务 开机启动
[root@localhost ~]# systemctl enable docker

Docker镜像相关命令

# 1.本地查看镜像文件
[root@localhost ~]# docker images
# 查看所有本地镜像的id
[root@localhost ~]# docker images -q

# 2.搜索镜像
[root@localhost ~]# docker search redis

# 3.1 拉取镜像(默认下载最新版)
[root@localhost ~]# docker pull redis
# 3.2 拉取指定版本镜像去https://hub.docker.com/上搜索对应版本
[root@localhost ~]# docker pull redis:5.0.10
# 再次查看本地已下载镜像文件
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
redis        5.0.10    5a3c8e192943   2 weeks ago   98.4MB
redis        latest    ef47f3b6dc11   2 weeks ago   104MB


# 4.删除镜像(docker rmi [IMAGE ID])
[root@localhost ~]# docker rmi ef47f3b6dc11
# 通过 名称加版本号 的方式 删除
[root@localhost ~]# docker rmi redis:latest
# 删除所有镜像
[root@localhost ~]# docker rmi `docker images -q`

Docker容器相关命令

  • 查看容器
docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器
  • 创建并启动容器
docker run 参数 
参数说明:
- -i:保持容器运行,通常与-t同时使用,加入it这俩个参数后,容器创建后会自动进	  入容器中,退出容器后容器自动关闭;
- -t:为容器重新分配一个伪输入终端,通常与-i同时使用;
- -d:以守护(后台)模式运行容器,创建一个容器在后台运行,需要使用
	docker exec进入容器,退出后容器不会关闭;
- -it 创建的容器一般称为交互式容器,-id创建的容器一般称为守护式容器
- --name: 为创建的容器命名
- --restart=always: 保证每次docker服务重启后容器也自动重启
  • 给容器追加 [每次docker服务重启后容器也自动重启] 功能
docker update --restart=always <CONTAINER ID>
  • 进入容器
docker exec 参数 # 在容器中使用exit退出容器时,容器不会关闭
  • 停止容器
docker stop 容器名称
  • 启动容器
docker start 容器名称
  • 删除容器: 如果容器是运行状态则删除失败,需要停止容器才能删除
docker rm 容器名称(容器id)
docker rm `docker ps -aq` # 删除所有容器
  • 查看容器信息
docker inspect 容器名称

演示:

[root@localhost ~]# docker pull centos:centos7

# 创建 centos:centos7 容器命名为a1 并进入 容器内部 命令行
[root@localhost ~]# docker run -it --name=a1 centos:centos7 /bin/bash
# 查看 容器根目录(/) 下的所有文件
[root@5573fb5af2b6 /]# ls
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  usr
# 退出容器
[root@5573fb5af2b6 /]# exit

# 查看当前[正在运行]的容器
[root@localhost ~]# docker ps
# 查看所有容器[包括正在运行的和不在运行的]

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5573fb5af2b6 centos:centos7 “/bin/bash” 6 minutes ago Exited (127) 2 minutes ago a1

# 创建 centos:centos7 容器命名为a2 并后台运行该容器
[root@localhost ~]# docker run -id --name=a2 centos:centos7 /bin/bash
# 再次查看所有容器[包括正在运行的和不在运行的]
[root@localhost ~]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ef50529138dd centos:centos7 “/bin/bash” 42 seconds ago Up 41 seconds a2
5573fb5af2b6 centos:centos7 “/bin/bash” 6 minutes ago Exited (127) 2 minutes ago a1

# 以命令行的形式进入容器
[root@localhost ~]# docker exec -it a2 /bin/bash
[root@ef50529138dd /]# ls
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  usr
[root@ef50529138dd /]# exit
exit
# 注意 使用[docker exec 参数]进入容器后 在容器中执行退出容器的命令行后 仅会退出容器而不会关闭容器
[root@localhost ~]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ef50529138dd centos:centos7 “/bin/bash” 10 minutes ago Up 10 minutes a2
5573fb5af2b6 centos:centos7 “/bin/bash” 16 minutes ago Exited (127) 12 minutes ago a1

# 关闭容器
[root@localhost ~]# docker stop a2
a2
# 查看该容器是否停掉了,会发现 a2 已停掉了
[root@localhost ~]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ef50529138dd centos:centos7 “/bin/bash” 20 minutes ago Exited (137) 49 seconds ago a2
5573fb5af2b6 centos:centos7 “/bin/bash” 25 minutes ago Exited (127) 22 minutes ago a1

# 查看容器详细信息
[root@localhost ~]# docker inspect a2

# 根据 容器名称(容器id) 删除容器 以及 一次性删除所有容器
[root@localhost ~]# docker rm a2
a2
[root@localhost ~]# docker rm 5573fb5af2b6 
5573fb5af2b6
[root@localhost ~]# docker rm `docker ps -aq`

Docker配置数据卷

  • 创建容器时,使用-v参数设置数据卷

    docker run ... -v 宿主机目录(文件):容器内目录(文件) ...
    
  • 注意事项:

    • 目录必须是绝对路径
    • 如果目录不存在,会自动创建目录
    • 可以挂载多个数据卷
[root@localhost ~]# docker run -it --name=a1 \
-v ~/data2:/root/data2 \
-v ~/data3:/root/data3 \
centos:centos7
[root@c645b06d2fee /]# cd ~
[root@c645b06d2fee ~]# ls -ll
total 4
-rw-------. 1 root root 3416 Nov 13 01:55 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Dec 26 14:32 data2
drwxr-xr-x. 2 root root    6 Dec 26 14:32 data3
[root@c645b06d2fee ~]# exit
exit
[root@localhost ~]# ls -ll
total 4
-rw-------. 1 root root 1247 Dec 26 07:50 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Dec 26 09:32 data2
drwxr-xr-x. 2 root root    6 Dec 26 09:32 data3
  • 多容器进行数据交换 之 多个容器挂载同一个数据卷
# 配置a3的数据卷
[root@localhost ~]# docker run -id --name=a3 \
-v ~/data_3_4:/root/data \
centos:centos7
6ff3ff5fa23dd5392d473c038e9ec0ef9e725d1ace5921a12cac1e777ec9ca00

# 配置a4的数据卷
[root@localhost ~]# docker run -id --name=a4 \
-v ~/data_3_4:/root/data \
centos:centos7

# 在宿主机数据卷目录创建一个文件
[root@localhost ~]# ls
anaconda-ks.cfg  data2  data3  data_3_4
[root@localhost ~]# touch data_3_4/HELLO_WORLD.txt

# 分别进入 a3,a4 中查看是否成功
# 进入 a3 容器查看
[root@localhost ~]# docker exec -it a3 /bin/bash
[root@6ff3ff5fa23d /]# cd ~ && ls -ll
total 4
-rw-------. 1 root root 3416 Nov 13 01:55 anaconda-ks.cfg
drwxr-xr-x. 2 root root   29 Dec 26 14:39 data
[root@6ff3ff5fa23d ~]# exit                        
exit

# 进入 a4 容器查看
[root@localhost ~]# docker exec -it a4 /bin/bash
[root@299ac4562bf3 /]# cd ~ && ls -ll
total 4
-rw-------. 1 root root 3416 Nov 13 01:55 anaconda-ks.cfg
drwxr-xr-x. 2 root root   29 Dec 26 14:39 data
[root@299ac4562bf3 ~]# exit                        
exit
  • 多容器进行数据交换 之 使用数据卷容器

    • 创建并启动 b3 数据卷容器,使用-v参数设置数据卷

      [root@localhost ~]# docker run -id --name=b3 -v /volume centos:centos7
      
    • 创建并启动 b1 b2 容器,使用 --volumes-from 参数设置数据卷

      [root@localhost ~]# docker run -id --name=b1 --volumes-from b3 centos:centos7
      [root@localhost ~]# docker run -id --name=b2 --volumes-from b3 centos:centos7
      
    • 在b3 /volume目录下创建一个文件,再去b1 b2中查看是否存在

      [root@localhost ~]# docker exec -it b3 /bin/bash
      [root@18403aab4131 /]# touch /volume/HELLO_WORLD.txt && exit
      exit
      
      
      [root@localhost ~]# docker exec -it b1 /bin/bash
      [root@c7f56b509db2 /]# cd /volume/ && ls -ll && exit
      total 0
      -rw-r--r--. 1 root root 0 Dec 26 15:13 HELLO_WORLD.txt
      exit
      
      
      [root@localhost ~]# docker exec -it b2 /bin/bash
      [root@c1f215ccbcfb /]# cd /volume/ && ls -ll && exit
      total 0
      -rw-r--r--. 1 root root 0 Dec 26 15:13 HELLO_WORLD.txt
      exit
      
  • 数据卷总结

    • 数据卷概念

      • 宿主机的一个目录或文件
    • 数据卷作用

      • 容器数据持久化
      • 客户端和容器数据交换
      • 容器健数据交换
    • 数据卷容器

      • 创建一个容器,挂载一个目录,让其它容器继承自该容器

        (–volume-from)

      • 通过简单方式实现数据卷配置,容器目录映射宿主机目录


Docker应用部署

  • MySQL使用Docker部署安装

    # 搜索 MySQL56 镜像
    [root@localhost ~]# docker search mysql
    
    # 拉取 MySQL56 镜像
    [root@localhost ~]# docker pull mysql:5.6
    
    # 创建容器 并设置 端口映射 以及 目录映射
    [root@localhost ~]# mkdir -p /usr/local/mysql56 && cd /usr/local/mysql56
    
    # 运行MySQL56
    [root@localhost mysql56]# 
    docker run -id \
    -p 13306:3306 \
    --name=mysql56 \
    -v $PWD/conf:/etc/mysql/conf.d \
    -v $PWD/logs:/logs \
    -v $PWD/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=root \
    mysql:5.6
    
    # 宿主机连接MySQL
    [root@localhost mysql56]# docker exec -it mysql56 /bin/bash
    root@bd978fbf09d0:/# mysql -uroot -proot
    
    Warning: Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 4
    Server version: 5.6.50 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
    
    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> quit
    Bye
    root@bd978fbf09d0:/# exit
    exit
    [root@localhost conf]# 
    
    [root@localhost mysql56]# 
    docker run -id \
    -p 13306:3306 \
    --name=mysql56 \
    -v $PWD/conf:/etc/mysql/conf.d \
    -v $PWD/logs:/logs \
    -v $PWD/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=root \
    mysql:5.6
    
    • 参数说明:
      • -p 13306:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
      • -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
      • -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
      • -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
      • **-e MYSQL_ROOT_PASSWORD=root:**初始化 root 用户的密码。
  • Tomcat使用Docker部署安装

    # 搜索 Tomcat 镜像
    [root@localhost ~]# docker search tomcat
    
    # 拉取 Tomcat 镜像
    [root@localhost ~]# docker pull tomcat
    
    # 创建容器,设置端口映射、目录映射
    [root@localhost ~]# mkdir -p /usr/local/tomcat && cd /usr/local/tomcat
    
    [root@localhost tomcat]# docker run -id --name=tomcat -p 8080:8080 -v $PWD:/usr/local/tomcat/webapps tomcat
    
    [root@localhost ~]# docker exec -it tomcat /bin/bash
    root@9dbd2e82b274:/usr/local/tomcat# mv webapps.dist webapps && cd webapps/webapps.dist
    root@9dbd2e82b274:/usr/local/webapps.dist# mv ./* ../
    
    • 参数说明:

      • **-p 8080:8080:**将容器的8080端口映射到主机的8080端口
      • **-v $PWD:/usr/local/tomcat/webapps:**将主机中当前目录挂载到容器的webapps
  • Redis使用Docker部署安装

    # 搜索 Redis 镜像
    [root@localhost ~]# docker search redis
    
    # 创建容器,设置端口映射
    [root@localhost ~]#  docker run -id --name=redis -p 6379:6379 --restart=always redis:5.0.7
    
    # 使用外部机器连接redis
    C:\Dev\Env\Redis>redis-cli.exe -h 192.168.186.132 -p 6379
    

镜像制作

  • 容器转镜像

    docker commit 容器id 镜像名称:版本号
    docker save -o 压缩文件名称 镜像名称:版本号
    docker load -i 压缩文件名称
    
    • 注意:新的镜像制作后,原本容器中挂载的目录将失效, 索引一般在恢复镜像创建容器容器的时候需要重新挂载。
  • dockerfile

    关键字作用备注
    FROM指定父镜像指定dockerfile基于那个image构建
    MAINTAINER作者信息用来标明这个dockerfile谁写的
    LABEL标签用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看
    RUN执行命令执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN [“command” , “param1”,“param2”]
    CMD容器启动命令提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD [“command” , “param1”,“param2”]
    ENTRYPOINT入口一般在制作一些执行就关闭的容器中会使用
    COPY复制文件build的时候复制文件到image中
    ADD添加文件build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务
    ENV环境变量指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value
    ARG构建参数构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数
    VOLUME定义外部可以挂载的数据卷指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME [“目录”]
    EXPOSE暴露端口定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp
    WORKDIR工作目录指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径
    USER指定执行用户指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户
    HEALTHCHECK健康检查指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制
    ONBUILD触发器当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大
    STOPSIGNAL发送信号量到宿主机该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。
    SHELL指定执行脚本的shell指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shell
  • 容器镜像互相转换案例:

# 查看当前[正在运行]的容器
[root@localhost ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2b70748c87b8 tomcat “catalina.sh run” 17 minutes ago Up 17 minutes 0.0.0.0:8080->8080/tcp tomcat

# 将 本地 做好的 镜像 打包,做成特定的 [软件名称:版本号] 的形式
[root@localhost ~]# docker commit 2b70748c87b8 my_tomcat:1.0
sha256:2568b231076e5d4f1605e460c394369b01d62a15a927a0da529cd44ead6ef3b8
# 将 镜像文件 压缩 存储到 指定文件名 的压缩文件中(模拟拷贝自己做的镜像给同事用)
[root@localhost ~]# docker save -o my_tomcat.tar my_tomcat:1.0
# 将 镜像的压缩文件 解压后 安装到docker 镜像库中(模拟拷贝自己做的镜像给同事用)
[root@localhost ~]# docker load -i my_tomcat.tar
Loaded image: my_tomcat:1.0
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
my_tomcat    1.0       2568b231076e   2 minutes ago   649MB
tomcat       9         feba8d001e3f   8 days ago      649MB
[root@localhost ~]# 
  • Dockerfile 案例一
自定义centos7镜像。要求:
1. 默认登录路径为 /usr
2. 可以使用vim

# 编写 docker 配置文件
[root@localhost ~]# vim centos_dockerfile
FROM centos:centos7
MAINTAINER Twinkle <Twinkle18998@163.com>

RUN yum install -y vim
WORKDIR /usr

cmd /bin/bash

# 文件编写完成执行命令构建
[root@localhost ~]# docker build -f ./centos_dockerfile -t my_centos:1 .
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
my_centos    1         994f30d7c7b2   About a minute ago   353MB
  • Dockerfile 案例二
定义dockerfile,发布SpringBoot项目


[root@localhost ~]# rz
[root@localhost ~]# ls -ll
total 662036
-rw-------. 1 root root      1247 Dec 26 07:50 anaconda-ks.cfg
-rw-r--r--. 1 root root       114 Dec 26 21:22 centos_dockerfile
-rw-r--r--. 1 root root  16999192 Dec 26 21:41 DAY66_DOCKER_SPRINGBOOT-0.0.1-SNAPSHOT.jar
-rw-------. 1 root root 660911616 Dec 26 12:44 my_tomcat.tar


[root@localhost ~]# vim springboot_dockerfile
FROM java:8
MAINTAINER Twinkle <Twinkle18998@163.com>

ADD DAY66_DOCKER_SPRINGBOOT-0.0.1-SNAPSHOT.jar app.jar
CMD java -jar app.jar

#文件编写完成执行命令构建
[root@localhost ~]# docker build -f ./springboot_dockerfile -t app .
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
app          latest    7a4973ac8691   About a minute ago   660MB

# 守护进程创建容器
[root@localhost ~]# docker run -id \
--name=app \
-p 8888:8080 \
app

服务编排(DockerCompose)

  • 安装DockerCompose
# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 
[root@localhost ~]# curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/docker-compose

# 设置文件可执行权限 
[root@localhost ~]# chmod +x /usr/local/docker-compose

# 查看版本信息 
[root@localhost ~]# /usr/local/docker-compose -version
docker-compose version 1.22.0, build f46880fe
  • 卸载Docker Compose
# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/docker-compose
  • 使用 Docker Compose 编排 Nginx+SpringBoot 项目
# 创建docker-compose工作目录
[root@localhost ~]# mkdir ~/docker-compose-workspace
[root@localhost ~]# cd ~/docker-compose-workspace

# 编写  docker-compose.yml 配置文件
[root@localhost docker-compose-workspace]# vim docker-compose.yml
version: '3'
services:
  nginx:
   image: nginx
   ports:
    - 80:80
   links:
    - app
   volumes:
    - ./nginx/conf.d:/etc/nginx/conf.d
  app:
    image: app
    expose:
      - "8080"
      
# 创建./nginx/conf.d目录
[root@localhost docker-compose-workspace]# mkdir -p ./nginx/conf.d

# 在./nginx/conf.d目录下 编写app_nginx.conf文件
[root@localhost docker-compose-workspace]# vim ./nginx/conf.d/app_nginx.conf
server {
    listen 80;
    access_log off;

    location / {
        proxy_pass http://app:8080;
    }
   
}

# 在 ~/docker-compose-workspace 目录下 使用docker-compose 启动容器
[root@localhost docker-compose-workspace]# /usr/local/docker-compose up

# 测试访问
http://192.168.186.133/hello

Docker 私有仓库

  • 私有仓库的搭建
# 1、拉取私有仓库镜像 
[root@localhost ~]# docker pull registry
y

# 2、启动私有仓库容器 
[root@localhost ~]# docker run -id --name=registry -p 5000:5000 registry

# 3、打开浏览器 输入地址http://私有仓库服务器ip:5000/v2/_catalog,看到{"repositories":[]} 表示私有仓库 搭建成功

# 4、修改daemon.json   
[root@localhost ~]# vim /etc/docker/daemon.json 
# 在上述文件中添加一个key,保存退出。此步用于让 docker 信任私有仓库地址;注意将私有仓库服务器ip修改为自己私有仓库服务器真实ip,{"insecure-registries":["私有仓库服务器ip:5000"]} 
{
  "registry-mirrors": ["https://3x91x64k.mirror.aliyuncs.com"],
  "insecure-registries": ["192.168.186.133:5000"]
}

# 5、重启docker 服务 
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# docker start registry
  • 将镜像上传至私有仓库
# 1、标记镜像为私有仓库的镜像     
[root@localhost ~]# docker tag centos:7 192.168.186.133:5000/centos:7
 
# 2、上传标记的镜像     
[root@localhost ~]# docker push 192.168.186.133:5000/centos:7
  • 从私有仓库拉取镜像
#拉取镜像 
[root@localhost ~]# docker pull 私有仓库服务器ip:5000/centos:7
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值