Docker安装和配置

更新时间:

本实验指导您在服务器上安装和使用DockerDocker Compose

场景简介

Docker是第一个广泛流行的开源的容器引擎,通过容器技术我们可以实现资源隔离的超轻量级的虚拟化。在本实验中,我们会带领大家学习如何在Alibaba Cloud Linux 3操作系统上安装和使用DockerDocker Compose

费用说明

本实验时长1个小时,预计产生费用为0.43元。如果您调整了资源规格、使用时长,或执行了本方案以外的操作,可能导致费用发生变化,请以控制台显示的实际价格和最终账单为准。

背景知识

本场景主要涉及以下云产品和服务:

  • 云服务器ECS

  • 容器技术

    容器是一个超轻量的虚拟化技术,通过容器技术我们可以实现在共用操作系统内核的情况下,以资源隔离的方式运行应用程序和其依赖项的。当镜像运行时,它是运行在独立的环境中,并不会和其他的应用共享主机操作系统的内存、CPU或磁盘。这保证了容器内的进程不会影响到容器外的任何进程。

    容器技术为应用程序的部署带来了巨大的变化,开发者可以将应用所需的所有必要组件都打包为单个镜像,以镜像的形式发布应用。这个镜像是可以在宿主机之间重复使用,同时和在运行时和宿主机内的其他应用互不冲突。为DevOps自动化运维,云原生技术、微服务架构提供了良好的底层技术支持。

  • Docker

    Docker是第一个广泛流行的开源的应用容器引擎。通过Docker开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker底层用的Linuxcgroupnamespace这两项技术来实现应用隔离,一个完整的Docker有以下几个部分组成:

    • Docker Client客户端。

    • Docker Daemon守护进程。

    • Docker Image镜像。

    • Docker Container容器。

    • Docker Registry仓库。

    • Networks网络模型

    • Volumes存储卷模型。

    image

创建实验资源

  1. 在实验页面,勾我已阅读并同意《阿里云云起实践平台服务协议》我已授权阿里云云起实践平台创建、读取及释放实操相关资源后,单击开始实操

  2. 创建资源需要5分钟左右的时间,请您耐心等待。

  3. 云产品资源列表,您可以查看本场景涉及的云产品资源信息。

    image

安全设置

资源创建完成后,为了保护您阿里云主账号上资源的安全,请您重置云服务器ECS的登录密码和设置安全组端口。

  1. 重置云服务器ECS的登录密码。

    1. 云产品资源列表的ECS云服务器区域,单击管理

      image

    2. 实例详情页签的基本信息区域,单击重置密码

      image

    3. 重置实例密码对话框中,设置新密码确认密码重置密码的方式选择在线重置密码配置SSH密码登录策略选择开启,单击确认修改

      image

      返回如下结果,表示ECS实例root用户的登录密码重置成功。

      image

  2. 设置安全组端口。

    1. 云产品资源列表的安全组区域,单击管理

      image

    2. 访问规则区域的内网入方向中,单击增加规则

      image

    3. 新建安全组规则面板,访问来源选择我的IP访问目的输入808080端口,其他配置保存默认即可,单击确定

      重要

      添加端口时,访问来源建议选择您的本机IP地址

      image

Docker的安装

  1. 云产品资源列表的ECS云服务器区域,单击远程连接

    image

  2. 登录实例对话框中,输入重置后的root用户密码,单击确定

    image

  3. 执行以下命令,安装Docker社区版本。

    说明

    使用Compose插件时,命令中间不用连字符,比如docker compose version

    #添加Docker软件包源
    sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
    sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo
    #Alibaba Cloud Linux3专用的dnf源兼容插件
    sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus
    #安装Docker社区版本,容器运行时containerd.io,以及Docker构建和Compose插件
    sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    #启动Docker
    sudo systemctl start docker
    #设置Docker守护进程在系统启动时自动启动
    sudo systemctl enable docker
  4. 执行以下命令,通过查看Docker版本,验证Docker是否安装成功。

    sudo docker -v

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

    image

配置镜像源

Docker Hub镜像拉取受网络影响时,可配置Docker镜像源提升速度。但请注意,镜像源配置不适用于docker search命令,因为它直接查询Docker Hub。

说明

网络不稳定可能导致加速器无法成功拉取指定版本的容器镜像。如需进一步解决方案,请参阅Docker Hub拉取失败解决方案

  1. 登录容器镜像服务控制台

  2. 在左侧导航栏中,选择镜像工具 > 镜像加速器

    image

  3. 镜像加速器页面,获取加速器地址

    image

  4. 执行以下命令,编辑Docker的配置文件/etc/docker/daemon.json

    vim /etc/docker/daemon.json
  5. i进入编辑模式。

  6. 添加以下内容至配置文件中。

    说明

    您需要将命令中的<加速器地址>替换为实际获取的加速器地址。

    {
        "registry-mirrors": ["<加速器地址>"]
    }            

    image

    Esc退出编辑模式,输入:wq并回车,退出并保存文件。

  7. 执行以下命令,重启Docker服务,使新的配置生效。

    重要

    重启Docker会使您的Docker服务短暂不可用,请谨慎操作。

    sudo systemctl restart docker

容器的下载

下载容器镜像至本地,并且查看本地已经下载好的容器镜像列表。

  1. 执行以下命令,拉取ubuntu最新版本的容器镜像。

    docker pull ubuntu:latest
  2. 执行以下命令,查看已经拉取到的本地镜像。

    docker images

    image

创建简单Web程序镜像

创建基于Nginx镜像的简单Web程序镜像。

  1. 执行以下命令,构建Web程序镜像。

    #拉取Nginx镜像
    sudo docker pull nginx:latest
    #创建Dockerfile设置Nginx作为基础镜像,并在Web服务器的根目录创建一个显示Hello World!的index.html文件。
    sudo tee Dockerfile <<-'EOF'
    FROM nginx:latest
    RUN echo 'Hello World!' > /usr/share/nginx/html/index.html
    EOF
    #构建镜像,镜像名称为hello-world
    sudo docker build . -t hello-world:latest
  2. 执行以下命令,启动Web程序镜像的容器,并且命名容器名称为hello-world

    sudo docker run -d -p 80:80 --name hello-world hello-world:latest
  3. 执行curl http://localhost命令,验证Web程序是否正确显示Hello World!

    image

启动长期运行的bash容器

启动一个可以长期运行的bash容器。

  1. 执行以下命令,启动长期运行的bash容器。

    docker run -it bash

    运行成功后会看到命令提示行变为bash,这表示容器虚拟机已经持续运行。

  2. 在运行的bash容器中我们可以使用一些基本的Linux命令,如pwd,ls等。

    pwd
    ls

  3. 如果希望退出bash容器,回到宿主机,执行exit命令即可。

    exit

使用Docker Compose部署应用

创建基于WordPress镜像的Web程序。

  1. 执行以下命令,查看Compose版本。

    说明

    在本实验中,安装Docker时会同时安装Compose插件。

    sudo docker compose version

    如下图回显信息所示,表示Compose插件已安装成功。

    image

  2. 创建Compose编排文件并启动WordPress服务。

    #创建编排文件,添加MysqlWordPress
    sudo tee docker-compose.yaml <<-'EOF'
    version: '3.1'
    
    services:
      wordpress:
        image: wordpress
        restart: always
        ports:
          - "8080: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
        ports:
          - "3306:3306"
        environment:
          #数据库名称
          MYSQL_DATABASE: wordpress
          #数据库用户名
          MYSQL_USER: wordpress
          #数据库密码
          MYSQL_PASSWORD: 123456
          #数据库ROOT用户密码
          MYSQL_RANDOM_ROOT_PASSWORD: '1'
        volumes:
          - db:/var/lib/mysql
    
    volumes:
      wordpress:
      db:
    EOF
    #启动服务容器。
    sudo env "PATH=$PATH" docker compose up -d
  3. 在本地电脑上使用浏览器访问http://<ECS公网IP地址>:8080,即可访问WordPress。

    说明

    请替换<ECS公网IP地址>为您的具体ECS实例公网IP地址,具体公网IP地址可在左侧云产品资源列表中查看。

清理资源

  • 在完成实验后,如果无需继续使用资源,选择不保留资源,单击结束实操。在结束实操对话框中,单击确定

    image

  • 在完成实验后,如果需要继续使用资源,选择付费保留资源,单击结束实操。在结束实操对话框中,单击确定。请随时关注账户扣费情况,避免发生欠费。

    image