[Docker] Win10中安装Docker并运行Nginx镜像

附:docker容器命令

命令 用途 示例 教程
docker pull 获取镜像 (image) docker pull nginx -
docker build 使用 Dockerfile 创建镜像 (image) docker build github.com/creack/docker-firefox 查看
docker images 列出本地镜像 (image) docker images 查看
docker cp 用于容器与主机之间的数据拷贝 docker cp /www/runoob 96f7f14e99ab:/www/ 查看
docker commit 从容器创建一个新的镜像 docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1 查看
docker rmi 删除本地一个或多个镜像 (image) docker rmi -f runoob/ubuntu:v4 查看
docker run 创建一个新的容器并运行一个命令 (container) docker run --name mynginx -d nginx:latest 查看
docker ps 列出容器列表 docker ps 查看
docker stop 关闭容器 - -
docker start 启动容器 - -
docker restart 重启容器 - -
docker attach | exec 进入容器内部 - -
docker inspect 获取容器/镜像的元数据 - -
docker logs 获取容器的日志 - 查看
docker top 查看容器中运行的进程信息 - -
docker port 列出指定的容器的端口映射 docker port mymysql 查看
docker wait 阻塞运行直到容器停止,然后打印出它的退出代码 docker wait CONTAINER -
docker rm 删除容器 - -

一、安装Docker

进入官网:https://www.docker.com/products/docker-desktop

可能需要先注册登录,很简单的。

点击 Download Desktop for Mac and Windows 后进入下载流程

选择for windows,点击 Next Step 开始下载。

我下载回来的包 500 多M,还是比较大的,双击安装即可。

安装完成后,打开cmd,运行:

docker -v

能正常显示出当前docker的版本号说明安装成功。

注意:可能更新的Win10系统,还需要下载Linux内核更新包:

  • 下载最新包: 适用于 x64 计算机的 WSL2 Linux 内核更新包
    • 备注: 如果使用的是 ARM64 计算机,请下载 ARM64 包。 如果不确定自己计算机的类型,请打开命令提示符或 PowerShell,并输入:systeminfo | find "System Type"
  • 运行上一步中下载的更新包。 (双击以运行 - 系统将提示你提供提升的权限,选择“是”以批准此安装。)

二、运行Nginx镜像

进入 Docker Hub 镜像仓库。

搜索 nginx

我们可以看到第一个就是官方的,直接点击进入

在这个页面选择对应的镜像 tag 后,复制执行即可下载。如:docker pull nginx:1.20.0-perl

下载完成后,我们可以执行以下命令查看已经拉取回来的镜像。

docker images

接下来,我们就可以运行这个nginx镜像了。

运行镜像有两种方式:前台后台

前台运行

docker run hub.c.163.com/library/nginx

通过上面的命令我们运行起了nginx,你会发现命令行什么反应都没有了(可以通过Ctrl + c来关闭)。
我们重开一个cmd,运行:

docker ps

查看是否成功运行了nginx。

可以看到,nginx 正在运行。我们在之前的窗口 Ctrl + c 关闭它后,再运行 docker ps ,进程就会被关闭了。

后台运行

运行容器的格式

docker run --name container-name:tag -d image-name

// --name:自定义容器名,不指定时,docker 会自动生成一个名称
// -d:表示后台运行容器
// image-name:指定运行的镜像名称以及 Tag

进入容器内部

docker exec 命令用于进入容器内部, -it 是这个命令的可选参数。-i 表示保证我们输入有效,-t 是给我们分配一个伪终端,多个参数可以连起来写,就成了 -it

参数后边是容器名称或id,可以只输入开头的几个字符,它就会自动帮我们识别到。

那么接下来,我们运行命令:

docker exec -it 46a bash
# 46a 是我们上面运行的容器id头三位,您需要换成自己的

可以看到像是进入了一个新的主机。其实这确认是一个虚拟主机,因为我们的 nginx 本来就是运行在 linux 容器上,在这里我们可以执行 **linux **的命令。

我们可以通过命令

which nginx

来查看nginx在什么位置

然后可以通过 exit 命令退出到之前的主机。

exit

停止容器

# docker stop [容器id]
docker stop 46a

三、让浏览器可以访问

我们上面虽然启动了nginx,但你可能已经发现,我们在浏览器中无法访问容器中的nginx。

我们先停止已经启动的容器,再执行下面的命令:

docker run -d -p 8080:80 nginx

如果windows弹出防火墙提示,点击允许访问。

这个时候我们再来通过 netstat 命令检查一下是否真的打开了 8080 端口

netstat -na|grep 8080

可以看到,已经是监听状态了。我们直接在浏览器中打开试试。

四 、创建容器挂载

上面第三步我们的nginx虽然跑起来了,但只是个默认页。实际上我们一般需要代理转发,需要修改配置。我们直接修改容器的配置很不方便,这时候,可以用上挂载功能,让容器加载或写入宿主机器上的挂载目录。这样,我们直接在宿主机上就可以修改配置或查看日志了。

创建挂载目录:

mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /homt/nginx/html

将容器中的 nginx.conf 文件复制到宿主机

# 生成容器
docker run --name nginx -p 8090:80 -d nginx
# 将容器 nginx.conf 文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/
# 删除这个容器
docker rm nginx

创建 Nginx 容器并运行

docker run \
--name nginx \
-p 80:80 \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx

单行命令模式:

docker run --name nginx -p 8090:80 -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d nginx
  • 第一个-v:挂载nginx的主配置文件,以方便在宿主机上直接修改容器的配置文件
  • 第二个-v:挂载容器内nginx的日志,容器运行起来之后,可以直接在宿主机的这个目录中查看nginx日志
  • 第三个-v:挂载静态页面目录
  • \: shell 命令换行
posted @ 2019-07-24 16:43  我爱我家喵喵  阅读(6271)  评论(0编辑  收藏  举报