docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 13492 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1841 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 780 [OK]
linuxserver/nginx An Nginx container, brought to you by LinuxS… 122
bitnami/nginx Bitnami nginx Docker Image 87 [OK]
……
docker pull nginx
# 等待下载完成后,就可以在本地镜像列表里查到REPOSITORY为nginx的镜像。
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 0901fa9da894 10 days ago 132MB
先运行容器,让 nginx 创建默认配置
docker run -p 8081:80 --name mynginx -d nginx
然后,在主机(自己定合适的路径)创建目录 nginx, 用于存放后面的相关东西。
# 首先,创建目录 nginx, 用于存放后面的相关东西。
mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf ~/nginx/conf.d
# 容器 ID 可以用 docker ps 命令查看:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
42960466a6ce nginx "/docker-entrypoint.…" 41 seconds ago Up 40 seconds 0.0.0.0:8081->80/tcp mynginx
# 42960466a6ce 就是ID
# 拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录
docker cp 42960466a6ce:/etc/nginx/nginx.conf ~/nginx/conf
# 拷贝容器内 Nginx 默认配置文件夹 conf.d 到本地当前目录下的 nginx 目录
docker cp 42960466a6ce:/etc/nginx/conf.d ~/nginx
# 如果需要测试验证,可以拷贝 index.html
docker cp 42960466a6ce:/usr/share/nginx/html/index.html ~/nginx/www
www: 目录将映射为 nginx 容器配置的虚拟目录。
logs: 目录将映射为 nginx 容器的日志目录。
conf: 目录里的配置文件将映射为 nginx 容器的配置文件。
conf.d: 目录里的配置文件将映射为 nginx 容器的配置文件。
docker run -d -p 8082:80 --name nginx-8082 -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/conf.d:/etc/nginx/conf.d -v ~/nginx/logs:/var/log/nginx nginx
命令说明:
-p 8082:80: 将容器的 80 端口映射到主机的 8082 端口。
--name nginx-8082:将容器命名为 nginx-8082。
~/nginx/www:/usr/share/nginx/html:将我们自己创建的 www 目录挂载到容器的 /usr/share/nginx/html。
-v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将我们自己创建的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf。
-v ~/nginx/logs:/var/log/nginx:将我们自己创建的 logs 挂载到容器的 /var/log/nginx。
启动以上命令后进入 ~/nginx/www 目录,跟换目录下的内容为自己的网站内容:
cd ~/nginx/www
ls
# 以下是我的测试网站内容
index-1.html index.html
到此,已经可以访问 http://宿主机IP:8082 站点了。