个别学习一项技术,会先用一个最简略的例子或最典型的例子来向大家解说入门内容,所以此文为大家介绍应用docker装置nginx容器服务。从根底应用的角度来讲,此文简直涵盖了docker最外围的内容:镜像拉取、容器运行、端口映射、文件映射,尽管根底但很重要,所以倡议认真学习。

一、拉取镜像

docker pull命令用于拉取利用镜像,docker pull nginx命令用于拉取最新版本的nginx镜像。下文为拉取镜像过程的响应后果:

# docker pull nginxUsing default tag: latestlatest: Pulling from library/nginxc229119241af: Pull complete 2215908dc0a2: Pull complete 08c3cb2073f1: Pull complete 18f38162c0ce: Pull complete 10e2168f148a: Pull complete c4ffe9532b5f: Pull complete Digest: sha256:2275af0f20d71b293916f1958f8497f987b8d8fd8113df54635f2a5915002bf1Status: Downloaded newer image for nginx:latestdocker.io/library/nginx:latest

从上文咱们能够看出nginx镜像是从docker.io这个网址拉取下来的。

应用docker images命令能够查看以后操作系统中下载了哪些镜像文件。

# docker imagesREPOSITORY    TAG       IMAGE ID       CREATED        SIZEnginx         latest    12766a6745ee   33 hours ago   142MBhello-world   latest    feb5d9fea6a5   6 months ago   13.3kB
  • REPOSITORY镜像仓库及镜像名称,如果不显示镜像仓库,默认就是docker.io
  • TAG镜像的版本或者是里程碑标签,latest示意最新版本
  • IMAGE ID 镜像的惟一标识
  • CREATED 这个镜像被创立的工夫
  • SIZE示意镜像文件的大小

二、运行镜像启动容器

通过docker run命令启动一个容器,容器名称为nginx-zimug。

# docker run -d --name nginx-zimug -p  80:80  nginx81bb1211144bc0991a789f860458548643c60b5459466c14d0604be9a4ccbfd7
  • -d示意容器在后盾运行
  • --name为容器起一个名字
  • -p端口映射,格局为宿主机端口:容器端口,上文中含意是将容器中的端口80映射到宿主机的端口80,对外提供拜访服务。
  • 最初一个字段为镜像名称

浏览器HTTP协定拜访宿主机的80端口,如果是80端口能够省略。失去的拜访后果如下,阐明咱们的nginx服务曾经启动胜利了。

通过docker ps能够查看正在运行中的容器,如下所示:

CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                               NAMES81bb1211144b   nginx     "/docker-entrypoint.…"   11 minutes ago   Up 11 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   nginx-zimug

三、文件映射

首先明确的是容器中的文件内容是能够被批改的,然而一旦容器重启,所有写入到容器中的,针对数据文件、配置文件的批改都将失落。所以为了保留容器的运行状态,执行后果,咱们须要将容器内的一些重要的数据文件、日志文件、配置文件映射到宿主机上。
以nginx为例,nginx有三个重要的文件目录:

容器中门路宿主机中自定义映射门路
存储网站网页的目录/usr/share/nginx/html/root/nginx/html
日志目录/etc/nginx/nginx.conf/root/nginx/conf/nginx.conf
nginx配置文件目录/var/log/nginx/root/nginx/logs

在宿主机中新建文件目录

mkdir -p  /root/nginx/logs  /root/nginx/html  /root/nginx/conf;

将容器中的文件copy到宿主机中
将nginx配置文件copy到宿主机中

docker cp nginx-zimug:/etc/nginx/nginx.conf /root/nginx/conf;

将一个模仿的html文件放入html目录
将上面的文件保留为index.html放入宿主机的/root/nginx/html目录,因为存在映射关系,实际上也是放入了容器的/usr/share/nginx/html目录。

<!DOCTYPE html><html><head><meta charset="utf-8"><title>应用docker搭建nginx web服务</title></head><body>    <h1>拜访胜利</h1>    <p>厉害了!</p></body></html>

四、再次启动容器服务

-v参数表白了宿主机文件与容器中文件的映射关系,格局为-v 宿主机目录:容器文件系统目录。启动一个新的容器,容器的名字叫做nginx-prod

docker run -d -p 80:80 \--name nginx-prod \-v /root/nginx/html:/usr/share/nginx/html \-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \-v /root/nginx/logs:/var/log/nginx  nginx

在启动新容器之前,将nginx-zimug旧的容器删掉。如果不删除旧的容器,新容器的端口与旧容器端口会发生冲突。应用如下命令删除容器:

docker stop nginx-zimug;docker rm nginx-zimug;

执行下面的docker run命令,启动新的容器。启动后通过浏览器拜访宿主机80端口,响应后果如下证实nginx失常提供web服务了。

同时能够在宿主机上批改nginx配置,也能够查看运行时日志文件。批改后果会影响容器nginx服务的运行,因为宿主机的配置文件与容器内的配置文件存在映射关系。

欢送关注我的布告号:字母哥杂谈,回复003赠送本文所在专栏《docker修炼之道》的PDF版本,30余篇精品docker文章。字母哥博客:zimug.com