https://github.com/docker/docker-py
A Pythonライブラリ。 dockerコマンドはすべて行いますが、Python内でコンテナを実行し、 を管理し、画像をプル/プッシュします。
create_container:
Creates a container that can then be .start() ed.
Parameters are similar to those for the docker run
command except it doesn't support the attach options (-a).
source code of create_container
def create_container(self, image, command=None, hostname=None, user=None,
detach=False, stdin_open=False, tty=False,
mem_limit=None, ports=None, environment=None,
dns=None, volumes=None, volumes_from=None,
network_disabled=False, name=None, entrypoint=None,
cpu_shares=None, working_dir=None, domainname=None,
memswap_limit=None, cpuset=None, host_config=None,
mac_address=None, labels=None, volume_driver=None,
stop_signal=None, networking_config=None):
しかし、私はstart functionでlinks
が見つかりました:
def start(self, container, binds=None, port_bindings=None, lxc_conf=None,
publish_all_ports=None, links=None, privileged=None,
dns=None, dns_search=None, volumes_from=None, network_mode=None,
restart_policy=None, cap_add=None, cap_drop=None, devices=None,
extra_hosts=None, read_only=None, pid_mode=None, ipc_mode=None,
security_opt=None, ulimits=None):
だから私は、あなたがすべきだと思う:
from docker import Client
>>> cli = Client(base_url='tcp://127.0.0.1:2375')
>>> container = cli.create_container(
... image='busybox:latest',
... command='/bin/sleep 30')
>>> response = cli.start(container=container.get('Id'),links=[('EXISTING_CONTAINER', 'LINK_NAME')])
実施例(DO)
私はDOにCoreOSを使用しています:
- 実行]ドッキングウィンドウコンテナを、ホストから
/var/run/docker.sock
の内側に取り付ける
- ツール
- 実行をインストールテスト容器
EXISTING_CONTAINER
- 実行python例
コマンドのセット:
docker run -it -v /var/run/docker.sock:/var/run/docker.sock ubuntu:12.04 bash
apt-get update;apt-get install python-pip -y;pip install docker-py
docker run -d --name EXISTING_CONTAINER busybox sh -c "while true; do sleep 1;done"
Pythonの例
from docker import Client
cli = Client(base_url='unix://var/run/docker.sock', version='auto')
container = cli.create_container(
image='busybox:latest',
command='/bin/sleep 30')
response = cli.start(container=container.get('Id'),links=(('EXISTING_CONTAINER', 'LINK_NAME'))
ホスト上の結果:
wp-coreos-512mb-ams2-01 ~ # docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2f58e661579d busybox "sh -c 'while true; d" 23 seconds ago Up 22 seconds EXISTING_CONTAINER
6f08dd3f5017 busybox:latest "/bin/sleep 30" 9 minutes ago Up 5 seconds condescending_brown
残念ながら、私はそれを試してみましたが、うまくいきません。あなたはこれを試して、それはあなたのために働いたのですか?それから別のミスをしたかもしれない。 – flypenguin
私は作業例を追加しました –
は、それを試した、働いて、ありがとう! – flypenguin