全部产品
Search
文档中心

云服务器 ECS:部署并使用Docker(Alibaba Cloud Linux 3)

更新时间:Apr 21, 2023

本文介绍如何在Alibaba Cloud Linux 3.2104 64位操作系统的ECS实例上部署并使用Docker,适用于熟悉Linux操作系统、刚开始使用阿里云ECS的开发者。

前提条件

已创建Alibaba Cloud Linux 3.2104 64位操作系统的ECS实例。具体操作,请参见自定义购买实例

本教程示例步骤适用于以下ECS实例配置:

  • 实例规格:ecs.g6.large

  • 操作系统:公共镜像Alibaba Cloud Linux 3.2104 64位

  • 网络类型:专有网络VPC

  • IP地址:公网IP

背景信息

本教程主要介绍以下内容:

部署Docker

  1. 远程连接ECS实例。
    关于连接方式的介绍,请参见连接方式概述ECS远程连接操作指南
  2. 运行以下命令,安装dnf。

    dnf是新一代的rpm软件包管理器。

    sudo yum -y install dnf
  3. 安装Docker。

    您可以通过以下任一方式安装Docker:

    安装dnf源中默认的Docker(podman-docker)

    1. 运行以下命令,安装podman-docker。

      sudo dnf -y install docker
    2. 运行以下命令,查看Docker是否安装成功。

      docker images

      回显信息如下图所示,表示Docker安装成功。

      adad555
      重要

      该方式安装的podman-docker没有守护进程(systemd),因此您在后续的操作中无需关注podman-docker的运行状态(无需进行systemctl命令的相关操作),直接使用Docker即可。

    安装社区版Docker(docker-ce)

    1. 运行以下命令,添加docker-ce的dnf源。

      sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    2. 运行以下命令,安装Alibaba Cloud Linux 3专用的dnf源兼容插件。

      sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus
    3. 运行以下命令,安装docker-ce。

      sudo dnf -y install docker-ce --nobest

      如果执行命令,出现类似下图的报错信息,您需要注释/etc/yum.repos.d下的CentOS源,注释后重新安装docker-ce。adad566

    4. 运行以下命令,查看docker-ce是否成功安装。

      dnf list docker-ce

      回显信息如下图所示,表示docker-ce成功安装。image

    5. 运行以下命令,启动Docker服务。

      sudo systemctl start docker
    6. 运行以下命令,查看Docker服务的运行状态。

      systemctl status docker

      回显信息如下图所示,表示Docker服务处于运行中的状态。image

      说明

      如果您需要查看Docker的版本,请运行docker -v命令。

使用Docker

Docker有以下基本用法:
  • 管理Docker守护进程。
    systemctl start docker     #运行Docker守护进程
    systemctl stop docker      #停止Docker守护进程
    systemctl restart docker   #重启Docker守护进程
    systemctl enable docker    #设置Docker开机自启动
    systemctl status docker    #查看Docker的运行状态
    说明 通过yum源的方式安装的Docker(podman-docker)没有守护进程(systemd),因此不支持systemctl命令的相关操作。
  • 管理镜像。本文使用的是来自阿里云仓库的Apache镜像。
    docker pull registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5
    • 修改标签。由于阿里云仓库镜像的镜像名称较长,您可以修改镜像标签以便记忆区分。
      docker tag registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5:latest aliweb:v1
    • 查看已有镜像。
      docker images
    • 强制删除镜像。
      docker rmi -f registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5
  • 管理容器。
    • 进入容器。e1abc****是执行docker images命令查询到的ImageId,使用docker run命令进入容器。
      docker run -it e1abc**** /bin/bash
    • 退出容器。使用exit命令退出当前容器。
    • run命令加上–d参数可以在后台运行容器,--name指定容器命名为apache。
      docker run -d --name apache e1abc****
    • 进入后台运行的容器。
      docker exec -it apache /bin/bash
    • 查看容器ID。
      docker ps
    • 将容器做成镜像,命令的参数说明:docker commit <容器ID或容器名> [<仓库名>[:<标签>]]
      docker commit containerID/containerName repository:tag
    • 为了方便测试和恢复,将源镜像运行起来后,再做一个命名简单的镜像做测试。
      docker commit 4c8066cd8**** apachephp:v1
    • 运行容器并将宿主机的8080端口映射到容器里去。
      docker run -d -p 8080:80 apachephp:v1
      在浏览器输入ECS实例IP地址加8080端口访问测试,出现以下内容则说明运行成功。
      说明 ECS实例的安全组入方向规则需要放行8080端口。具体操作,请参见添加安全组规则
      映射结果

制作Docker镜像

  1. 准备Dockerfile内容。
    1. 新建并编辑Dockerfile文件。
      vim Dockerfile
    2. i进入编辑模式,添加以下内容。
      #声明基础镜像来源。
      FROM apachephp:v1
      #声明镜像拥有者。
      MAINTAINER DTSTACK
      #RUN后面接容器运行前需要执行的命令,由于Dockerfile文件不能超过127行,因此当命令较多时建议写到脚本中执行。
      RUN mkdir /dtstact
      #开机启动命令,此处最后一个命令需要是可在前台持续执行的命令,否则容器后台运行时会因为命令执行完而退出。
      ENTRYPOINT ping www.aliyun.com
    3. 按下键盘Esc键,输入:wq并按下enter键,保存并退出Dockerfile文件。
  2. 创建镜像。

    docker build -t webalinux3:v1 .          #使用Dockerfile创建镜像。命令末尾的.是Dockerfile文件的路径,不能忽略。
    docker images                            #查看是否创建成功。
  3. 运行容器并查看容器信息。

    docker run -d webalinux3:v1           #后台运行容器。
    docker ps                             #查看当前运行中的容器。
    docker ps -a                          #查看所有容器,包括未运行的容器。
    docker logs CONTAINER ID/IMAGE        #如未查看到刚才运行的容器,则用容器id或者名称查看启动日志排错。
  4. 制作镜像。
    docker commit fb2844b6**** dtstackweb:v1     #commit参数后添加容器ID和构建新镜像的名称和版本号。
    docker images                                #列出本地(已下载的和本地创建的)镜像。
  5. 将镜像推送至远程仓库。
    默认推送到Docker Hub。您需要先登录Docker,为镜像绑定标签,将镜像命名为Docker用户名/镜像名:标签的格式。最终完成推送。
    docker login --username=dtstack_plus registry.cn-shanghai.aliyuncs.com    #执行后输入镜像仓库密码。
    docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/dtstack123/test:[标签]
    docker push registry.cn-shanghai.aliyuncs.com/dtstack123/test:[标签]

Docker编排工具docker-compose

docker-compose是Docker官方提供的用于定义和运行多个Docker容器的开源容器编排工具。可以使用YAML文件来配置应用程序需要的所有服务,然后使用docker-compose运行命令解析YAML文件配置,创建并启动配置文件的所有docker服务。

docker-compose具有运维成本低、部署效率高等优势。更多信息,请参见Docker官网

步骤一:安装docker-compose

  1. 运行以下命令,安装setuptools。

    pip3 install -U pip setuptools
  2. 运行以下命令,安装Docker-compose。

    pip3 install docker-compose
  3. 运行以下命令,测试docker-compose是否安装成功。

    docker-compose --version

    如果回显信息如下,表示docker-compose已安装成功。

    [root@iZbp12agc67ou72wn1d**** ~]# docker-compose --version
    /usr/local/lib/python3.6/site-packages/paramiko/transport.py:32: CryptographyDeprecationWarning: Python 3.6 is no longer supported by the Python core team. Therefore, support for it is deprecated in cryptography. The next release of cryptography will remove support for Python 3.6.
     from cryptography.hazmat.backends import default_backend
    docker-compose version 1.29.2, build unknown

步骤二:编写docker-compose.yaml文件

  1. 运行以下命令,编辑docker-compose.yaml文件。

    vim docker-compose.yaml
  2. 按下i键,进入编辑模式,新增以下内容。

    本示例以安装WordPress为例。

    version: '3.1'             # 版本信息
    
    services:
    
      wordpress:               # 服务名称         
        image: wordpress       # 镜像名称
        restart: always        # docker启动,当前容器必启动
        ports:
          - 80:80              # 映射端口
        environment:           # 编写环境
          WORDPRESS_DB_HOST: db
          WORDPRESS_DB_USER: wordpress
          WORDPRESS_DB_PASSWORD: 123456
          WORDPRESS_DB_NAME: wordpress
        volumes:               # 映射数据卷
          - wordpress:/var/www/html
    
      db:                      # 服务名称    
        image: mysql:5.7       # 镜像名称
        restart: always        # docker启动,当前容器必启动
        ports:
           - 3306:3306         # 映射端口
        environment:           # 环境变量
          MYSQL_DATABASE: wordpress
          MYSQL_USER: wordpress
          MYSQL_PASSWORD: 123456
          MYSQL_RANDOM_ROOT_PASSWORD: '1'
        volumes:               # 卷挂载路径
          - db:/var/lib/mysql
    
    volumes:
      wordpress:
      db:
  3. Esc键,退出编辑模式,然后输入:wq保存并退出。

步骤三:启动并访问应用

  1. 运行以下命令,启动应用。

    docker-compose up -d
  2. 在浏览器中输入http://云服务器ECS实例的公网IP,即可进入WordPress配置页面,您可以根据界面提示配置相关参数后,访问WordPress。

docker-compose常用命令

docker-compose up -d        #启动容器
docker-compose down         #停止并删除容器
docker-compose start        #启动容器
docker-compose stop         #关闭容器
docker-compose restart      #重启容器
docker-compose rm           #删除已经关闭的容器
docker-compose up           #基于yml创建容器
docker-compose down         #停止并删除容器
docker-compose logs         #查看容器的日志
docker-compose ps           #显示所有容器
dokcer-compose config       #检查配置
docker-compose pull         #拉取依赖镜像