更新时间:2024-12-25 GMT+08:00
分享

手工部署Docker(Debian)

简介

本文介绍了如何在华为云上使用弹性云服务器的Linux实例手工部署Docker,并提供了Docker常用操作及简单的镜像制作过程。

表1 Docker相关术语

术语

解释

Docker

Docker是开发人员和系统管理员使用容器开发、部署和运行应用程序的平台。

镜像

Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

容器

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

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

您还可以选择Solution as Code一键式部署方式自动部署Docker Swarm集群,详细内容请参见快速部署高可用的Docker Swarm集群

前提条件

  • 弹性云服务器需要绑定弹性公网IP,具体步骤参见申请弹性公网IP
  • 弹性云服务器所在安全组添加了如下表所示的安全组规则,具体步骤参见添加安全组规则
    表2 安全组规则

    方向

    优先级

    策略

    类型

    协议端口

    源地址

    入方向

    1

    允许

    IPv4

    TCP: 80

    0.0.0.0/0

资源和成本规划

本次实践所用的资源配置及软件版本如表3中所示。当您使用不同的硬件规格或软件版本时,本指导中的命令及参数可能会发生改变,需要您根据实际情况进行调整。

表3 资源和成本规划

资源

资源说明

成本说明

虚拟私有云VPC

VPC网段:192.168.0.0/16

免费

虚拟私有云子网

  • 可用区:可用区1
  • 子网网段:192.168.0.0/24

免费

安全组

  • 优先级:1
  • 策略:允许
  • 类型:IPv4
  • 协议端口:TCP: 80
  • 源地址:0.0.0.0/0

免费

弹性云服务器

  • 计费模式:包年/包月
  • 可用区:可用区1
  • 规格:c7.large.2
  • 镜像:Debian 12.0.0 64bit
  • 系统盘:40G
  • 弹性公网IP:现在购买
  • 线路:全动态BGP
  • 公网带宽:按流量计费
  • 带宽大小:5 Mbit/s

ECS涉及以下几项费用:

  • 云服务器
  • 云硬盘
  • 弹性公网IP

具体的计费方式及标准请参考计费模式概述

Docker

获取方式:

http://mirrors.huaweicloud.com/docker-ce/linux/debian/gpg

免费

镜像

获取方式:

https://hub.atomgit.com/repos

免费

部署Docker

  1. 登录弹性云服务器。
  2. 更新软件包列表。

    sudo apt update

  3. 安装Docker所需依赖包。

    sudo apt-get -y install ca-certificates curl

  4. 创建/etc/apt/keyrings目录,并下载Docker的官方GPG密钥到该目录。

    sudo install -m 0755 -d /etc/apt/keyrings

    sudo curl -fsSL http://mirrors.huaweicloud.com/docker-ce/linux/debian/gpg -o /etc/apt/keyrings/docker.asc

    sudo chmod a+r /etc/apt/keyrings/docker.asc

  5. 将Docker仓库添加到系统的软件源列表。
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] http://mirrors.huaweicloud.com/docker-ce/linux/debian \
      $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  6. 更新软件包列表。

    sudo apt update

  7. 安装并运行Docker。

    sudo apt-get install -y docker-ce docker-ce-cli containerd.io

    sudo systemctl start docker

    sudo systemctl enable docker

  8. 查看docker版本信息。

    docker -v

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

    Docker version 27.1.1, build 6312585

配置镜像加速器

  • “华北-乌兰察布一”、“亚太-雅加达”、“拉美-墨西哥城一”、“拉美-墨西哥城二”和“拉美-圣保罗一”区域不支持该功能,如需使用,请切换到其他区域。
  • 通过docker pull命令下载Docker镜像时,往往会因为网络原因而需要很长时间,甚至可能因超时而下载失败。建议在拉取镜像前先参考以下方法配置镜像加速器,再进行后续操作。
  • 华为云不会强制用户在安装好Docker后,必须要配置加速器。但若是在用户生产环境中,建议提前配置好加速器,以免后续再配置时,需要重启服务,导致生产环境停服。
  1. 登录容器镜像服务控制台
  2. 在左侧导航栏选择“镜像资源 > 镜像中心”
  3. 单击“镜像加速器”,在弹框中找到“加速器地址”,单击,将加速器地址复制到剪切板。
    图1 镜像加速器地址
  4. 登录弹性云服务器。
  5. 创建并编辑/etc/docker/daemon.json文件(如果文件不存在,则创建)。

    vi /etc/docker/daemon.json

  6. 在该文件内添加如下内容:
    {
        "registry-mirrors": ["加速器地址"]
    }
  7. Esc键退出编辑模式,并输入:wq保存后退出。
  8. 重启Docker使配置生效。

    systemctl restart docker

  9. 执行以下命令,当Registry Mirrors字段的地址为加速器的地址时,说明加速器已经配置成功。
    docker info
    图2 Registry Mirrors信息

Docker基本用法

  1. Docker进程管理。
    • 运行Docker

      systemctl start docker

    • 停止Docker

      systemctl stop docker

    • 重启Docker

      systemctl restart docker

  2. 镜像管理。
    1. 拉取镜像。您可以从镜像仓库这里获取,以Debian镜像为例,获取方法如下:
      1. 镜像仓库的搜索框中输入Debian。

      2. 在搜索结果中选择需要获取的镜像,单击进入该镜像详情。

      3. 在镜像详情页面,复制拉取镜像的命令。

        docker pull hub.atomgit.com/amd64/debian:rc-buggy

    2. 查看已有镜像

      docker images

    3. 强制删除镜像

      docker rmi hub.atomgit.com/amd64/debian:rc-buggy

  3. 容器管理。
    1. 创建一个容器并运行。

      docker pull hub.atomgit.com/amd64/httpd:2.4.57-alpine

      docker run -it -d -p 80:80 --name datahttpd -v /data/:/var/www/httpd/ hub.atomgit.com/amd64/httpd:2.4.57-alpine

      参数说明如下:

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

      上述参数说明中的宿主机表示所创建的弹性云服务器实例。

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

    2. 查看容器启动情况。

      docker ps -a

    3. 在浏览器输入弹性云服务器所绑定的弹性公网IP,访问测试容器运行情况。出现以下内容表示运行成功。

镜像制作

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

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

    mkdir mynginx

    cd mynginx

    touch Dockerfile

  2. 编辑Dockerfile。

    vim Dockerfile

    增加文件内容如下:

    FROM hub.atomgit.com/amd64/nginx:1.25.2-perl
    MAINTAINER DTSTACK 
    RUN mkdir /dtstact 
    ENTRYPOINT ping https://www.example.com/

    Dockerfile指令介绍如下。

    • FROM语句:表示使用nginx镜像作为基础镜像,一个Dockerfile中FROM是必备的指令,并且必须是第一条指令。
    • MAINTAINER语句:声明创建镜像的作者信息:用户名、邮箱,非必须参数。
    • RUN语句:格式为RUN <命令>,表示执行echo命令,在显示器中显示一段“Hello, Docker!”的文字。
    • ENTRYPOINT语句:用来指定容器启动时的默认运行的命令。
  3. 构建镜像。

    docker build -t nginx:v3 .

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

    docker images

相关文档