Docker是一个开源的基于LXC的高级容器引擎,我们可以把应用以及依赖包打包到一个镜像中,发布到支持Docker的 Linux或Windows 机器上,实现虚拟化。
Nginx是一个常用的高性能WEB服务器,利用Docker可以非常方便的配置Nginx WEB服务。
1.系统配置
1.1 安装Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io
1.2 下载nginx镜像
我们先搜索nginx镜像。
sudo docker search nginx
nginx镜像是存在的。
jishu@Jishu:~$ sudo docker search nginx
[sudo] password for jishu:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 13369 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1827 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 778 [OK]
......
下载nginx镜像到本地。
sudo docker pull nginx
docker pull结束后,我们用docker images命令看看下载是否成功。
jishu@Jishu:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 274c632b9f13 2 weeks ago 125MB
nginx镜像已经存在,下载成功。
2.配置安装nginx服务
2.1 配置默认nginx WEB服务
用docker run命令来启动默认配置的nginx容器实例。
sudo docker run --name nginx-test -p 8051:80 -d nginx
-name参数:容器命名为nginx-test
-p参数: 端口映射,将本地8051端口映射到容器内部的80端口
-d参数:设置容器在在后台一直运行
命令执行完后,会打印容器ID,用docker ps命令可以查看到容器已经在运行。
jishu@Jishu:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
292df1d11d48 nginx "/docker-entrypoint.…" 37 seconds ago Up 35 seconds 0.0.0.0:8051->80/tcp nginx-test
用浏览器访问web服务http://ip:8051,看到Nginx的web服务已经启动。
2.2 配置自定义WEB服务
docker run命令可以用-v 参数把容器实例里的服务目录映射为本地目录。
先用docker exec命令进入容器实例来看一下nginx WEB服务的目录。
sudo docker exec -it 292df1d11d48 /bin/bash
进入容器实例,找到nginx WEB服务的HTML目录为:/usr/share/nginx/html
nginx服务的配置文件目录为:/etc/nginx/nginx.conf
nginx服务的log目录为:/var/log/nginx
我们以HTML目录为例来验证目录映射。
在/home/jishu目录下创建自定义目录/docker/nginx/testpage,创建自定义网页index.html,我们在index.html中打印 “Just a test!!!”,进行功能验证。
用docker stop命令停止存在的nginx容器实例。
重新创建docker镜像实例,并映射HTML网页的目录。
sudo docker run --name nginx-test-1 -v /home/jishu/docker/nginx/testpage/:/usr/share/nginx/html -p 8052:80 -d nginx
新建的nginx-test-1实例已经创建成功并启动。
jishu@Jishu:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
59be895be461 nginx "/docker-entrypoint.…" 9 seconds ago Up 7 seconds 0.0.0.0:8052->80/tcp nginx-test-1
292df1d11d48 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 0.0.0.0:8051->80/tcp nginx-test
用浏览器访问web服务http://ip:8052,看到浏览器页面显示“Just a test!!!”,nginx WEB服务的HTML目录映射成功。
通过"-v"参数,还可以映射其它nginx目录。