经过docker 将 container 执行起来了,不是为了看看容器的状态,而是想使用 container 中的功能.介绍两种方式来使用容器中的功能.javascript
经过端口的方式来使用 container 提供的服务是最简单的了.只要经过 -p
或者 --publish
选项来向宿主机暴露服务端口就能够了.css
好比咱们能够这样在后台启动一个 redis 服务.并将 container 中的 redis 的服务端口6379映射到宿主机上的7788端口.html
docker run -d -p 7788:6379 redis
在宿主机上,咱们能够经过下面的命令访问 容器中的服务java
redis-cli -p 7788 redis 127.0.0.1:7788>
这里须要注意的是 -p 选项经过:
来区别宿主机上的端口和容器中的端口; :
前的是宿主机的, :
后的是容器的. 若是有多个端口须要映射的话能够屡次使用 -p 选项,例如: -p 3008:80 -p 7788:6379
就是将容器中的80,6379端口,分别映射到宿主机的3008和7788端口node
例如咱们使用 nginx web服务器来提供个静态资源的 web 服务; 静态资源是在宿主机上的, 咱们就能够采用磁盘映射的方式来向 container 提供咱们的静态资源. 例如当前路径就是本 blog 的 静态 web 资源.nginx
$ls _site CNAME css imgs node.js request.js typescript aftercode editor index.html nodejs stack unittest cat2 feed.xml javascript prototype test youtube
咱们就能够经过 -v
选项来将当前目录的绝对路径映射到 container 中的 /usr/share/nginx/html
.这样 nginx 启动的时候使用的就是咱们 _site
文件夹中的静态资源了;固然了最后还要将 nginx 的 80 映射到宿主机的3009端口上,才能在本地 http://127.0.0.1:3009
端口访问 web 服务.web
docker run --rm -v $PWD/_site:/usr/share/nginx/html -p 3009:80 nginx
经过 -v 选项主要注意的就是: 宿主机须要映射的地址必须使用绝对地址来指定; 若是须要映射多个路径的能够使用和映射端口的方式经过多个 -v
来完成映射.redis
但愿你们喜欢.docker