如果出现
Using default tag: latest Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=nginx&tag=latest": dial unix /var/run/docker.sock: connect: permission denied
查看 docker 命令权限问题
在远程 Linux 服务器上,使用docker 安装 Nginx ,以及对 Nginx 修改配置,在这里提供两种修改方式(目前我个人使用的是第二种方式)
创建 Nginx 服务器
docker search nginx
docker pull nginx
docker images nginx
docker run --name nginxText -p 80:80 -d nginx
–name :指的是创建容器后的名字
-d : 指的是对应镜像名
-p 指定主机与容器内部的端口号映射关系,格式 -p [宿主机端口号]:[容器内部端口],此处我使用了主机80端口,映射容器80端口
修改方式一:进入到nginx容器内部修改
适合改动少的情况
这里提供进入容器的方式,对应文件位置,退出容器方式。具体修改内容请根据需求调整。
docker exec -it 容器名或者容器ID bash # 进入容器的命令行
例如: docker exec -it nginxText bash
cd /etc/nginx
ls -l
pwd
查看当前所在目录,目录下有两个nginx默认页面cd /usr/share/nginx/html
ls -l
cd /var/log/nginx
ls -l
修改方式二:将nginx容器内部配置文件挂载到主机(此方式可接在下载Nginx镜像后)
将nginx容器内部配置文件挂载到主机,之后就可以在主机对应目录修改即可,适用于大部分场景。
# 创建挂载目录
mkdir -p /home/ubuntu/mysoft/docker-data/nginx/conf
mkdir -p /home/ubuntu/mysoft/docker-data/nginx/log
mkdir -p /home/ubuntu/mysoft/docker-data/nginx/html
docker run --name nginxText -p 80:80 -d nginx
–name :指的是创建容器后的名字
-d : 指的是对应镜像名
-p 指定主机与容器内部的端口号映射关系,格式 -p [宿主机端口号]:[容器内部端口],此处我使用了主机80端口,映射容器80端口
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
docker cp [容器名/容器ID]:/容器默认配置文件地址 /粘贴文件地址
此步骤所有命令
# 生成容器
docker run --name nginx -p 80:80 -d nginx
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/ubuntu/mysoft/docker-data/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/ubuntu/mysoft/docker-data/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/ubuntu/mysoft/docker-data/nginx/
# 将容器中的日志log文件夹复制到宿主机
docker cp nginx:/var/log/nginx/ /home/ubuntu/mysoft/docker-data/nginx/log
命令:
停止容器:docker stop dbc
移除容器:docker rm dbc
docker run \
-p 80:80 \
--name breed-web \
-v /home/ubuntu/mysoft/docker-data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/ubuntu/mysoft/docker-data/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/ubuntu/mysoft/docker-data/nginx/log:/var/log/nginx \
-v /home/ubuntu/mysoft/docker-data/nginx/html:/usr/share/nginx/html \
-d nginx
(建议将命令在文档中编辑好后复制,再 Shift + Insert 粘贴到 xshell)
使用 docker ps
查看,容器已经创建
在浏览器访问主机(例如:192.168.124.182:9002),会看到nginx欢迎页,如果你是云服务器(云服务器公有 IPv4 地址,例如http://51.65.205.216:9000/),请记得开放对应的外网端口
4.1(可选)单行命令模式
docker run -p 9000:80 --name breeding -v /home/ubuntu/mysoft/docker-data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/ubuntu/mysoft/docker-data/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/ubuntu/mysoft/docker-data/nginx/log:/var/log/nginx -v /home/ubuntu/mysoft/docker-data/nginx/html:/usr/share/nginx/html -d nginx
命令 | 描述 |
---|---|
–name breeding | 启动容器的名字 |
-d | 后台运行 |
-p 9000:80 | 将容器的 9000 端口映射到主机的 80 端口 |
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf | 挂载nginx.conf配置文件 |
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d | 挂载nginx配置文件 |
-v /home/nginx/log:/var/log/nginx | 挂载nginx日志文件 |
-v /home/nginx/html:/usr/share/nginx/html | 挂载nginx内容 |
nginx | 指的是对应镜像名 |
\ | shell 命令换行 |
docker update breeding --restart=always
breeding 为容器名称
# 重启容器
docker restart breeding
附件1:
容器命令
docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器
docker ps -l # 查看最近一次运行的容器
docker create 容器名或者容器ID # 创建容器
docker start [-i] 容器名 # 启动容器
docker run 容器名或者容器ID # 运行容器,相当于docker create + docker start
docker attach 容器名或者容器ID bash # 进入容器的命令行(退出容器后容器会停止)
docker exec -it 容器名或者容器ID bash # 进入容器的命令行
docker stop 容器名 # 停止容器
docker rm 容器名 # 删除容器
docker top 容器名 # 查看WEB应用程序容器的进程
docker inspect 容器名 # 查看Docker的底层信息
参考:
Docker 安装 Nginx 容器 (完整详细版)
使用docker安装nginx
docker快速安装nginx以及实现反向代理(上)
其他:
Docker 日常命令大全(完整详细版)