• 01 docker的安装与基本使用


    docker 安装

    1、如果之前安装过docker,需要自行卸载

    #1.卸载依赖
    yum remove docker-ce docker-ce-cli containerd.io
    #2.删除目录
    rm -rf /var/lib/docker   #docker默认的工作路径
    #3.镜像加速器(docker优化)
     - 登录阿里云找到容器镜像服务
     - 找到镜像加速地址
     - 配置使用
    #4.卸载旧的版本
     sudo yum remove docker 
                      docker-client 
                      docker-client-latest 
                      docker-common 
                      docker-latest 
                      docker-latest-logrotate 
                      docker-logrotate 
                      docker-engine
    

    2、初始化系统环境

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    

    3、安装yum源

    wget -O /etc/yum.repos.d/docker-ce.repo https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
    
    yum clean all
    yum makecache
    

    4、安装docker

    yum install docker-ce -y
    

    5、docker优化

    打开阿里云官网  产品  --> 容器与中间件  -->  容器与镜像服务ACR --> 管理控制台 --> 镜像加速器 --> CentOS
    
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["xxx.com"]
    }
    EOF
    systemctl daemon-reload
    systemctl restart docker
    

    6、设置开机自启动

    systemctl enable --now docker
    

    7、检查docker

    # 第一种方式
    docker run -d -P nginx
    
    # 第二种方式
    docker info
    

    docker 的基本使用

    docker 中的三大基本概念

    镜像

    镜像就是启动一个容器的模板。--->QQ.exe

    容器

    容器就是对外提供服务的进程。或者容器就是镜像启动起来的一个实例。---->QQ

    仓库

    仓库是用来存放镜像的地方。

    docker 镜像相关命令

    • 常用镜像仓库

      官方仓库:hub.docker.com
      自己的私有仓库:Harbor
      阿里云私有仓库:registry.cn-hangzhou.aliyuncs.com
      
    • 搜索镜像

      #格式
      	docker search [镜像名称]
      # 实例
      

    • 拉取镜像

      # 格式
      	docker pull [镜像名称]
      # 实例
      [root@Centos7 ~]# docker pull redis
      Using default tag: latest
      latest: Pulling from library/redis
      
      # 层
      a076a628af6f: Already exists 
      f40dd07fe7be: Pull complete 
      ce21c8a3dbee: Pull complete 
      ee99c35818f8: Pull complete 
      56b9a72e68ff: Pull complete 
      3f703e7f380f: Pull complete 
      
      # 镜像ID号(镜像ID号是全球唯一)
      Digest: sha256:0f97c1c9daf5b69b93390ccbe8d3e2971617ec4801fd0882c72bf7cad3a13494
      
      # 镜像下载状态
      Status: Downloaded newer image for redis:latest 
      
      # 镜像的全称(镜像的tag)
      docker.io/library/redis:latest
      
      
    • 查看当前系统上的有哪些镜像

      # 格式
      	docker images 或者 docker image ls
      
      # 参数
      -q : 只显示镜像ID
      [root@Centos7 ~]# docker images -q
      621ceef7494a
      f6d0b4767a6c
      

    • 查找筛选镜像
    # 收藏量大于500的
    [root@docker ~]# docker search -f stars=500 mysql
    INDEX       NAME                           DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    docker.io   docker.io/mysql                MySQL is a widely used, open-source relati...   11028     [OK]       
    docker.io   docker.io/mariadb              MariaDB Server is a high performing open s...   4178      [OK]       
    docker.io   docker.io/mysql/mysql-server   Optimized MySQL Server Docker images. Crea...   820                  [OK]
    
    # 是官方的
    [root@docker ~]# docker search mysql -f is-official=true
    INDEX       NAME                DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    docker.io   docker.io/mysql     MySQL is a widely used, open-source relati...   11028     [OK]       
    docker.io   docker.io/mariadb   MariaDB Server is a high performing open s...   4178      [OK]  
    
    • 获取镜像的详细信息

      # 格式
      	docker inspect [镜像名称或镜像ID]
      
      # 参数
      -f : 格式化输出
      [root@Centos7 ~]# docker inspect -f '{{.Id}}' 621ceef7494a
      sha256:621ceef7494adfcbe0e523593639f6625795cc0dc91a750629367a8c7b3ccebb
      [root@Centos7 ~]# docker inspect -f '{{.ContainerConfig.Hostname}}' redis
      16535cfaf84a
      
    • 登录镜像仓库

      # 格式
      	docker login 
      	注: 默认情况下,docker login登录的是官方仓库,如果登录其他镜像仓库则需要指定镜像仓库的URL连接。
      	
      # 实例
      	[root@Centos7 ~]# docker login registry.cn-hangzhou.aliyuncs.com
              Username: yangyang091022
              Password: 
              WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
              Configure a credential helper to remove this warning. See
              https://docs.docker.com/engine/reference/commandline/login/#credentials-store
      
              Login Succeeded
      	[root@Centos7 ~]# cat ~/.docker/config.json 
          {
              "auths": {
                  "registry.cn-hangzhou.aliyuncs.com": {
                      "auth": "eWFuZ3lhbmcwOTEwMjI6Y2hlbjE4NzkwMDcwODMw"
                  }
              }
          }
      # 参数
      --username|-u : 指定用户名
      --password|-p : 指定密码
      
    • 为镜像标签

      # 镜像标签的构成
      docker.io/library/redis:latest
      docker.io  : 镜像仓库的URL
      library    :镜像仓库命名空间
      redis	   : 镜像名称
      latest	   : 镜像版本号
      
      # 打标签
      	# 格式
      		docker tag [镜像ID]  镜像标签
      [root@Centos7 ~]# docker images
      REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
      redis        latest    621ceef7494a   2 months ago   104MB
      nginx        latest    f6d0b4767a6c   2 months ago   133MB
      [root@Centos7 ~]# docker tag 621ceef7494a registry.cn-hangzhou.aliyuncs.com/alvinos/redis:v2
      [root@Centos7 ~]# docker images
      REPOSITORY                                        TAG       IMAGE ID       CREATED        SIZE
      redis                                             latest    621ceef7494a   2 months ago   104MB
      registry.cn-hangzhou.aliyuncs.com/alvinos/redis   v2        621ceef7494a   2 months ago   104MB
      nginx                                             latest    f6d0b4767a6c   2 months ago   133MB
      
      
    • 镜像上传

      # 格式
      	docker push [镜像标签]
      
      # 注:要想上传镜像,首先得登录镜像仓库,其次设置对应镜像仓库的tag
      
      [root@Centos7 ~]# docker push registry.cn-hangzhou.aliyuncs.com/alvinos/redis:v2
      The push refers to repository [registry.cn-hangzhou.aliyuncs.com/alvinos/redis]
      3480f9cdd491: Pushed 
      a24a292d0184: Pushed 
      f927192cc30c: Pushed 
      1450b8f0019c: Pushed 
      8e14cb7841fa: Pushed 
      cb42413394c4: Pushed 
      v2: digest: sha256:7ef832c720188ac7898dbd8d1e237b0738e94f94fc7e981cb7b8efe84555e892 size: 1572
      
    • 镜像的删除

      # 格式
      	docker rmi [镜像名称或者镜像ID]
      # 实例
      	[root@Centos7 ~]# docker rmi nginx
      # 参数
      	-f  : 强制删除
      	[root@Centos7 ~]# docker rmi -f nginx
          Untagged: nginx:latest
          Untagged: nginx@sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa
       # 注:当有容器正在使用镜像时,强制删除镜像,只能删除镜像的所有tag, 不会删除镜像。
      
    • 清空镜像

      # 格式
      	docker image prune
      
      # 实例
      	[root@Centos7 ~]# docker image prune
          WARNING! This will remove all dangling images.
          Are you sure you want to continue? [y/N] y
          Total reclaimed space: 0B
       # 参数
       -a : 删除所有镜像
       
       [root@Centos7 ~]# docker image prune -a
      WARNING! This will remove all images without at least one container associated to them.
      Are you sure you want to continue? [y/N] y
      Deleted Images:
      untagged: redis:latest
      untagged: redis@sha256:0f97c1c9daf5b69b93390ccbe8d3e2971617ec4801fd0882c72bf7cad3a13494
      untagged: registry.cn-hangzhou.aliyuncs.com/alvinos/redis:v2
      untagged: registry.cn-hangzhou.aliyuncs.com/alvinos/redis@sha256:7ef832c720188ac7898dbd8d1e237b0738e94f94fc7e981cb7b8efe84555e892
      deleted: sha256:621ceef7494adfcbe0e523593639f6625795cc0dc91a750629367a8c7b3ccebb
      deleted: sha256:de66cfbf4712b8ba9ef292e08ef7487be26d9d21b350548e400ae351405d820e
      deleted: sha256:79b2381e35429e8fc04d31b3445f069c22d288bf5c4cba7b7c10004ff78ae201
      deleted: sha256:1d047d19be363b00139990d4d7f392dabdb0809dbc9d0fbe67c1f15b8caed27a
      deleted: sha256:8c41f4e708c37059df28ae1cabc200a6db2fee45bd3a2cadcf70f2765bb68730
      deleted: sha256:b51317bef36fe1900be48402c8a41fcd9cdb6b8950c10209f764473cb8323371
      
      Total reclaimed space: 35.04MB
      [root@Centos7 ~]# 
      
      
    • 查看镜像历史(镜像的构建历史)

      # 格式
      	docker history [镜像ID或镜像名称]
      # 实例
      [root@Centos7 ~]# docker history alpine
      IMAGE          CREATED        CREATED BY                                      SIZE      COMMENT
      7731472c3f2a   2 months ago   /bin/sh -c #(nop)  CMD ["/bin/sh"]              0B        
      <missing>      2 months ago   /bin/sh -c #(nop) ADD file:edbe213ae0c825a5b…   5.61MB    
      
    • 保存镜像(commit)

      # 保存正在运行的容器直接为镜像
      # 格式:
      	docker commit [容器ID|容器名称]
      	
      # 实例
      [root@Centos7 ~]# docker commit -a "baim0" -m "这是一个docker镜像" -p be3b92e2886b  test:v1
      sha256:4a06cd2af42877b5e2908073061f7ae1bf9e308a470bdfc0c6f906ef368aaed8
      [root@Centos7 ~]# docker images
      REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
      test         v1        4a06cd2af428   5 seconds ago   104MB
      
    • 保存镜像(import/export)

      # 保存正在运行的容器为镜像压缩包
      ## 保存容器为镜像
      	docker export [容器的ID] > [包名称]
      	# 实例
      		[root@Centos7 ~]# docker export be3b92e2886b > redis.tar
              [root@Centos7 ~]# ll | grep redis
              -rw-r--r--. 1 root root 104178688 Mar 18 17:30 redis.tar
              
      ## docker import [包名称] [自定义镜像名称]
      	# 实例
      	[root@Centos7 ~]# docker import redis.tar test:v3
          sha256:7776db3402fb8d59f6121a3b1977b5e7016f4064cf59218fd1b06637cb0fca87
          [root@Centos7 ~]# docker images
          REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
          test         v3        7776db3402fb   6 seconds ago   101MB
      
    • 保存镜像(save/load)

      # 保存镜像为压缩包
      # 保存镜像的格式:
      	docker save [镜像名称|镜像ID] > [包名称]
          [root@Centos7 ~]# docker save 7731472c3f2a > apline.tar
          [root@Centos7 ~]# ll	
          -rw-r--r--. 1 root root   5888000 Mar 18 17:36 apline.tar
          [root@Centos7 ~]# docker save -o apline-two.tar 7731472c3f2a
          [root@Centos7 ~]# ll
          total 148692
          -rw-r--r--. 1 root root   5888000 Mar 18 17:36 apline.tar
          -rw-------. 1 root root   5888000 Mar 18 17:37 apline-two.tar
      
      # 导入镜像的格式:
      	docker load < [包名称]
      	
      	[root@Centos7 ~]# docker load < apline.tar 
          c04d1437198b: Loading layer [========================================>]   5.88MB/5.88MB
          Loaded image ID: sha256:7731472c3f2a25edbb9c085c78f42ec71259f2b83485aa60648276d408865839
          [root@Centos7 ~]# docker images
          REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
          <none>       <none>    7731472c3f2a   2 months ago     5.61MB
      
      # 注:save/load保存镜像无法自定义镜像名称,save保存镜像时如果使用ID保存则load导入镜像无名称,使用名称导入时才有名称。
      [root@Centos7 ~]# docker images
      REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
      busybox      latest    b97242f89c8a   2 months ago     1.23MB
      [root@Centos7 ~]# docker save busybox:latest > busybox.tar
      [root@Centos7 ~]# ll
      total 150120
      -rw-r--r--. 1 root root   1459200 Mar 18 17:43 busybox.tar
      [root@Centos7 ~]# docker rmi b97242f89c8a
      Untagged: busybox:latest
      Untagged: busybox@sha256:c5439d7db88ab5423999530349d327b04279ad3161d7596d2126dfb5b02bfd1f
      Deleted: sha256:b97242f89c8a29d13aea12843a08441a4bbfc33528f55b60366c1d8f6923d0d4
      Deleted: sha256:0064d0478d0060343cb2888ff3e91e718f0bffe9994162e8a4b310adb2a5ff74
      [root@Centos7 ~]# docker images
      REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
      [root@Centos7 ~]# docker load < busybox.tar 
      0064d0478d00: Loading layer [==================================================>]   1.45MB/1.45MB
      Loaded image: busybox:latest
      [root@Centos7 ~]# docker images
      REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
      busybox      latest    b97242f89c8a   2 months ago     1.23MB
      
      
    • 保存镜像三种方式的区别

      1、export保存的镜像体积要小于save(save保存更完全,export保存会丢掉一些不必要的数据)
      2、export可以重命名镜像名称而save则不行
      3、save可以同时保存多个镜像而export则不行
      
  • 相关阅读:
    为什么Java不支持多重继承
    thymeleaf生成页面时报错:An error happened during template parsing (template: "class path resource [templates/index.html]")的解决办法
    MySQL操作数据时区分大小写
    java.lang.NoClassDefFoundError: com/jhlabs/image/RippleFilter
    多线程学习系列:(六)线程池基础下
    多线程学习系列:(四)线程同步基础下
    多线程学习系列:(八)Winform中多线程编程基础上
    多线程学习系列:(五)线程池基础上
    多线程学习系列:(七)基于多线程的基本组件
    HTTP头部
  • 原文地址:https://www.cnblogs.com/zhaokunhao/p/14919754.html
Copyright © 2020-2023  润新知