目录
1. 效果
2. 部署过程
3. 过程问题
3.1 使用 docker 命令时,提示权限不够
1. 效果
这次的目标很简单,将html页面部署到虚拟机上,并在同一网段内能通过ip来访问该网站。在本例中,通过 192.168.103.xx:9999 来成功访问html,效果如下:
2. 部署过程
前提准备:
1、VMware虚拟机
2、XShell
3、CentOS 7 镜像文件
简单准备过程,本文不赘述:
1、使用 VMware 虚拟机安装 CentOS 7 系统
2、安装好系统后配置 CentOS 系统的网络等各项配置
3、可以使用 XShell 连接虚拟机上的该系统来进行命令行的操作(此步也可以直接在 VMware 上操作)
1)安装Docker,安装后启动服务
curl -sSL https://get.daocloud.io/docker | sh
sudo systemctl start docker
2)在 Docker 环境拉取 nginx 镜像
从这步开始,当你运行 docker 命令时有可能报错权限不足,解决方法见下方 3.1
docker pull nginx
3)新建并启动 nginx 容器
如下方式二选一,本例中使用 简单启动 的方式。
备注:
- 9999:80:端口映射。真机通过9999端口来访问虚拟机中的 html,但 html 仍运行在虚拟机的80端口上。
- --name <newName>:给容器 取名 字。
- -v A:B :挂载文件,将宿主机上的A文件挂载到B路径下。可以理解为:复制了一份A文件的副本到B路径下。(也就是把Linux本机上的文件,复制一份放到容器的路径下)
# 简单启动
docker run --name mynginx -p 9999:80 -d nginx
# 将宿主机的html文件挂载到nginx下的启动(其中的路径需要根据实际情况来配置)
Docker run –it –p 9999:80 -–name mynginx –v /var/www/html/dist:/usr/share/nginx/html/ –v /etc/nginx/sites-available/default:/etc/nginx/conf.d/default.conf nginx
4)进入容器
docker exec -it mynginx /bin/bash
5)更新容器内部的安装源
备注:
- 可以理解为:进入到一个初始化的环境,没有 apt-get,也没有 vi,需要重新安装。
apt-get update
6)安装 vi 文本编辑器
apt-get install vim
7)编辑 nginx 配置文件,修改后保存并退出
将第一个红圈中的路径改为你要访问的 html 所在路径,建议将 html 取名为 index.html ,因为 nginx 默认访问的是 index.html 文件。
备注:
- 进入文件后,按 i 进入编辑模式
- 按 esc 退出编辑模式(也称命令行模式)
- 在命令行模式下,按冒号进入底行模式;
- 在底行模式下
- 输入 wq:保存并退出
- q!:不保存并强制退出
# 进入配置文件
vim etc/nginx/conf.d/default.conf
8)退出容器
输入 exit 并回车,或直接按 ctrl+d 即可退出容器
9)重启容器
docker restart mynginx
10)使用真机进行访问,若出现下图界面则表示部署成功!
3. 过程问题
3.1 使用 docker 命令时,提示权限不够
1)问题
每次输入命令都需要加前缀 sudo 来保证命令的权限,以下是给用户授权的方法,让你能够正常地按第2点的操作过程走下去
2)报错
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json: dial unix /var/run/docker.sock: connect: permission denied
3)原因
docker 进程使用 Unix Socket,而不是 TCP 端口。默认情况下,Unix Socket 属于 root 用户的权限,因此 需要 root 权限 才能访问。
4)方法
回到 CentOS 的起始目录进行如下操作:
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $XXX docker #检测当前用户是否已经在docker用户组中,其中XXX为用户名, 例如我的, sudo gpasswd -a $jokerls docker
sudo gpasswd -a $USER docker #将当前用户添加至docker用户组
newgrp docker #更新docker用户组