Docker容器部署 Nginx服务

 

 

1.查找 Docker Hub 上的 nginx 镜像

[root@localhost ~]# docker search nginx

2.拉取官方的Nginx镜像

[root@localhost ~]# docker pull nginx

3.在本地镜像列表里查到 REPOSITORY 为 nginx 的镜像

[root@localhost ~]# docker images nginx
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/nginx     latest              f949e7d76d63        5 weeks ago         126 MB
[root@localhost ~]#

4.以下命令使用 NGINX 默认的配置来启动一个 Nginx 容器实例:

[root@localhost ~]# docker run --rm --name nginx-test -p 8080:80 -d nginx
358354f206fdbc5c20199a307392c11972b1bedab306144e5af56995edbb3e4b

其中,该命令的四个命令行参数的含义如下。
      --rm:容器终止运行后,自动删除容器文件。
      --name nginx-test:容器的名字叫做nginx-test,名字自己定义.
      -p: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口
      -d:容器启动后,在后台运行

5.查看启动的docker容器

[root@localhost ~]# docker container ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
4a7494723341        nginx               "nginx -g 'daemon ..."   11 seconds ago      Up 7 seconds        0.0.0.0:8080->80/tcp   nginx-test

在浏览器中打开http://172.17.0.1:8080,效果如下.

docker映射nginx多个端口 docker nginx多端口_nginx

号外:

######################################################################################

windows宿主机访问centOS7虚拟机中的docker服务

问题描述:在笔记本windows10中,centos7虚拟机运行了docker nginx容器,但是windows10的浏览器无法访问docker中的Nginx服务。

问题解决:1、虚拟机命令:ifconfig

     查看docker容器的网段、centos的IP地址:

docker容器的网段为:172.17.0.0 centos虚拟机的IP地址为:192.168.158.10

管理员身份打windows10的dos窗口,或者运行-CMD

添加如下路由:C:\windows\system32>ROUTE -p add 172.17.0.0 mask 255.255.0.0 192.168.158.10

 #####################################################################################

实例2:nginx 服务部署,映射本地目录到nginx容器

1.创建本地目录,用于存放Nginx的相关文件信息.

# mkdir -p /home/nginx/www /home/nginx/logs /home/nginx/conf

其中:

      www: 目录将映射为 nginx 容器配置的虚拟目录。

      logs: 目录将映射为 nginx 容器的日志目录。

      conf: 目录里的配置文件将映射为 nginx 容器的配置文件。

2.拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录,容器ID可以查看 docker ps 命令输入中的第一列:

[root@localhost home]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
358354f206fd        nginx               "nginx -g 'daemon ..."   29 minutes ago      Up 29 minutes       0.0.0.0:8080->80/tcp   nginx-test
[root@localhost home]# 
[root@localhost home]# docker cp 358354f206fd:/etc/nginx/nginx.conf /home/nginx/conf/

3.部署命令

# docker run --rm -d -p 8081:80 --name nginx-test-web \
  -v /home/nginx/www:/usr/share/nginx/html \
  -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  -v /home/nginx/logs:/var/log/nginx \
  nginx

命令说明:

      --rm:容器终止运行后,自动删除容器文件。

      -p 8081:80: 将容器的 80 端口映射到主机的 8082 端口.

      --name nginx-test-web:将容器命名为 nginx-test-web 

      -v /home/nginx/www:/usr/share/nginx/html:将我们自己创建的 www 目录挂载到容器的 /usr/share/nginx/html。

      -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将我们自己创建的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf。

      -v /home/nginx/logs:/var/log/nginx:将我们自己创建的 logs 挂载到容器的 /var/log/nginx。

4.启动以上命令后进入 /home/nginx/www 目录:

docker映射nginx多个端口 docker nginx多端口_docker映射nginx多个端口_02

[root@localhost ~]# cd /home/nginx/www/
[root@localhost www]# vim index.html 

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Nginx test !!!</title>
</head>
<body>
    <h1>我的第一个标题</h1>
    <p>我的第一个段落。</p>
</body>
</html>

docker映射nginx多个端口 docker nginx多端口_docker映射nginx多个端口_02

在浏览器里面输入http://172.17.0.1:8081/,输出结果如下,如果在访问时出现403错误,应该是index.html文件权限不足,给成644就行.

docker映射nginx多个端口 docker nginx多端口_nginx_04

 




 

1.查找 Docker Hub 上的 nginx 镜像

[root@localhost ~]# docker search nginx

2.拉取官方的Nginx镜像

[root@localhost ~]# docker pull nginx

3.在本地镜像列表里查到 REPOSITORY 为 nginx 的镜像

[root@localhost ~]# docker images nginx
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/nginx     latest              f949e7d76d63        5 weeks ago         126 MB
[root@localhost ~]#

4.以下命令使用 NGINX 默认的配置来启动一个 Nginx 容器实例:

[root@localhost ~]# docker run --rm --name nginx-test -p 8080:80 -d nginx
358354f206fdbc5c20199a307392c11972b1bedab306144e5af56995edbb3e4b

其中,该命令的四个命令行参数的含义如下。
      --rm:容器终止运行后,自动删除容器文件。
      --name nginx-test:容器的名字叫做nginx-test,名字自己定义.
      -p: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口
      -d:容器启动后,在后台运行

5.查看启动的docker容器

[root@localhost ~]# docker container ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
4a7494723341        nginx               "nginx -g 'daemon ..."   11 seconds ago      Up 7 seconds        0.0.0.0:8080->80/tcp   nginx-test

在浏览器中打开http://172.17.0.1:8080,效果如下.

docker映射nginx多个端口 docker nginx多端口_nginx

号外:

######################################################################################

windows宿主机访问centOS7虚拟机中的docker服务

问题描述:在笔记本windows10中,centos7虚拟机运行了docker nginx容器,但是windows10的浏览器无法访问docker中的Nginx服务。

问题解决:1、虚拟机命令:ifconfig

     查看docker容器的网段、centos的IP地址:

docker容器的网段为:172.17.0.0 centos虚拟机的IP地址为:192.168.158.10

管理员身份打windows10的dos窗口,或者运行-CMD

添加如下路由:C:\windows\system32>ROUTE -p add 172.17.0.0 mask 255.255.0.0 192.168.158.10

 #####################################################################################

实例2:nginx 服务部署,映射本地目录到nginx容器

1.创建本地目录,用于存放Nginx的相关文件信息.

# mkdir -p /home/nginx/www /home/nginx/logs /home/nginx/conf

其中:

      www: 目录将映射为 nginx 容器配置的虚拟目录。

      logs: 目录将映射为 nginx 容器的日志目录。

      conf: 目录里的配置文件将映射为 nginx 容器的配置文件。

2.拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录,容器ID可以查看 docker ps 命令输入中的第一列:

[root@localhost home]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
358354f206fd        nginx               "nginx -g 'daemon ..."   29 minutes ago      Up 29 minutes       0.0.0.0:8080->80/tcp   nginx-test
[root@localhost home]# 
[root@localhost home]# docker cp 358354f206fd:/etc/nginx/nginx.conf /home/nginx/conf/

3.部署命令

# docker run --rm -d -p 8081:80 --name nginx-test-web \
  -v /home/nginx/www:/usr/share/nginx/html \
  -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  -v /home/nginx/logs:/var/log/nginx \
  nginx

命令说明:

      --rm:容器终止运行后,自动删除容器文件。

      -p 8081:80: 将容器的 80 端口映射到主机的 8082 端口.

      --name nginx-test-web:将容器命名为 nginx-test-web 

      -v /home/nginx/www:/usr/share/nginx/html:将我们自己创建的 www 目录挂载到容器的 /usr/share/nginx/html。

      -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将我们自己创建的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf。

      -v /home/nginx/logs:/var/log/nginx:将我们自己创建的 logs 挂载到容器的 /var/log/nginx。

4.启动以上命令后进入 /home/nginx/www 目录:

docker映射nginx多个端口 docker nginx多端口_docker映射nginx多个端口_02

[root@localhost ~]# cd /home/nginx/www/
[root@localhost www]# vim index.html 

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Nginx test !!!</title>
</head>
<body>
    <h1>我的第一个标题</h1>
    <p>我的第一个段落。</p>
</body>
</html>

docker映射nginx多个端口 docker nginx多端口_docker映射nginx多个端口_02

在浏览器里面输入http://172.17.0.1:8081/,输出结果如下,如果在访问时出现403错误,应该是index.html文件权限不足,给成644就行.

docker映射nginx多个端口 docker nginx多端口_nginx_04