例说图解TCP/IP协议族--HTTP篇(-)搭建HTTP服务器Nginx【docker版】

    本文所有的命令都是在宿主机上执行,不需要进入到容器,这也就是docker相对于虚机的优势之一。

 

1 docker环境准备

    包括在宿主机上安装docker engine,配置让普通用户直接运行docker的命令,而不是以root身份运行,比如加sudo执行,这一步还是比较重要。

 

2 获取官方nginx镜像

    执行命令,获取镜像

wenca@wenca-node1:~$ docker pull nginx:latest

latest: Pulling from library/nginx
Digest: sha256:eb3320e2f9ca409b7c0aa71aea3cf7ce7d018f03a372564dbdb023646958770b
Status: Image is up to date for nginx:latest

    查看获取镜像列表 

wenca@wenca-node1:~$ docker image ls

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              e445ab08b2be        2 weeks ago         126MB

 

3 拷贝nginx镜像的相关文件到宿主机

    在宿主机上新建一个空目录,并切换到新建的空目录

wenca@wenca-node1:~$ mkdir -p Servers/nginx
wenca@wenca-node1:~$ cd Servers/nginx

  启动一个nginx容器,在后台运行

wenca@wenca-node1:~$ docker container run --name nginx_temp -d nginx:latest

6925c9c5a5df826c2cee40ae1e196ae581ab3bb3bd31714ffaa4ed449f4ace1c
wenca@wenca-node1:~$ docker container ls -a

CONTAINER ID  IMAGE          COMMAND                  CREATED         STATUS         PORTS    NAMES
6925c9c5a5df  nginx:latest  "nginx -g  'daemon of…"   47 seconds ago  Up 44 seconds  80/tcp   nginx_temp

    复制容器里的相关文件和文件夹到宿主机

docker cp nginx_temp:/var/log/nginx ./logs
docker cp nginx_temp:/etc/nginx ./conf
docker cp nginx_temp:/usr/lib/nginx ./lib
docker cp nginx_temp:/usr/share/nginx ./document

   查看来自容器里的文件和文件夹

wenca@wenca-node1:~/Servers/nginx$ ls
conf  document  lib  logs

    删除该容器

wenca@wenca-node1:~/Servers/nginx$ docker container rm -f nginx_temp
 
nginx_temp

 

4 创建docker-compose.yml文件,运行nginx容器

    在当前路径下新建docker-compose.yml

wenca@wenca-node1:~/Servers/nginx$ ls -l
total 28
drwxrwxr-x 6 wenca wenca 4096 Aug  7 08:59 ./
drwxrwxr-x 5 wenca wenca 4096 Aug  7 06:05 ../
drwxr-xr-x 3 wenca wenca 4096 Aug  7 09:16 conf/
-rw-rw-r-- 1 wenca wenca  553 Aug  7 08:41 docker-compose.yml
drwxr-xr-x 3 wenca wenca 4096 Jul 23 19:59 document/
drwxr-xr-x 3 wenca wenca 4096 Jul 23 19:59 lib/
drwxr-xr-x 2 wenca wenca 4096 Jul 23 19:59 logs/

  docker-compose.yml文件内容是

version: "3.7"

services:
        nginx_testing:
                image: nginx:latest
                container_name: nginx_testing
                ports:
                        - 80:80
                        - 443:443
                volumes:
                        - $PWD/logs:/var/log/nginx:rw
                        - $PWD/document:/usr/share/nginx:ro
                        - $PWD/lib:/usr/lib/nginx:ro
                        - $PWD/conf:/etc/nginx:ro
                command: [nginx, '-g', 'daemon off;'] 

  根据docker-compose.yml,启动nginx容器

wenca@wenca-node1:~/Servers/nginx$ docker-compose -f docker-compose.yml up -d
 
Creating nginx_testing ... done
wenca@wenca-node1:~/Servers/nginx$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES
90e6a3ecd6e1        nginx:latest        "nginx -g 'daemon of…"   16 hours ago        Up 16 hours         0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   nginx_testing

    可以在宿主机上直接更改conf/目录下的nginx.conf, conf/conf.d/default.conf等配置文件,完成自定义配置,然后再执行一遍以下命令,既可以让配置生效。

wenca@wenca-node1:~/Servers/nginx$ docker-compose -f docker-compose.yml up -d
 
nginx_testing is up-to-date

    直接运行上面命令有时候会有问题,建议先删除老的容器,再执行以上命令。本人遇到过直接运行上面命令,配置不生效的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值