1

Python スクリプトの流れ:

  • Pythonスクリプトからdockerイメージを実行したい。
  • docker イメージを実行した後、docker コンテナー内に tar ファイルを作成するシェル スクリプトを実行する必要があります。
  • その tar ファイルを Docker コンテナからホスト マシンにコピーする必要があります。
  • そして、pythonスクリプトは、ホストマシンで実行されるいくつかのものを続行する必要があります.

docker-py モジュールを使用して、次のことができました。

 pip install docker-py

    docker version
    Client:
     Version:      1.12.1
     API version:  1.24
     Go version:   go1.6.3
     Git commit:   23cf638
     Built:        Thu Aug 18 05:22:43 2016
     OS/Arch:      linux/amd64

    Server:
     Version:      1.12.1
     API version:  1.24
     Go version:   go1.6.3
     Git commit:   23cf638
     Built:        Thu Aug 18 05:22:43 2016
     OS/Arch:      linux/amd64

    >>> import docker

    >>> c = docker.Client(base_url='unix://var/run/docker.sock',version='1.12',timeout=10)

    >>> c.images()
    [{u'Created': 1476217543, u'Labels': {}, u'VirtualSize': 5712315133, u'ParentId': u'sha256:1ba2be8d70b6ede3b68b1af50759e674345236dd952225fcbfbcc1781f370252', u'RepoTags': [u'ubuntu14.04_64:latest'], u'RepoDigests': None, u'Id': u'sha256:1c8ced0fb34d776adafaed938d41a69e3bab87466beaa8752d49bde0d81230c5', u'Size': 5712315133}]

    >>> ctr = c.create_container('ubuntu14.04_64:latest') 

    >>> c.start(ctr)

    docker  ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    d685766385e7        ubuntu14.04_64:latest              "bash"              16 hours ago        Up 16 hours                             focused_fermi

    docker images
    REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
    ubuntu14.04_64               latest              1c8ced0fb34d        21 hours ago        5.712 GB

ホスト上で docker イメージとコンテナーが実行されているのを確認しましたが、docker コンテナー内でシェル スクリプトを実行したい場合、どうすればよいですか? その後、tar をコンテナーからホストにもコピーする必要があります。誰かがこれを行う方法を提案できますか?

4

2 に答える 2

1

コンテナでスクリプトを実行したい場合は、Dockerfileそのスクリプトを含む を作成する必要があります。例は次のようになります。

FROM ubuntu14.04_64:latest
COPY ./script.sh /code/script.sh
CMD /code/script.sh -o /target/output.tar.gz

次に、Python スクリプトは次のようになります。

#!/usr/bin/env python
import docker

c = docker.from_env()
c.build('.', image_name)
ctr = c.create_container(image_name, volumes='./target:/target')
c.start(ctr)

# the tarball is now at ./target/output.tar.gz, copy it where you want it
于 2016-10-13T19:20:03.323 に答える