软硬件环境
云服务器,
Ubuntu Server 20.04 LTS 64bit,docker version 20.10.7
安装步骤
- 拉取镜像
docker pull nginx
- 启动容器
-
~
目录下新建nginx
文件夹,方便管理。mkdir nginx cd nginx
-
因为docker挂载文件时需要宿主机已有同名文件。所以先启动一个
test
容器,将nginx.conf
文件复制到宿主机。docker run --name test -d nginx docker cp test:/etc/nginx/nginx.conf etc/nginx
-
然后启动容器。
docker run --name nginx \ -p 18080:80 --privileged=true \ -v $PWD/etc/nginx/nginx.conf:/etc/nginx/nginx.conf \ -v $PWD/etc/nginx/conf.d:/etc/nginx/conf.d \ -v $PWD/usr/share/nginx/html:/usr/share/nginx/html \ -v $PWD/var/log/nginx:/var/log/nginx/ \ -d nginx # 18080 为宿主机端口,根据需要设置 # --privileged=true 赋予权限 # $PWD 指主机当前目录--这里指的是~/nginx,根据需要设置。主机目录:容器目录
-
此时打开 18080 端口即可出现一下页面,如果是云服务器记得开放端口。
使用shell脚本创建
将在当前用户文件夹下新建 nginx
文件夹用于挂载容器文件。
#!/bin/bash
echo "------start------"
# 拉取镜像
docker pull nginx
# 自定义容器名称
read -p "container name?" nginxName
# 挂载文件夹
path="nginx"
# 挂载目录
userPath="/home/$USER/$path"
echo $userPath
# 如果目录不存在,则创建目录
if [ ! -d "$userPath" ]
then
mkdir $userPath
fi
if [ ! -d "$userPath/etc/nginx" ]
then
mkdir -p "$userPath/etc/nginx"
fi
# 创建临时容器,拷贝出 nginx.conf 文件,然后删除容器
if [ ! -f "$userPath/etc/nginx/nginx.conf" ]
then
testName="test"
docker run --name $testName -d nginx
docker cp $testName:/etc/nginx/nginx.conf $userPath/etc/nginx
docker container stop $testName
docker container rm $testName
fi
docker run --name $nginxName \
-p 18080:80 --privileged=true \
-v $userPath/etc/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v $userPath/etc/nginx/conf.d:/etc/nginx/conf.d \
-v $userPath/usr/share/nginx/html:/usr/share/nginx/html \
-v $userPath/var/log/nginx:/var/log/nginx/ \
-d nginx
# $nginxName 为用户输入的容器名称
# 18080 为宿主机端口,根据需要设置
# --privileged=true 赋予权限
# $PWD 指主机当前目录--这里指的是~/nginx,根据需要设置。主机目录:容器目录
docker ps
echo "------end------"