云计算之阿里云ECS-001-a 使用Docker实验

本文详细介绍了如何在阿里云ECS服务器上部署Docker,包括安装DockerCE,拉取并制作Nginx镜像,以及启动容器并进行端口映射。通过实例演示了如何验证Docker运行结果和管理容器。
摘要由CSDN通过智能技术生成

前言

AWS于2006.8推出Amazon Elastic compute cloud (EC2), 开启了云计算的先河
(起初,基于Xen做虚拟化,后续采用Nitro-迎接加速)

时隔4年,阿里云于2010年9月对外发布ECS云服务器。

前文:https://blog.csdn.net/EthanNi/article/details/138281067 已简单介绍了阿里云ECS云服务器的开通,
此文主要是基于ECS部署Docker并做一些小实验

一、基于ECS 部署Docker

workbench远程登录ECS机器:

在这里插入图片描述

获取Docker镜像

[root@iZ0jl9tbkk3x089dfl8imsZ ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
–2024-04-28 17:42:32-- https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Resolving mirrors.aliyun.com (mirrors.aliyun.com)… 121.89.58.189, 121.89.58.191, 121.89.58.193, …
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|121.89.58.189|:443… failed: Connection timed out.
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|121.89.58.191|:443… ^C

–经检查,ECS没有绑定弹性IP,没法访问公网 ,
ps:ECS需要和IP同Region,否则无法绑定。
经过弹性IP以及ECS与IP绑定后,如下:

[root@iZ0jl9tbkk3x089dfl8imsZ ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

–2024-04-28 17:53:01-- https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Resolving mirrors.aliyun.com (mirrors.aliyun.com)… 121.89.58.191, 121.89.58.189, 121.89.58.188, …
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|121.89.58.191|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 2081 (2.0K) [application/octet-stream]
Saving to: ‘/etc/yum.repos.d/docker-ce.repo’

/etc/yum.repos.d/docker-ce.repo 100%[=================================>] 2.03K --.-KB/s in 0s

2024-04-28 17:53:01 (66.4 MB/s) - ‘/etc/yum.repos.d/docker-ce.repo’ saved [2081/2081]

命令 `wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo` 是在 Linux 系统上使用 `wget` 工具下载一个文件,并将其保存到特定位置的命令。这条命令具体做了以下几件事情:

1. `wget`: 这是一个用于从网络下载文件的命令行工具。它支持HTTP、HTTPS和FTP协议,可以下载公开可访问的或通过认证后可以访问的资源。

2. `-O /etc/yum.repos.d/docker-ce.repo`: 这个参数告诉 `wget` 将下载的内容保存到 `/etc/yum.repos.d/docker-ce.repo`。`-O` (大写字母 "O")参数的作用是指定输出文件的名称,即下载的文件将被存储为什么名字。

3. `/etc/yum.repos.d/docker-ce.repo`: 这个路径是保存 `.repo` 文件的标准位置之一,是 YUM 包管理器在 Linux 系统中用来存放其仓库配置文件的目录。文件名 `docker-ce.repo` 表示该配置是为 Docker CE(Community Edition)的 YUM 仓库设置的。

4. `https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo`: 这个 URL 是文件来源的网络位置,即 `wget` 从哪里下载文件。这里使用的是阿里云的镜像站点,意味着你将从阿里云的服务器获取 Docker CE 的 YUM 仓库配置,这通常会比从 Docker 官方站点更快,尤其是对于位于中国大陆的用户。

执行此命令后,YUM 配置文件 `docker-ce.repo` 将被添加到 `/etc/yum.repos.d/` 目录中。这个配置文件包含用于安装和更新 Docker CE 软件包的仓库信息。一旦 `.repo` 文件被正确放置,你将能够使用 YUM 命令安装 Docker CE:

```bash
sudo yum install docker-ce docker-ce-cli containerd.io

通过使用阿里云提供的镜像仓库,安装过程通常会由于网络位置更加接近而变得更快。

安装docker-ce (Community Edition)

[root@iZ0jl9tbkk3x089dfl8imsZ ~]# yum -y install docker-ce
在这里插入图片描述

-y 选项会自动回答所有的提示为 YES。这意味着,在安装过程中如果遇到任何需要确认的地方,比如是否接受软件协议或是否继续安装,它会自动同意,而无需用户交互地手动确认。

启动Docker

systemctl start docker

查询Docker状态

[root@iZ0jl9tbkk3x089dfl8imsZ ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2024-04-28 18:02:59 CST; 1min 20s ago
Docs: https://docs.docker.com
Main PID: 15454 (dockerd)
Tasks: 8
Memory: 90.2M
CGroup: /system.slice/docker.service
└─15454 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Apr 28 18:02:59 iZ0jl9tbkk3x089dfl8imsZ systemd[1]: Starting Docker Application Container Engine…
Apr 28 18:02:59 iZ0jl9tbkk3x089dfl8imsZ dockerd[15454]: time=“2024-04-28T18:02:59.328462029+08:00” level=info msg=“Starting up”
Apr 28 18:02:59 iZ0jl9tbkk3x089dfl8imsZ dockerd[15454]: time=“2024-04-28T18:02:59.373206176+08:00” level=info msg=“Loading containers: start.”
Apr 28 18:02:59 iZ0jl9tbkk3x089dfl8imsZ dockerd[15454]: time=“2024-04-28T18:02:59.647896063+08:00” level=info msg=“Loading containers: done.”
Apr 28 18:02:59 iZ0jl9tbkk3x089dfl8imsZ dockerd[15454]: time=“2024-04-28T18:02:59.666577894+08:00” level=warning msg="Not using native diff for overlay2, this may cause degraded perfor>
Apr 28 18:02:59 iZ0jl9tbkk3x089dfl8imsZ dockerd[15454]: time=“2024-04-28T18:02:59.666664025+08:00” level=info msg=“Docker daemon” commit=c8af8eb containerd-snapshotter=false storage-dr>
Apr 28 18:02:59 iZ0jl9tbkk3x089dfl8imsZ dockerd[15454]: time=“2024-04-28T18:02:59.666815309+08:00” level=info msg=“Daemon has completed initialization”
Apr 28 18:02:59 iZ0jl9tbkk3x089dfl8imsZ dockerd[15454]: time=“2024-04-28T18:02:59.719882240+08:00” level=info msg=“API listen on /run/docker.sock”
Apr 28 18:02:59 iZ0jl9tbkk3x089dfl8imsZ systemd[1]: Started Docker Application Container Engine.

二、基于Docker制作Nginx 新镜像

执行命令,拉取Nginx镜像。

docker pull nginx:1.23.4

docker pull nginx:1.23.4 是一个 Docker 命令,其作用是从 Docker Hub(一种公共镜像仓库)下载或“拉取”指定版本的 nginx 容器镜像。执行这个命令后,Docker 将从远程仓库下载 nginx 1.23.4 版本的镜像到本地计算机上。
这里的各部分含义为:
docker pull: 这是 Docker CLI(命令行界面)的命令用来下载或更新镜像。
nginx: 这表示镜像的名称,名为 "nginx",它是一个轻量级的,高性能的 Web 服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器。
1.23.4: 这是镜像的标签(tag),表示特定版本的 nginx。如果不指定标签,如使用 docker pull nginx,Docker 会默认拉取 latest 标签的镜像,即最新版本的镜像。

查询执行结果

在这里插入图片描述

新建并编辑Dockerfile文件。

vim Dockerfile, 并添加以下内容,改造原镜像。
ps:如何使用vim软件在这里不介绍了。
在这里插入图片描述
执行以下命令,基于基础镜像nginx构建新镜像。
命令格式为docker build -t [镜像名称]:[镜像版本] .,命令末尾的.表示Dockerfile文件的路径,不能忽略。以基于构建新镜像image20240409:v1 为例,则命令为:

docker build -t image20240409:v1 .

`docker build -t image20240409:v1 .` 是 Docker 命令行界面 (CLI) 的一个命令,用于构建一个新的 Docker 镜像。下面是这个命令各部分的意义:

1. `docker build`: 这是告诉 Docker 守护进程创建一个新的镜像。该命令执行时会读取当前路径(由最后的`.`指定)中名为 "Dockerfile" 的文件,并按照其中定义的指令执行构建过程。

2. `-t image20240409:v1: 这是标记(tagging)参数,用于为构建出的新镜像指定一个名字和标签。在这个例子中,镜像的名称是 `image20240409`,标签是 `v1`。标签用于区分同一镜像的不同版本或变体。

3. `.`: 这是指定构建上下文的路径,`.` 表示当前目录。构建上下文是 Dockerfile 所在目录,通常包含 Dockerfile 文件、以及 Dockerfile 中引用的任何文件和目录。

总结来说,`docker build -t image20240409:v1 .` 这个命令会在当前目录下寻找 Dockerfile 文件,根据其中定义的指令顺序,使用 Docker 守护进程构建一个新的镜像,命名为 `image20240409` 并打上版本标签 `v1`。完成构建后,这个新镜像可以用于创建容器,且你可以通过这个名字和标签来引用它。

在这里插入图片描述

启动容器实例,验证Docker新镜像配置

部署和使用Docker制作镜像后,在浏览器中输入http://<ECS实例公网IP地址>:8080并访问,如果出现如图所示内容,说明容器运行成功且镜像制作成功(ECS实例的公网IP地址可以从实例页面获取)。

docker run --name [容器名称] -p 8080:80 -d [镜像名称]:[镜像版本],示例命令:
​docker run --name nginx-ethantest -p 8080:80 -d image20240409:v1
将Nginx的80端口映射至ECS服务器的8080端口,以启动镜像并实现通过公网访问。

`docker run --name nginx-ethantest -p 8080:80 -d image001:v1` 命令在 Docker 中用于启动一个新的容器实例。这个命令会基于 `image001:v1` 这个镜像创建并运行一个新的容器。下面详细解释这条命令的每个组成部分:

1. `docker run`: 这是 Docker CLI 的命令,用来从一个镜像启动一个新的容器。

2. `--name nginx-ethantest`: 这个选项用于为你的容器指定一个名称,这里将容器命名为 `nginx-ethantest`。这个名称可以在以后用来引用或操作容器(例如启动、停止、删除等操作)。

3. `-p 8080:80`: 这个选项用于端口映射。它将容器内的 80 端口映射到宿主机的 8080 端口上。这意味着,当你在宿主机上访问 8080 端口时,实际上访问的是容器内部的 80 端口。端口映射使得容器内运行的服务(例如网站或应用)能够从宿主机外部访问。

4. `-d`: 这个选项告诉 Docker 以“分离”模式运行容器,即在后台运行。这样,容器启动后终端不会被阻塞,你可以继续在同一个终端中执行其他命令。

5. `image20240409:v1`: 这是容器启动所依赖的镜像。在这个案例中,它指定 Docker 从名为 `image20240409`、标签为 `v1` 的镜像创建容器。

综上所述,命令 `docker run --name nginx-ethantest -p 8080:80 -d image001:v1` 创建并启动了一个名为 `nginx-ethantest` 的新容器,该容器基于 `image20240409:v1` 镜像运行,在后台以分离模式运行,并将其内部的 80 端口映射到宿主机的 8080 端口,使外部可以通过宿主机的 8080 端口访问容器内部的服务。

三、验证Docker的运行结果:

部署和使用Docker制作镜像后,在浏览器中输入http://<ECS实例公网IP地址>:8080并访问,如果出现如图所示内容,说明容器运行成功且镜像制作成功(ECS实例的公网IP地址可以从实例页面获取)
需要在入方向把8080端口打开,否则无法访问。
在这里插入图片描述
浏览器输入http://8.130.83.61:8080:
在这里插入图片描述

其他:
docker ps #查看运行容器的容器ID(CONTAINER ID)
docker stop [容器ID]
docker container prune #删除所有非running状态的容器

总结

以上就是阿里云ECS的简单介绍和Docker配置使用。

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
阿里云服务器(ECS)是阿里云提供的一种云计算服务,而Docker是一种开源的容器化平台。在阿里云服务器上使用Docker可以帮助用户更高效地部署和管理应用程序。 Docker的核心概念是容器,它是一种轻量级的虚拟化技术,可以将应用程序及其依赖打包成一个独立的可执行单元,称为容器。这样,应用程序可以在任何支持Docker的环境中运行,而不需要担心环境差异性带来的问题。 在阿里云服务器上使用Docker,您可以享受以下好处: 1. 灵活性:Docker容器可以快速部署和启动,使您的应用程序能够快速响应变化的需求。 2. 资源利用率:Docker容器共享主机操作系统的内核,因此可以更高效地利用服务器资源。 3. 可移植性:Docker容器可以在不同的环境中运行,无需担心环境差异性。 4. 可扩展性:通过使用Docker容器编排工具(如Docker Compose和Kubernetes),您可以轻松地扩展和管理多个容器。 如果您想在阿里云服务器上使用Docker,您可以按照以下步骤进行操作: 1. 在阿里云上创建一台ECS实例,并确保已安装Docker。 2. 使用Docker命令或Docker Compose编写Dockerfile和docker-compose.yml文件,描述您的应用程序和其依赖。 3. 构建Docker镜像并将其推送到阿里云的容器镜像仓库(如阿里云容器镜像服务)。 4. 在ECS实例上运行Docker容器,可以使用Docker命令或Docker Compose进行管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值