目录

1. 效果

2. 部署过程

3. 过程问题

3.1 使用 docker 命令时,提示权限不够


1. 效果

这次的目标很简单,将html页面部署到虚拟机上,并在同一网段内能通过ip来访问该网站。在本例中,通过 192.168.103.xx:9999 来成功访问html,效果如下:

Linux服务器部署了docker情况下ping不通服务器 linux docker iis_docker

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

Linux服务器部署了docker情况下ping不通服务器 linux docker iis_html_02

8)退出容器

输入 exit 并回车,或直接按 ctrl+d 即可退出容器

9)重启容器

docker restart mynginx

10)使用真机进行访问,若出现下图界面则表示部署成功!

Linux服务器部署了docker情况下ping不通服务器 linux docker iis_docker

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用户组