文档中心 云主机 最佳实践 手工部署Docker(CentOS 7.6)
在这篇文章中:

    手工部署Docker(CentOS 7.6)

    简介

    本文介绍了如何在交大云上使用Linux云主机部署Docker,并提供了Docker常用操作及简单的镜像制作过程。

    术语 解释
    Docker Docker是开发人员和系统管理员使用容器开发、部署和运行应用程序的平台。
    镜像 Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
    容器 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

    更多关于Docker、镜像、容器的基础知识,请参见Docker Documentation

    该指导以“CentOS 7.6”操作系统为例,Docker要求64位的系统且内核版本至少为3.10。

    前提条件

    • 云主机需要绑定公网(浮动)IP,具体步骤参见绑定浮动IP

    • 云主机所在安全组添加了如下表所示的安全组规则(默认安全组已添加该规则)。

    方向 类型 协议 端口/范围 远端
    入方向 IPv4 TCP 80 0.0.0.0/0

    部署Docker

    1. 登录云主机。

    2. 添加yum源。

      1
      2
      yum install epel-release -y
      yum clean all
    3. 安装yum-util。

      1
      yum install -y yum-utils device-mapper-persistent-data lvm2
    4. 设置docker yum源。

      1
      yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    5. 安装并运行Docker。

      1
      2
      3
      yum install docker-ce
      systemctl enable docker
      systemctl start docker
    6. 检查安装结果。

      1
      docker --version

      回显如下类似信息,表示Docker安装成功。

      1
      2
      Client: Docker Engine - Community
      Version: 19.03.13

    Docker基本用法

    1. Docker进程管理。

      • 运行Docker

        systemctl start docker

      • 停止Docker

        systemctl stop docker

      • 重启Docker

        systemctl restart docker

    2. 镜像管理。

      • 拉取镜像。此处以Apache和CentOS官方镜像为例。

        docker pull httpd

        docker pull centos

      • 查看已有镜像

        docker images

      • 强制删除镜像

        docker rmi centos

    3. 容器管理。

      • 创建一个容器并运行。

        docker run -it -d -p 80:80 –name datahttpd -v /data/:/var/www/httpd/ httpd

        参数说明如下:

        • -i:以交互模式运行容器,通常与-t同时使用。
        • -t:为容器重新分配一个伪输入终端,通常与-i同时使用。
        • -d:后台运行容器,并返回容器ID。
        • -p:端口映射,格式为“宿主机端口:容器端口”。
        • –name:为容器指定一个名称。
        • -v:把宿主机上的一个目录挂载到镜像里,格式为“宿主机目录:镜像内挂载的路径”,必须为绝对路径。

          img说明:

          上述参数说明中的宿主机表示所创建的云主机。

          示例命令表示:使用镜像httpd,以交互模式启动一个容器,将容器的80端口映射到宿主机的80端口,宿主机的目录/data映射到容器的/var/www/httpd目录,并返回容器ID。

      • 查看容器启动情况。

        docker ps -a

      • 在浏览器输入云主机所绑定的公网IP,访问测试容器运行情况。出现以下内容表示运行成功。

    镜像制作

    通过Dockerfile定制一个简单的Nginx镜像。

    1. 创建一个名为Dockerfile的文件。

      1
      2
      3
      mkdir mynginx
      cd mynginx
      touch Dockerfile
    2. 编辑Dockerfile。

      1
      vim Dockerfile

      增加文件内容如下:

      1
      2
      FROM nginx
      RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

      Dockerfile指令介绍如下。以下仅介绍简单指令,如需了解更多,请参见官方网站:https://hub.docker.com/。

      • FROM语句:表示使用nginx镜像作为基础镜像,一个Dockerfile中FROM是必备的指令,并且必须是第一条指令。
      • RUN语句:格式为RUN <命令>,表示执行echo命令,在显示器中显示一段“Hello, Docker!”的文字。
    3. 构建镜像。

      1
      docker build -t nginx:v3 .
      • -t nginx:v3:指定镜像的名称和版本。
      • .:指定上下文路径,镜像构建命令将该路径下所有的内容打包给Docker引擎帮助构建镜像。
    4. 查看部署的nginx镜像,版本为v3。

      1
      docker images

    出现如下内容,表名该镜像已经创建成功.

    1
    2
    REPOSITORY          TAG             IMAGE ID              CREATED               SIZE
    nginx v3 09422e465d96 10 seconds ago 109 MB