• Docker:安装和操作


    Docker

    基本概念

    Docker架构

    • Docker使用客户端-服务器架构
    • Docker客户端与Docker守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作

    相关描述

    Docker 镜像(Images)

    • Docker 镜像是用于创建 Docker 容器的模板,比如 mysql、Nginx等
    • 相当于是一个 root 文件系统

    Docker 容器(Container)

    • 容器是独立运行的一个或一组应用,是镜像运行时的实体。
    • 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样。容器可以被创建、启动、停止、删除、暂停等

    Docker 客户端(Client)

    • Docker 客户端通过命令行或者其他工具使用 Docker SDK 与 Docker 的守护进程通信。

    Docker 主机(Host)

    • 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

    Docker Registry

    • Docker 仓库用来保存镜像,仓库可看成一个代码控制中心,用来保存镜像。
    • Docker Hub 提供了庞大的镜像集合供使用。
    • 一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像
    • 通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

    Docker Machine

    • Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

    应用场景

    • 快速,一致地交付您的应用程序:容器非常适合持续集成和持续交付(CI / CD)工作流程

    • 响应式部署和扩展:Docker 是基于容器的平台,允许高度可移植的工作负载

    • 在同一硬件上运行更多工作负载:Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案

    Docker安装和使用

    自动安装

    使用官方安装脚本自动安装

      curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    

    使用国内 daocloud 一键安装命令

      curl -sSL https://get.daocloud.io/docker | sh
    

    手动安装

    卸载旧版本

      Docker 的旧版本被称为 docker,docker.io 或 docker-engine
      $ sudo apt-get remove docker docker-engine docker.io containerd runc
    

    当前版本

    • 当前称为 Docker Engine-Community 软件包 docker-ce

    • 两种安装方式

      • 使用 Docker 仓库进行安装

        • 在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库

        • 设置仓库

          • 更新 apt 包索引

            $ sudo apt-get update
            
          • 安装 apt 依赖包,用于通过HTTPS来获取仓库

            $ sudo apt-get install 
                  apt-transport-https 
                  ca-certificates 
                  curl 
                  gnupg-agent 
                  software-properties-common
            
          • 添加 Docker 的官方 GPG 密钥

            curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
            
          • 验证您现在是否拥有带有指纹的密钥

            • 通过搜索指纹的后8个字符

                $ sudo apt-key fingerprint 0EBFCD88	    
                pub rsa4096 2017-02-22 [SCEA]
                      9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
                uid      [ unknown] Docker Release (CE deb) <docker@docker.com>
                sub rsa4096 2017-02-22 [S]
              
          • 使用以下指令设置稳定版仓库

            $ sudo add-apt-repository 
                  "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ 
                  $(lsb_release -cs) 
                  stable"
            
        • 安装 Docker Engine-Community

          • 更新 apt 包索引

            $ sudo apt-get update
            
          • 安装最新版本的 Docker Engine-Community 和 containerd

            $ sudo apt-get install docker-ce docker-ce-cli containerd.io
            
          • 安装特定版本的 Docker Engine-Community

            • 在仓库中列出可用版本

                $ apt-cache madison docker-ce
              
            • 然后选择一种安装

              • 使用第二列中的版本字符串安装特定版本,例如 5:18.09.13-0ubuntu-xenial
                $ sudo apt-get install docker-ce=<5:18.09.13-0ubuntu-xenial> docker-ce-cli=<5:18.09.13-0ubuntu-xenial> containerd.io
          • 测试 Docker 是否安装成功

            $ sudo docker run hello-world
            
      • 使用 Shell 脚本进行安装

        • Docker 在 get.docker.com 和 test.docker.com 上提供了方便脚本
    • 设置用户权限

      • 避免每次命令都输入sudo
      • sudo usermod -a -G docker $USER
      • 执行后须注销重新登录

    基本操作

    启动与停止

    • 启动

      sudo service docker start
      
    • 停止

      sudo service docker stop
      
    • 重启

      sudo service docker restart
      

    镜像操作

    • 列出镜像

      docker images
      
    • 搜索镜像

      docker search django
      
    • 拉取镜像

      • 要想获取某个镜像,我们可以使用pull命令,从仓库中拉取镜像到本地
        docker pull hackeryx/ubuntu:16.04
    • 删除镜像

      • docker image rm 镜像名或镜像id
    • 镜像备份与迁移

      • 通过save命令将镜像打包成文件,拷贝给别人使用

        • docker save -o 保存的文件名 镜像名
        • docker save -o ./ubuntu.tar ubuntu
      • 在拿到镜像文件后,可以通过load方法,将镜像加载到本地

        • docker load -i ./ubuntu.tar

    容器操作

    • 创建容器

      • docker run [option] 镜像名 [向启动容器中传入的命令]

        -i 表示以“交互模式”运行容器
        -t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即 分配一个伪终端。
        --name 为创建的容器命名
        -v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录,即 宿主机目录:容器中目录),可以使 用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后 共享到容器上。
        -d 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不 会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。
        -p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射
        -e 为容器设置环境变量
        --network=host 表示将主机的网络环境映射到容器中,容器的网络与主机相同

      • 交互式容器

        • 在容器中可以随意执行linux命令,就是一个ubuntu的环境,当执行exit命令退出时,该容器也随之停止
        • docker run -it --name=ubuntu --network=host hackeryx/ubuntu:16.04 /bin/bash
      • 守护式容器

        • 如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。在容器内部exit退出时,容器也不会停止
        • docker run -itd --name=ubuntu2 --network=host hackeryx/ubuntu:16.04
    • 进入已运行的容器

      • docker exec -it 容器名或容器id 进入后执行的第一个命令
      • docker exec -it ubuntu /bin/bash
    • 查看容器

      • 列出本机所有容器,包括已经终止运行的
      • docker ps -a
    • 停止与启动容器

      • 停止一个已经在运行的容器

        • docker container stop 容器名或容器id
      • 启动一个已经停止的容器

        • docker container start 容器名或容器id
      • kill掉一个已经在运行的容器

        • docker container kill 容器名或容器id
    • 删除容器

      • docker container rm 容器名或容器id
    • 将容器保存为镜像

      • docker commit 容器名 镜像名
    从现在开始,种下梦想中的参天大树
  • 相关阅读:
    RIP2与OSPFv2 动态路由协议区别
    Linux平台下SSD的TRIM指令的最佳使用方式(不区别对待NVMe)
    MLNX网卡驱动安装
    字符串/字符数组读入(char/string)
    【NOIP2016模拟3】图书列表
    活动选择-贪心
    数列极差问题-STL优先队列-贪心
    货物搬运-贪心
    【NOIP 2002提高】均分纸牌-贪心
    【HAOI2008】糖果传递-贪心
  • 原文地址:https://www.cnblogs.com/dc2019/p/13923367.html
Copyright © 2020-2023  润新知