Ansible `docker_container` 模块

Ansible docker_container 模块

一、简介

  • 功能docker_container 模块用于管理 Docker 容器。它可以创建、启动、停止、删除容器,管理容器的配置、网络和挂载卷等。这个模块支持大多数 Docker 容器的管理任务,是 Ansible 中用于自动化容器化部署的核心工具。
  • 使用场景:常用于自动化部署和管理 Docker 容器化应用,如启动新的应用服务、更新现有容器、管理容器网络和存储配置等。

二、基本用法

2.1 语法

ansible <pattern> -m docker_container -a "name=<container_name> image=<image_name> [other options]"
  • <pattern>:指定要操作的主机或主机组,例如 alldocker_hosts
  • -m docker_container:指定使用 docker_container 模块。
  • name=<container_name>:指定容器的名称。
  • image=<image_name>:指定容器使用的 Docker 镜像。

2.2 常见 state 参数

  • present:确保容器已创建并正在运行。
  • started:确保容器已启动,如果容器已停止,则重新启动它。
  • stopped:确保容器已停止。
  • absent:确保容器已删除。

三、使用示例

3.1 启动新容器

ansible all -m docker_container -a "name=myapp image=nginx state=started"
  • 解释:在所有主机上使用 nginx 镜像启动一个名为 myapp 的容器。如果容器已经存在但未运行,docker_container 模块会启动它。

3.2 停止并删除容器

ansible all -m docker_container -a "name=myapp state=absent"
  • 解释:在所有主机上停止并删除名为 myapp 的容器。

3.3 使用环境变量启动容器

ansible all -m docker_container -a "name=myapp image=myapp:latest env='ENV_VAR1=value1 ENV_VAR2=value2' state=started"
  • 解释:在所有主机上启动一个名为 myapp 的容器,并传递环境变量 ENV_VAR1=value1ENV_VAR2=value2

3.4 启动带有挂载卷的容器

ansible all -m docker_container -a "name=myapp image=myapp:latest volumes='/host/path:/container/path' state=started"
  • 解释:在所有主机上启动一个名为 myapp 的容器,并将主机路径 /host/path 挂载到容器的 /container/path 路径下。

3.5 启动容器并连接到指定网络

ansible all -m docker_container -a "name=myapp image=myapp:latest networks='my_network' state=started"
  • 解释:在所有主机上启动一个名为 myapp 的容器,并将其连接到名为 my_network 的 Docker 网络。

3.6 重新启动一个容器

ansible all -m docker_container -a "name=myapp state=restarted"
  • 解释:在所有主机上重新启动名为 myapp 的容器。

四、其他常用选项

4.1 image

  • 功能:指定用于创建容器的 Docker 镜像,可以包括标签(如 nginx:latest)。

  • 用法

    ansible all -m docker_container -a "name=myapp image=myapp:1.0 state=started"
    
    • 解释:使用 myapp:1.0 镜像启动一个名为 myapp 的容器。

4.2 volumes

  • 功能:指定要挂载到容器的卷,格式为 host_path:container_path,可以是多个卷的列表。

  • 用法

    ansible all -m docker_container -a "name=myapp image=myapp:latest volumes='/host/path:/container/path'"
    
    • 解释:将主机路径 /host/path 挂载到容器的 /container/path

4.3 env

  • 功能:设置容器的环境变量,格式为 KEY=value,可以是多个变量的列表。

  • 用法

    ansible all -m docker_container -a "name=myapp image=myapp:latest env='ENV_VAR1=value1 ENV_VAR2=value2'"
    
    • 解释:启动容器并设置环境变量 ENV_VAR1ENV_VAR2

4.4 networks

  • 功能:指定容器要连接的 Docker 网络,可以是单个网络或多个网络的列表。

  • 用法

    ansible all -m docker_container -a "name=myapp image=myapp:latest networks='my_network'"
    
    • 解释:启动容器并连接到 my_network 网络。

4.5 ports

  • 功能:映射容器端口到主机端口,格式为 host_port:container_port,可以是多个端口的列表。

  • 用法

    ansible all -m docker_container -a "name=myapp image=myapp:latest ports='8080:80'"
    
    • 解释:将容器的端口 80 映射到主机的 8080 端口。

4.6 restart_policy

  • 功能:设置容器的重启策略,如 always(始终重启)、unless-stopped(除非手动停止)、on-failure(仅在失败时重启)等。

  • 用法

    ansible all -m docker_container -a "name=myapp image=myapp:latest restart_policy=always"
    
    • 解释:设置容器的重启策略为始终重启(always)。

五、注意事项

  • 资源限制:启动容器时,考虑配置 memorycpu_shares 等资源限制,以避免容器占用过多资源影响主机性能。
  • 状态一致性:在多主机环境中,确保容器的状态在所有目标主机上保持一致。如果需要跨多个主机部署服务,请注意容器的网络和存储配置的一致性。
  • 日志管理:配置 log_driverlog_options 来管理容器的日志,避免日志占用过多磁盘空间。
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟生啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值