在本小节里,咱们将从Image
仓库里拉取并运行Nginx
,尝试下将本地文件和container
文件相映射,Nginx
相比hello-world
多了些启动参数,咱们将逐个攻破。html
咱们在本机新建一个项目文件夹,在里面建立咱们的静态资源文件,随后往index.html
随便写点内容,执行下pwd
命令获取一下当前文件夹所在路径。nginx
mkdir class01 && cd class01 touch index.html pwd
咱们打开国内的Docker Hub镜像站,搜索Nginx
,第一个即是咱们所须要的,打开Image详情页,会有详细地使用说明,咱们先使用命令行方式去运行这个Image
。docker
docker pull nginx docker run --name my-nginx -d -p 3000:80 nginx
命令解释:bash
--name
为当前建立的container
起一个好记的昵称,默认状况下docker
会随机分配一个昵称spa
-d
即Deamon,可以让进程在后台运行而不阻塞命令行。命令行
-p
端口暴露,nginx一般运行在80端口,为了可以在主机访问container
里的nginx
,因此须要进行端口暴露,格式为:[host port]:[container port]
code
这时咱们在本机访问localhost:3000
,将会看到nginx
的欢迎页。htm
挂载本机目录进程
若是想让nginx
伺服本机的某个目录,咱们须要加上-v
命令,-v
即Volume,咱们但愿nginx
可以以当前文件夹做为资源目录,这个过程称为挂载,经过[Host dir]:[container dir]
的形式将主机的目录覆盖container
里面的目录,固然b
目录原本的内容不会丢失,当咱们不选择挂载时,其又将会生效。资源
docker ps # 显示当前正在运行的container,咱们能够找到刚刚建立的my-nginx docker stop my-nginx docker rm my-nginx # 中止并删除my-nginx docker run --name my-nginx -v [your pwd]:/usr/share/nginx/html:ro -d -p 3000:80 nginx
添加的[your pwd]
为最开始建立的index.html
所在的文件夹,如~/coding/docker-learn/class01
命令解释:
:ro
意为Read Only,对container
增长只读权限,默认为可读写
咱们再次访问localhost:3000
,显示的内容已是咱们建立的index.html
了。
复用挂载的目录
上一步咱们为my-nginx
这个container
挂载了数据卷,若是咱们新的container
也想用和my-nginx
相同的数据卷呢?咱们可使用--volumns-from
来复用数据卷地址。
docker run --name my-nginx1 --volumes-from my-nginx -d -p 3001:80 nginx
如今访问localhost:3001
即可以获得同3000端口同样的效果了,试试docker ps
看看目前运行中的container
信息吧。