摘要:原文是的官方文檔中大綱在的版本及以上支持。管理容器的生命周期。在中添加設置容器的主機名設置使用的鏡像把容器與其他容器連接起來比如。
大綱注:作者是 Cove Schneider,Joshua Conner, Pavel Antonov。原文是 Ansible 的官方文檔中 docker - manage docker containers
在 Ansible 的 1.4 版本及以上支持。
管理 docker 容器的生命周期。
選項屬性 | 必需 | 默認值 | 選擇 | 說明 |
---|---|---|---|---|
command | no | 在啟動的時候設置一個命令來運行容器 | ||
count | no | 1 | 設置運行的容器的數量 | |
detach | no | true | 以 detached 模式啟動,讓容器在后臺運行 | |
dns | no | 為容器設置自定義的 DNS 服務器 | ||
docker_api_version | no | docker-py default remote API version | 使用的 Remote API 版本,默認的是當前 docker-py 默認指定的版本(在 Ansible 1.8 中添加) | |
docker_url | no | unix://var/run/docker.sock | docker 主機發出命令的 URL | |
env | no | 設置環境變量,(比如:env="PASSWORD=sEcRe7,WORKERS=4") | ||
expose | no | 設置容器 expose 的端口,用于映射和 links。(如果這個端口已經在 Dockerfile 中 EXPOSE 了,你不需要再次 expose 它)。在 Ansible 1.5 中添加 | ||
hostname | no | 設置容器的主機名 | ||
image | yes | 設置使用的鏡像 | ||
links | no | 把容器與其他容器連接起來(比如:links=redis,postgresql:db)。在 Ansible 1.5 中添加 | ||
lxc_conf | no | LXC 配置參數,比如: lxc.aa_profile:unconfined | ||
memory_limit | no | 256 MB | 設置給容器分配的內存 | |
name | no | 設置容器的名字,不能與 count 參數同時使用,在 Ansible 1.5 中添加 | ||
net | no | 為 容器設置網絡模式(bridge, none, container: |
||
password | no | 設置遠程API 的密碼 | ||
ports | no | 使用 docker CLI-style 語法,設置私有到公共端口的映射技術參數, [([ |
||
privileged | no | 設置容器是否應該允許在 privileged 模式 | ||
publish_all_ports | no | 發布所有的暴露端口給主機接口,在 Ansible 1.5 中添加 | ||
registry | no | 用于拉取鏡像的遠程倉庫的 URL,(在 Ansible 1.8 中添加 ) | ||
state | no | present | present running stopped absent killed restarted | 設置容器的狀態 |
stdin_open | no | 保持 stdin 打開。(在 Ansible 1.6 中添加) | ||
tty | no | 分配一個 pseudo-tty (在 Ansible 1.6 添加) | ||
username | no | 設置遠程 API 的名稱 | ||
volumes | no | 設置掛載在容器中的 volume | ||
volumes_from | no | 從另外一個容器中設置共享卷 |
示例:注意:要求 docker-py >= 0.3.0
注意:docker >= 0.10.0
在 web 組的每臺主機上啟動一個運行 tomcat 的容器,并且把 tomcat 的監聽端口綁定到主機的 8080:
- hosts: web sudo: yes tasks: - name: run tomcat servers docker: image=centos command="service tomcat6 start" ports=8080
tomcat 服務器的端口是 NAT 到主機上的一個動態端口,但是你可以決定服務器哪個端口與 Docker 容器做映射:
- hosts: web sudo: yes tasks: - name: run tomcat servers docker: image=centos command="service tomcat6 start" ports=8080 count=5 - name: Display IP address and port mappings for containers debug: msg={{inventory_hostname}}:{{item["HostConfig"]["PortBindings"]["8080/tcp"][0]["HostPort"]}} with_items: docker_containers
正如前面的例子,但是是用一個 sequence 迭代 docker 容器的列表:
- hosts: web sudo: yes vars: start_containers_count: 5 tasks: - name: run tomcat servers docker: image=centos command="service tomcat6 start" ports=8080 count={{start_containers_count}} - name: Display IP address and port mappings for containers debug: msg="{{inventory_hostname}}:{{docker_containers[{{item}}]["HostConfig"]["PortBindings"]["8080/tcp"][0]["HostPort"]}}" with_sequence: start=0 end={{start_containers_count - 1}}
停止、移除所有正在運行的 tomcat 容器,并且從停止的容器中列出退出碼:
- hosts: web sudo: yes tasks: - name: stop tomcat servers docker: image=centos command="service tomcat6 start" state=absent - name: Display return codes from stopped containers debug: msg="Returned {{inventory_hostname}}:{{item}}" with_items: docker_containers
創建一個命名的容器:
- hosts: web sudo: yes tasks: - name: run tomcat server docker: image=centos name=tomcat command="service tomcat6 start" ports=8080
創建多個命名的容器:
- hosts: web sudo: yes tasks: - name: run tomcat servers docker: image=centos name={{item}} command="service tomcat6 start" ports=8080 with_items: - crookshank - snowbell - heathcliff - felix - sylvester
創建容器并通過使用 sequence 命名:
- hosts: web sudo: yes tasks: - name: run tomcat servers docker: image=centos name={{item}} command="service tomcat6 start" ports=8080 with_sequence: start=1 end=5 format=tomcat_%d.example.com
創建兩個連接的容器:
- hosts: web sudo: yes tasks: - name: ensure redis container is running docker: image=crosbymichael/redis name=redis - name: ensure redis_ambassador container is running docker: image=svendowideit/ambassador ports=6379:6379 links=redis:redis name=redis_ambassador_ansible
創建容器,指定選項作為鍵值對和列表:
- hosts: web sudo: yes tasks: - docker: image: namespace/image_name links: - postgresql:db - redis:redis
Create containers with options specified as strings and lists as comma-separated strings:
- hosts: web sudo: yes tasks: docker: image=namespace/image_name links=postgresql:db,redis:redis
創建一個沒有 networking 的容器:
- hosts: web sudo: yes tasks: docker: image=namespace/image_name net=none
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26337.html
摘要:從到到的部署經驗工作中,除了開發功能,還負責系統的部署工作。我從頻繁的部署工作中,逐漸找到了一些偷懶的方法。同時在構建成功后執行我們輸入的命令,來達到自動化部署的工作。缺點也是有的,很難保證對方部署的環境是最新的。 從Docker 到Jenkins 到Ansible的部署經驗 工作中,除了開發功能,還負責系統的部署工作。我從頻繁的部署工作中,逐漸找到了一些偷懶的方法。從傳統的Java ...
摘要:測試后,使用來發布。部署軟件組件,啟動虛擬機,將虛擬機分類到和節點,然后部署密鑰清單。集群自動化集群配置由三個控制。自簽證書簽署的服務器端證書和它的密鑰文件。 我們之前聊了把OpenStack跑在K8S上,如何基于Kubernetes在TCP云端創建私有云解決方法,運用在生產或在OpenStack啟動虛擬化。今天換個姿勢,我們來看看如何在OpenStack虛擬機上運行Kubernete...
摘要:在最初的容器構建之后,的變更是純代碼。發現任何舊容器正在運行的實例并停止它們。我們已經創建了來直接部署我們的每個服務,因此部署僅僅是一個運行正確的問題。總結因為主要的一個方式是封裝基礎架構到一個自包含的,可部署的包。 在 Ionic,我們是 Docker 的鐵桿粉絲。我們的代碼以及代碼的依賴全部運行在 Docker 中,Docker 讓我們的產品更充分地利用計算資源,比如 Ionic ...
摘要:在最初的容器構建之后,的變更是純代碼。發現任何舊容器正在運行的實例并停止它們。我們已經創建了來直接部署我們的每個服務,因此部署僅僅是一個運行正確的問題。總結因為主要的一個方式是封裝基礎架構到一個自包含的,可部署的包。 在 Ionic,我們是 Docker 的鐵桿粉絲。我們的代碼以及代碼的依賴全部運行在 Docker 中,Docker 讓我們的產品更充分地利用計算資源,比如 Ionic ...
摘要:最近,花了很大的興趣在組合使用和上。步驟如下從那里,我們可以使用已經上傳到的角色。我們的像如下簡單,在與你的一起的一個文件名字為因此,像這樣構建現在讀者可以非常容易的適應各種方法。檢出文件可能被忽略,并且被替換成命令獲得更加大的效率。 最近,花了很大的興趣在組合使用 Ansible 和 Docker上。所以我想這可以很好的描述一些技巧。 開始,安裝 Docker。如果你已經安裝了 A...
閱讀 1993·2021-11-24 10:45
閱讀 1849·2021-10-09 09:43
閱讀 1291·2021-09-22 15:38
閱讀 1219·2021-08-18 10:19
閱讀 2837·2019-08-30 15:55
閱讀 3056·2019-08-30 12:45
閱讀 2960·2019-08-30 11:25
閱讀 356·2019-08-29 11:30