使用 ECS 可以快速从全新 CentOS 系统搭建 Docker 环境。本文介绍了使用 ECS 搭建 Docker 环境并在其中部署 Nginx 服务的全流程。
其中用到了第三方工具 Xshell,由于 Day1 中已对该工具简要介绍,本文不再赘述。
背景知识
容器技术
容器技术 是指允许用户在资源隔离的过程中,运行应用程序和其依赖项的 、轻量的 、操作系统级别的虚拟化技术。
该技术中,运行应用程序所需的所有必要组件都打包为单个可复用的 镜像 。运行时,镜像会运行在独立的环境中,不与其他程序共享主机操作系统的内存、CPU 或磁盘。这保证了容器内的进程不会影响到容器外的任何进程。
Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器镜像中,然后发布到任何流行的 Linux 机器或 Windows 机器上,实现虚拟化。
Docker 容器是完全使用 沙箱机制 ,相互之间不会有任何接口,其底层采用的是 Linux 的 cgroup
和 namespace
两项技术来实现应用隔离。
完整的 Docker 环境由以下几个部分组成:
- Docker Client(客户端)
- Docker Daemon(守护进程)
- Docker Image(镜像)
- Docker Container(容器)
申请 ECS 实例、远程连接 ECS 实例
这两个部分的大部分说明与 Day1 一致,这里不再赘述,主要记录一下遇到的问题。
尝试连接服务器时遇到无法连接错误:
发现本次实验提供的ECS存在白名单限制,系统识别本地的IP错误导致本地IP不在白名单内:
可以在IP查询网查看本地外网IP:
因此,实验前需要 手动修改白名单 IP:
- 在页面左侧资源栏点击【一键复制登录 URL】,打开浏览器隐身窗口(无痕模式)打卡已复制的登录链接。
【注意】一定要是 隐身窗口(无痕模式),否则会将主账号顶出登录状态,导致教程无法查看! - 输入资源提供的 子用户名称 和 子用户密码 ,点击 【登录】。
- 在左侧菜单选择【云服务器 ECS】,在实例列表中选择唯一的一台实验服务器,然后在打开的页面选择【本实例安全组】。
- 点击页面上的【配置规则】。
- 在编辑页面中选择【入方向】选项卡,确认看到【授权对象】下的 IP 是错误的,点击【编辑】按钮。
- 这里为了防止本地 IP 为运营商分配的动态 IP 突然变动导致无法访问,将白名单的范围扩大为
*.*.*.0/16
,其中16
表示 IP 最后一个分位块为任意值均可。最后点击保存即可生效。
最后再次尝试连接ECS,可以看到连接成功:
安装 Docker CE
Docker 有两个分支版本:Docker CE(社区版)和 Docker EE(企业版)。
两者的区别主要在于软件许可方式不同(开源/闭源)、支持的操作系统略有区别等,Docker EE 将更加注重安全性,Docker 也会为Docker EE 的用户提供技术支持。
本次体验将基于 ECE(CentOS 7.7)安装 Docker CE。
-
安装 Docker 依赖库
yum install -y yum-utils device-mapper-persistent-data lvm2
-
添加 Docker CE 的软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
安装 Docker CE
yum makecache fast yum -y install docker-ce
-
启动 Docker 服务
systemctl start docker
配置阿里云镜像加速
Docker 的默认官方远程仓库地址为 hub.docker.com
。
由于网络原因,下载一个 Docker 官方镜像可能会需要很长的时间,甚至下载失败。为此,阿里云容器镜像服务 ACR
提供了官方的镜像站点,使用该镜像服务即可加速官方镜像的下载。
下面将 Docker 远程仓库地址修改为阿里云的加速镜像仓库地址。
-
登录容器镜像服务控制台
- 在页面左侧资源栏点击【一键复制登录 URL】,打开浏览器隐身窗口(无痕模式)输入已复制的登录链接。
- 输入资源提供的【子用户名称】和【子用户密码】,点击【登录】;然后搜索
容器镜像
,点击【容器镜像服务】登录控制台(弹出的开通服务窗口关闭即可)。
- 查看专属镜像加速地址
单击【镜像中心】>【镜像加速器】,可以看到阿里云 ACR 提供了一个专属的镜像加速地址。 -
配置 Docker 的自定义镜像仓库地址
请将下面命令中的镜像仓库地址https://[随机代码].mirror.aliyuncs.com
替换为阿里云为您提供的专属镜像加速地址。tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://[随机代码].mirror.aliyuncs.com"] } EOF
-
重新加载服务配置文件
systemctl daemon-reload
-
重启 Docker 服务
systemctl restart docker
使用 Docker 安装 Nginx 服务
-
查看 Docker 镜像仓库中 Nginx 的可用版本
docker search nginx
命令输出如下所示:
-
拉取最新版的 Nginx 镜像
docker pull nginx:latest
命令输出如下所示:
-
查看本地镜像
docker images
命令输出如下所示:
-
运行容器
docker run --name nginx-test -p 8080:80 -d nginx
命令参数说明:
-
--name nginx-test
:容器名称。 -
-p 8080:80
: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。 -
-d nginx
: 设置容器在后台一直运行。
命令输出如下所示:
-
-
在浏览器地址栏输入
http://[ECS公网地址]:8080
访问 Nginx 服务。![](https://img.alicdn.com/tfs/TB16G73HEz1gK0jSZLeXXb9kVXa-617-252.png)