Docker 安装 Nginx

释放双眼,带上耳机,听听看~!

1、搜索 Nginx 镜像


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1docker search nginx
2
3#显示
4NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
5nginx                             Official build of Nginx.                        12311               [OK]                
6jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con…   1698                                    [OK]
7richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable of…   746                                     [OK]
8linuxserver/nginx                 An Nginx container, brought to you by LinuxS…   83                                      
9bitnami/nginx                     Bitnami nginx Docker Image                      73                                      [OK]
10tiangolo/nginx-rtmp               Docker image with Nginx using the nginx-rtmp…   60                                      [OK]
11nginxdemos/hello                  NGINX webserver that serves a simple page co…   34                                      [OK]
12jc21/nginx-proxy-manager          Docker container for managing Nginx proxy ho…   31                                      
13jlesage/nginx-proxy-manager       Docker container for Nginx Proxy Manager        30                                      [OK]
14nginx/nginx-ingress               NGINX Ingress Controller for Kubernetes         22                                      
15privatebin/nginx-fpm-alpine       PrivateBin running on an Nginx, php-fpm & Al…   19                                      [OK]
16
17

2、拉取 Nginx 最新镜像 


1
2
1docker pull nginx:latest
2

3、查看所有镜像


1
2
3
4
5
6
7
8
9
10
11
1docker images
2
3#结果
4REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
5nginx               latest              231d40e811cd        2 weeks ago         126MB
6hello-world         latest              fce289e99eb9        11 months ago       1.84kB
7
8
9# 如何删除
10docker rmi 镜像id
11

4、根据镜像启动容器


1
2
3
4
5
6
7
8
9
10
11
1docker run --name nginx -p 8080:80 -d nginx
2
3# 结果
42c2d46ad1ca1195c1f3c806ba9e78b682c83c523ed0b34012a876ac3b242e790
5
6
7# 参数说明:
8--name nginx: 容器名称
9-p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口
10-d nginx: 设置容器在在后台一直运行
11

5、查看所有的容器


1
2
3
4
5
6
7
8
1docker ps -a
2
3# 显示结果
4CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS                  NAMES
566970b41a12e        nginx               "nginx -g 'daemon of…"   About an hour ago   Up 54 minutes            0.0.0.0:8080->80/tcp   nginx
61765487ba692        hello-world         "/hello"                 2 hours ago         Exited (0) 2 hours ago                          xenodochial_moore
7
8

6、测试 Nginx

Docker 安装 Nginx

知识点:

1、这里 192.168.1.114 服务器已开启防火墙,但是并没有开放 8080 端口,为什么还是可以正常访问?

原因是安装完 docker 之后,它就会在 iptables 里创建几个 chain,它需要通过 iptables 来实现自身的网络功能。比如你启动容器时候使用指定 -p 8080:80 参数,他会自动向 iptables 里面添加规则


1
2
3
4
5
6
7
8
9
1# 查看规则
2iptables -t nat -nL DOCKER
3
4# 显示内容
5Chain DOCKER (2 references)
6target     prot opt source               destination        
7RETURN     all  --  0.0.0.0/0            0.0.0.0/0          
8DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080 to:172.17.0.2:80
9

2、大家都知道 docker run 可以指定端口映射,但是容器一旦生成,有没有一个命令可以直接修改?


1
2
3
4
5
6
7
8
9
10
11
12
1# 关闭 doecker 与 nginx
2systemctl stop docker
3docker stop nginx
4
5# 切换到对应容器的 ID
6cd /var/lib/docker/containers/73ed30e4cdc5*
7
8vi hostconfig.json
9
10# 修改新的端口
11"PortBindings":{"80/tcp":[{"HostIp":"","HostPort":"8080"}]}
12

7、进入镜像 修改容器内的 Nginx 配置文件


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1docker exec -it nginx /bin/bash
2
3
4# 参数说明
5exec docker    进入容器命令
6-it            容器中服务别名
7/bin/bash     表示命令行模式  与 -d 后台守护进行模式启动 形成两种运行方式
8
9
10# 进入容器后 就可以像正常系统一样编辑对应的文件
11
12root@66970b41a12e:/# vi /usr/share/nginx/html/index.html
13
14
15# 如果提示 bash: vi: command not found
16
17apt-get update
18apt-get install vim
19
20

8、通过挂载文件启动 nginx

(1)、创建相关文件


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1# 创建 nginx 相关目录
2
3mkdir -p /usr/local/nginx/html
4vi /usr/local/nginx/html/index.html
5
6# html内容如下
7<html>
8    <h1>
9        Welcome to docker nginx!
10    </h1>
11</html>
12
13
14# 创建日志目录
15
16mkdir -p /usr/local/nginx/logs
17
18
19# 拷贝nginx容器内 nginx 目录到 /usr/local/nginx 并改目录名称为conf
20
21docker cp nginx:/etc/nginx/ /usr/local/nginx
22mv /usr/local/nginx/nginx /usr/local/nginx/conf
23
24
25# 查看文件
26[root@vm114 nginx]# ll /usr/local/nginx/
27总用量 0
28drwxr-xr-x 3 root root 177 11月 23 09:12 conf
29drwxr-xr-x 2 root root  24 12月 10 15:46 html
30drwxr-xr-x 2 root root  41 12月 10 16:26 logs
31

(2)、重启 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1# 停止nginx容器
2docker stop nginx
3
4# 删除容器
5docker rm nginx
6
7docker run -p 8080:80 --name nginx \
8-v /usr/local/nginx/html:/usr/share/nginx/html \
9-v /usr/local/nginx/conf:/etc/nginx \
10-v /usr/local/nginx/logs:/var/log/nginx -d nginx
11
12
13-----------------------------------------------------------------------------
14
15# 参数说明
16
17# 将主机中 /nginx/html 目录挂载到容器的 /usr/share/nginx/html 目录
18-v /usr/local/nginx/html:/usr/share/nginx/html
19
20# 将主机中 /nginx/conf 目录挂载到容器的 /etc/nginx 目录
21-v /usr/local/nginx/conf:/etc/nginx
22
23# 将主机中 /nginx/logs 目录挂载到容器的 /var/log/nginx 目录
24-v /usr/local/nginx/logs:/var/log/nginx
25

(3)、测试

Docker 安装 Nginx

相关错误解决:

错误1

docker: Error response from daemon: driver failed programming external connectivity on endpoint nginx

解决方法:


1
2
3
1systemctl restart docker
2docker run --name nginx -p 8080:80 -d nginx
3

完成shell解决方法:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1
2docker run --name nginx -p 80:80 -d nginx
3
4mkdir -p /usr/local/nginx/html
5mkdir -p /usr/local/nginx/logs
6docker cp nginx:/etc/nginx/ /usr/local/nginx
7mv /usr/local/nginx/nginx /usr/local/nginx/conf
8
9mkdir -p /usr/local/nginx/conf/sites-enabled
10mkdir -p /usr/local/nginx/conf/sites-available
11
12docker stop nginx
13docker rm nginx
14
15docker run -p 80:80 --name nginx \
16-v /usr/local/nginx/html:/usr/share/nginx/html \
17-v /usr/local/nginx/conf:/etc/nginx \
18-v /usr/local/nginx/logs:/var/log/nginx -d nginx
19
20
21

 

给TA打赏
共{{data.count}}人
人已打赏
安全运维

WordPress网站专用docker容器环境带Waf

2020-7-18 20:04:44

安全运维

运维安全-Gitlab管理员权限安全思考

2021-9-19 9:16:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索