1、Nginx 搜索,下载,查看
# 搜索 nginx 镜像
docker search nginx
# 下载 nginx 镜像
docker pull nginx
# 查看所有镜像
docker images
2、新建 Nginx 配置文件夹,准备挂载文件
mkdir -p /home/20221125/mynginx/conf
mkdir -p /home/20221125/mynginx/log
mkdir -p /home/20221125/mynginx/html
mkdir -p /home/20221125/mynginx/www
mkdir -p /home/20221125/mynginx/{conf,log,html,www}
mkdir -p /home/20221125/mynginx/conf && cd /home/20221125/mynginx
pwd
3、生成容器
# 生成容器
docker run --name nginx -p 9001:80 -d nginx
# 容器IP地址
docker inspect nginx
# 查看容器IP地址
docker inspect nginx | grep 'IPAddress'
# 查看容器 hostname、ip地址、环境变量
docker exec nginx hostname
docker exec nginx ip addr
docker exec nginx env
# 进入容器
docker exec -it nginx /bin/bash
docker exec -it nginx bash
4、容器文件 复制到 宿主机,把容器文件复制到刚才创建的文件夹中
# 容器文件 复制到 宿主机
docker cp <容器路径> <宿主机路径>
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/20221125/mynginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/20221125/mynginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/20221125/mynginx/
5、删除刚才创建的 nginx 容器
# 直接执行docker rm nginx或者以容器id方式关闭容器
# 找到nginx对应的容器id
docker ps -a
# 关闭该容器
docker stop nginx
# 删除该容器
docker rm nginx
# 删除正在运行的nginx容器
docker rm -f nginx
# 停止和删除容器
docker stop nginx && docker rm nginx
6、生成容器 并且 创建挂载【执行成功】
docker run \
-p 8086:80 \
--name first_nginx \
-v /home/20221125/mynginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/20221125/mynginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/20221125/mynginx/log:/var/log/nginx \
-v /home/20221125/mynginx/html:/usr/share/nginx/html \
-d nginx:latest
# 参数说明
-v 宿主机路径:容器路径
-v 本地宿主机目录:容器目录
# 进入容器
docker exec -it first_nginx /bin/bash
docker exec -it first_nginx bash
单行模式,生成容器 并且 创建挂载【执行成功】
docker run -p 8086:80 --name first_nginx -v /home/20221125/mynginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/20221125/mynginx/conf/conf.d:/etc/nginx/conf.d -v /home/20221125/mynginx/log:/var/log/nginx -v /home/20221125/mynginx/html:/usr/share/nginx/html -d nginx:latest
# 进入容器
docker exec -it first_nginx /bin/bash
docker exec -it first_nginx bash
7、查看容器IP地址
# 查看容器IP地址
docker inspect first_nginx
# "IPAddress": "172.17.0.2"
# 查看容器IP地址
docker inspect first_nginx | grep 'IPAddress'
# 查看容器 hostname、ip地址、环境变量
docker exec first_nginx hostname
docker exec first_nginx ip addr
docker exec first_nginx env
# 进入容器
docker exec -it first_nginx /bin/bash
docker exec -it first_nginx bash
# 停止和删除容器
docker stop first_nginx && docker rm first_nginx
8、检查是否安装成功
dokcer ps
curl 127.0.0.1:8086
# 打开浏览器,地址栏输入 http://localhost:8086/
9、修改 /home/20221125/mynginx/html/index.html 页面文件,随便修改点内容,重启容器
# 跳转目录
cd /home/20221125/mynginx/html
# 编辑文件
vim index.html
# 输入字母【i】切换到编辑模式,随便修改点内容
# 按Esc键,回到命令模式
# 输入【:wq】保存退出
# 重启容器
docker restart first_nginx
curl 127.0.0.1:8086
10、Nginx 反向代理,修改 /home/20221125/mynginx/conf/conf.d/default.conf 配置文件
# 跳转目录
cd /home/20221125/mynginx/conf/conf.d
# 编辑文件
vim default.conf
# 输入字母【i】切换到编辑模式,修改如下
server {
location / {
proxy_pass http://172.17.0.3:80;
root /usr/share/nginx/html;
index index.html index.htm;
}
}
# 172.17.0.3:80 信息说明
# 172.17.0.3 是容器IP地址
# 80 是容器端口
# 按Esc键,回到命令模式
# 输入【:wq】保存退出
# 重启容器
docker restart first_nginx
11、Nginx 负载均衡,修改 /home/20221125/mynginx/conf/conf.d/default.conf 配置文件
# 跳转目录
cd /home/20221125/mynginx/conf/conf.d
# 编辑文件
vim default.conf
# 输入字母【i】切换到编辑模式,修改如下
upstream docker_http {
server 172.17.0.3:80 weight=1;
server 172.17.0.4:80 weight=1;
server 172.17.0.5:80 weight=1;
}
server {
location / {
proxy_pass http://docker_http;
root /usr/share/nginx/html;
index index.html index.htm;
}
}
# 172.17.0.3:80 信息说明
# 172.17.0.3 是容器IP地址
# 172.17.0.4 是容器IP地址
# 172.17.0.5 是容器IP地址
# 80 是容器端口
# 按Esc键,回到命令模式
# 输入【:wq】保存退出
# 重启容器
docker restart first_nginx
12、总结
# nginx 配置文件目录 /etc/nginx
cd /etc/nginx
ls -l
# nginx 默认首页 html 文件目录 /usr/share/nginx/html
cd /usr/share/nginx/html
ls -l
# nginx 日志文件目录 /var/log/nginx
cd /var/log/nginx
ls -l
# 退出容器
exit
13、Docker 部署网址,ASP.NET Core Docker 部署 Dockerfile
# Step 1: 把源码拷贝到Linux服务器【/home/king/20221125/DockerProject】目录
# Step 2: 把Dockerfile拷贝到Linux服务器【/home/king/20221125/DockerProject/Dockerfile】目录
# Step 3: 跳转到部署文件的根目录
cd /home/king/20221125/DockerProject
# Step 4: 执行 build 命令,生成一个镜像文件,镜像名称叫做【net3v1125:2221】
docker build -t net3v1125:2221 -f Dockerfile .
# Step 5: 执行 run 命令,创建并运行容器,注意上边的镜像名称使用的是【net3v1125:2221】
docker run -itd -p 8081:80 --name docker8081 net3v1125:2221
docker run -itd -p 8082:80 --name docker8082 net3v1125:2221
docker run -itd -p 8083:80 --name docker8083 net3v1125:2221
# Step 6: 查看容器IP地址
docker inspect first_nginx
docker inspect docker8081
docker inspect docker8082
docker inspect docker8083
# Step 7: 获取容器 hostname、ip地址、环境变量
docker exec first_nginx hostname
docker exec first_nginx ip addr
docker exec first_nginx env
数据包转发
# 跳转目录
cd /usr/lib/sysctl.d
# 查看文件
cat /usr/lib/sysctl.d/50-default.conf
# 编辑文件
vim /usr/lib/sysctl.d/50-default.conf
# 末尾添加内容
net.ipv4.ip_forward = 1
# 重启network
systemctl restart network
防火墙、开放端口
# 查看防火墙状态
systemctl status firewalld
或
firewall-cmd --state
# 暂时关闭防火墙
systemctl stop firewalld
# 永久关闭防火墙(慎用)
systemctl disable firewalld
# 开启防火墙
systemctl start firewalld
# 开放指定端口
firewall-cmd --zone=public --add-port=8067/tcp --permanent
firewall-cmd --zone=public --add-port=9002/tcp --permanent
# 关闭指定端口
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
# 立即生效
firewall-cmd --reload
# 查看开放的端口
firewall-cmd --zone=public --list-ports
docker-compose
# Step 1: 创建 docker-compose.yml 文件
cd /home/20221125/mynginx
vim docker-compose.yml
# Step 2: 编辑内容如下
version: "3.0"
services:
nginxServer:
image: nginx
container_name: first_nginx
restart: always
privileged: true
ports:
- 8086:80
- 80:80
- 443:443
volumes:
- /home/20221125/mynginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /home/20221125/mynginx/conf/conf.d:/etc/nginx/conf.d
- /home/20221125/mynginx/log:/var/log/nginx
- /home/20221125/mynginx/html:/usr/share/nginx/html
# Step 3: 执行命令
docker-compose up -d
*
*
*