Docker系列(二)-Docker进阶操作
Contents
接上篇文章中介绍了Docker容器基础的启动与停止. 这篇将会介绍几个Docker启动时的进阶操作, 包括磁盘挂载, 端口映射等.
容器磁盘挂载
我们什么时候会考虑将宿主机的文件或是目录挂载到容器中呢, 一般有这么几种情况:
- 公有配置文件
- 容器日志想保留在宿主机中
- 数据库目录
- 其他黑科技用法, 比如挂载socket, 挂载pid file, 之后会讲到
其实挂载的目的时为了当一个容器失效时, 其他容器再启动也能接着工作.
这里是Docker volumes官方文档, 挂载的命令很简单:
1 | # 将本机的/tmp目录挂载为容器的/home/corvo/tmp目录 |
你不必担心文件或是文件夹不存在, 如果启动容器时, 挂载的文件夹不存在, Docker会主动 为你创建这一项.
端口映射
端口映射主要是想将容器中的服务暴露给外部使用, 例如我们想要把容器中的80端口 当做宿主机的10080端口, 可以这样使用:
1 | $ docker run \ |
与宿主机网络和进程的交互
这个部分主要介绍两个参数-net host
, -pid host
, 他们分别允许你使用宿主机的
网络空间以及进程空间.
对于-net host
来说, 你可以直接访问到宿主机上开放的端口, 使用127.0.0.1
即可.
而对于-pid host
来说, 你可以使用ps -aux
这种命令, 查看宿主机上的所有进程,
包括docker自己, 甚至, 如果你的docker用户有权限, 你甚至可以使用kill命令.
如果你还想进一步操作, 可以使用--privileged
这种命令, 它可以保证你在容器中的
root用户与宿主机上的root用户拥有一样的权限.
上面的操作是有安全风险的, 如果我们只是想启动一个普通的web服务, 完全没必要使用, 写在这里, 只是为了说明docker有这么几项功能. 有关这几个命令的使用, 之后我会在Docker奇用的几个地方给出.
重启策略
使用--restart
, 你可以指定重启的策略, 可以指定容器在什么时候应该重启或退出.
重启策略有4种, no
, on-failure[:max-retries]
, always
, unless-stopped
,
详细的说明请大家参阅官方文档, 一般我使用unless-stopped
居多, 也就是只要
容器没有自己退出, docker启动时就会将其启动. 假如机器重启了, docker能自动把
这些容器启动.