0
点赞
收藏
分享

微信扫一扫

阿里云1+X云计算开发与运维实战——在ECS中部署容器化应用Nginx

1.1 实验概述

开始实验后,系统自动创建一个Linux的ECS实例。根据实验步骤操作说明,安装Docker应用,熟悉Docker的基本指令,拉取容器化应用Nginx的镜像,部署Nginx应用,最后验证部署结果。

1.2 实验目的

熟悉Docker的安装和基本指令,熟悉部署Docker应用基本方法。

1.3 实验架构

阿里云1+X云计算开发与运维实战——在ECS中部署容器化应用Nginx_docker

1.4 实验准备

实验资源:

阿里云1+X云计算开发与运维实战——在ECS中部署容器化应用Nginx_docker_02

2.1 步骤1:在ECS中安装Docker

使用远程连接工具,连接到本实验创建的云服务器ECS实例上。

阿里云1+X云计算开发与运维实战——在ECS中部署容器化应用Nginx_nginx_03

输入命令docker --version,查看是否已有Docker客户端。如果ECS实例没有安装Docker客户端,结果如下:

[root@LYX ~]# docker --version
bash: docker: command not found
[root@LYX ~]#

使用软件包管理器yum安装Docker的客户端。输入命令yum –y install docker,可以看到yum会自动解决依赖关系,安装必要的依赖环境,然后安装Docker应用。安装成功后,输出如下信息:

[root@iZuf63afuzdjhu0p39fdasZ ~]# yum -y install docker
Loaded plugins: fastestmirror
base                                           | 3.6 kB     00:00     
epel                                           | 4.7 kB     00:00     
extras                                         | 3.4 kB     00:00     
updates                                        | 3.4 kB     00:00     
(1/7): base/7/x86_64/group_gz                    | 166 kB   00:00     
(2/7): epel/x86_64/group_gz                      |  88 kB   00:00     
(3/7): epel/x86_64/updateinfo                    | 954 kB   00:00     
(4/7): extras/7/x86_64/primary_db                | 156 kB   00:00     
(5/7): updates/7/x86_64/primary_db               | 1.4 MB   00:00     
(6/7): epel/x86_64/primary_db                    | 6.6 MB   00:00     
(7/7): base/7/x86_64/primary_db                  | 6.0 MB   00:00     

查看Docker的版本,确认安装成功。执行命令docker --version,结果如下所示:

[root@LYX ~]# docker --version
Docker version 1.13.1, build 7d71120/1.13.1
[root@LYX ~]#

2.2 步骤2:熟悉Docker的基本指令

启动Docker 服务。执行命令service docker start,结果如下所示:

[root@LYX ~]# service docker start
Redirecting to /bin/systemctl start docker.service
[root@LYX ~]#

拉取CentOS的Docker镜像。执行命令docker pull centos:latest,可以看到Docker开始从官方公共仓库DockerHub中,开始拉取CentOS的Docker镜像,执行结果如下所示:

[root@LYX ~]# docker pull centos:latest
Trying to pull repository docker.io/library/centos ...
latest: Pulling from docker.io/library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for docker.io/centos:latest
[root@LYX ~]#

查看镜像。执行命令docker images,可以看到本地的镜像仓库存放的镜像,如下所示:

[root@LYX ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos    latest              5d0da3dc9764        19 months ago       231 MB
[root@LYX ~]#

运行CentOS容器并进入CentOS的命令行,并查看Docker容器版的CentOS下的文件目录结构。执行命令docker run –it docker.io/centos:latest bash,将镜像名称和标签替换为刚才拉取的CentOS的全称和标签。在容器里面,执行命令ls,可以看到,容器版的CentOS文件目录和一般的操作系统CentOS类似,如下所示:

[root@LYX ~]# docker run -it docker.io/centos:latest bash
[root@2a3cb30fdacf /]#
[root@2a3cb30fdacf /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@2a3cb30fdacf /]#

暂离容器,即退出容器界面而不关闭容器。使用组合按键,Ctrl+P+Q,可以从容器界面返回ECS命令行界面。在ECS命令行界面,查看容器列表。执行命令docker ps,可以看到当前正在运行的容器,如下所示:

[root@53ba7999ef3f /]# [root@LYX ~]#
[root@LYX ~]#
[root@LYX ~]# docker ps
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS              PORTS               NAMES
53ba7999ef3f        docker.io/centos:latest   "bash"              10 seconds ago      Up 9 seconds                            objective_euler
[root@LYX ~]#

停止CentOS容器。使用容器的ID,将容器停止。如此处容器ID为 53ba7999ef3f,则执行命令docker stop 53ba7999ef3f,结果如下:

[root@LYX ~]# docker stop 53ba7999ef3f
53ba7999ef3f
[root@LYX ~]#

再次查看容器列表。执行命令docker ps,可以看到CentOS容器已经被停止,移出了容器列表,如下所示:

[root@LYX ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@LYX ~]#

2.3 步骤3:配置阿里云镜像加速器

修改daemon配置文件/etc/docker/daemon.json来使用加速器。执行命令:vim /etc/docker/daemon.json,在文件中写入:{ "registry-mirrors":["https://610ruqqi.mirror.aliyuncs.com"] }。其中,加速的链接地址可以在阿里云控制台-容器镜像服务-镜像加速器查看。

打开vim编辑器后,按“i”键进入编辑模式,对默认首页文件进行修改;修改完成后按“Esc”键退出编辑模式,然后输入组合键“:wq”保存文件并退出。如下所示:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://jc5mcdvz.mirror.aliyuncs.com"]
}
EOF

阿里云1+X云计算开发与运维实战——在ECS中部署容器化应用Nginx_nginx_04

重启守护进程和Docker客户端。执行命令:systemctl daemon-reload,执行命令:service docker restart。结果如下:

sudo systemctl daemon-reload
sudo systemctl restart docker

拉取Ubuntu镜像,验证加速效果。执行命令:docker pull ubuntu,结果如下:

[root@LYX ~]# docker pull ubuntu
Using default tag: latest
Trying to pull repository docker.io/library/ubuntu ...
latest: Pulling from docker.io/library/ubuntu
7b1a6ab2e44d: Pull complete
Digest: sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
Status: Downloaded newer image for docker.io/ubuntu:latest
[root@LYX ~]#

[root@LYX ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/ubuntu    latest              ba6acccedd29        18 months ago       72.8 MB
docker.io/centos    latest              5d0da3dc9764        19 months ago       231 MB
[root@LYX ~]#

2.4 步骤4:部署Docker容器应用Nginx

查找Nginx镜像。执行命令docker search nginx,结果如下

[root@LYX ~]# docker search nginx
INDEX       NAME                                                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/nginx                                             Official build of Nginx.                        18413     [OK]
docker.io   docker.io/linuxserver/nginx                                 An Nginx container, brought to you by Linu...   192           
docker.io   docker.io/bitnami/nginx                                     Bitnami nginx Docker Image                      158                  [OK]
docker.io   docker.io/ubuntu/nginx                                      Nginx, a high-performance reverse proxy & ...   84            
docker.io   docker.io/privatebin/nginx-fpm-alpine                       PrivateBin running on an Nginx, php-fpm & ...   72                   [OK]
docker.io   docker.io/bitnami/nginx-ingress-controller                  Bitnami Docker Image for NGINX Ingress Con...   25                   [OK]
docker.io   docker.io/rancher/nginx-ingress-controller                                                                  11            
docker.io   docker.io/webdevops/nginx                                   Nginx container                                 11                   [OK]

拉取Nginx镜像。执行命令docker pull nginx,该命令默认拉取最新版本(latest)的Nginx镜像。

[root@LYX ~]# docker pull nginx
Using default tag: latest
Trying to pull repository docker.io/library/nginx ...
latest: Pulling from docker.io/library/nginx
a2abf6c4d29d: Pull complete
a9edb18cadd1: Pull complete
589b7251471a: Pull complete
186b1aaa4aa6: Pull complete
b4df32aa5a72: Pull complete
a0bcbecc962e: Pull complete
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for docker.io/nginx:latest
[root@LYX ~]#

启动nginx容器实例,并暴露外部端口。执行命令docker run --name nginx -p 8080:80 -d docker.io/nginx,结果如下:

[root@LYX ~]# docker run --name nginx -p 8080:80 -d docker.io/nginx
8f0f70a4b1f6c92b320173a266f2e61a5e54a4f7b0964b0aabfdde6c8d7f0d5e
[root@LYX ~]#

至此,Nginx已经成功地以容器方式运行在ECS中了。

参数说明:

--namenginx:指定运行的容器实例的名称为nginx;

-p8080:80:通过-p来指定Docker容器中nginx实例对外开放的端口。其中:第一个8080端口是对外暴露的端口,用户可以通过此端口访问Nginx服务;

第二个80端口是映射到Nginx容器里的端口,默认端口为80。

2.5 步骤5:验证Nginx部署结果

查看容器进程。执行命令docker top nginx,可以看到Nginx容器有两个进程在运行,结果如下:

[root@LYX ~]# docker top nginx
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                5439                5423                0                   22:40               ?                   00:00:00            nginx: master process nginx -g daemon off;
101                 5516                5439                0                   22:40               ?                   00:00:00            nginx: worker process
[root@LYX ~]#

查看容器列表。执行命令docker ps,可以看到Nginx容器以及暴露给外部的端口,结果如下:

[root@LYX ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
8f0f70a4b1f6        docker.io/nginx     "/docker-entrypoin..."   40 seconds ago      Up 39 seconds       0.0.0.0:8080->80/tcp   nginx
[root@LYX ~]#

验证部署结果。通过个人PC的浏览器访问nginx,地址为ECS实例IP:暴露端口,如下所示: 

阿里云1+X云计算开发与运维实战——在ECS中部署容器化应用Nginx_nginx_05

举报

相关推荐

0 条评论