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 容器名 镜像名
posted @ 2019-11-20 23:37  颗粒成仓  阅读(96)  评论(0编辑  收藏  举报