1.1 实验概述
开始实验后,系统自动创建一个Linux的ECS实例。根据实验步骤操作说明,安装Docker应用,熟悉Docker的基本指令,拉取容器化应用Nginx的镜像,部署Nginx应用,最后验证部署结果。
1.2 实验目的
熟悉Docker的安装和基本指令,熟悉部署Docker应用基本方法。
1.3 实验架构
1.4 实验准备
实验资源:
2.1 步骤1:在ECS中安装Docker
使用远程连接工具,连接到本实验创建的云服务器ECS实例上。
输入命令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
重启守护进程和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:暴露端口,如下所示:
标签:00,运维,nginx,LYX,Nginx,ECS,io,docker,root From: https://blog.51cto.com/lyx888/6215704