def _init_docker(): kwargs = kwargs_from_env() if 'tls' in kwargs: # see http://docker-py.readthedocs.org/en/latest/boot2docker/ import requests.packages.urllib3 as urllib3 urllib3.disable_warnings() kwargs['tls'].assert_hostname = False docker = Client(**kwargs) try: docker.version() except: raise UserMessageException("Please set up 'docker' correctly") return docker
def cli(ctx, url, network): # initialize Client cl = Client(base_url=url, version='auto') # output version to show the connected succeeded v = cl.version() info('Connected to Docker {v[Version]}, api version ' '{v[ApiVersion]}.'.format(v=v)) # find frontend network nets = [n for n in cl.networks(names=[network]) if n['Name'] == network] assert len(nets) < 2 # WTF? if not nets: exit_err("Could not find a network name {!r}".format(network)) ctx.obj = {'cl': cl, 'network_name': network, 'network': nets[0]['Name']}
def get_docker_client(): """ Try to fire up boot2docker and set any environmental variables """ # For Mac try: # Get boot2docker info (will fail if not Mac) process = ['boot2docker', 'info'] p = subprocess.Popen(process, stdout=PIPE) boot2docker_info = json.loads(p.communicate()[0]) # Defaults docker_host = '' docker_cert_path = '' docker_tls_verify = '' # Start the boot2docker VM if it is not already running if boot2docker_info['State'] != "running": print('Starting Boot2Docker VM:') # Start up the Docker VM process = ['boot2docker', 'start'] subprocess.call(process) if ('DOCKER_HOST' not in os.environ) or ('DOCKER_CERT_PATH' not in os.environ) or ('DOCKER_TLS_VERIFY' not in os.environ): # Get environmental variable values process = ['boot2docker', 'shellinit'] p = subprocess.Popen(process, stdout=PIPE) boot2docker_envs = p.communicate()[0].split() for env in boot2docker_envs: if 'DOCKER_HOST' in env: docker_host = env.split('=')[1] elif 'DOCKER_CERT_PATH' in env: docker_cert_path = env.split('=')[1] elif 'DOCKER_TLS_VERIFY' in env: docker_tls_verify = env.split('=')[1] # Set environmental variables os.environ['DOCKER_TLS_VERIFY'] = docker_tls_verify os.environ['DOCKER_HOST'] = docker_host os.environ['DOCKER_CERT_PATH'] = docker_cert_path else: # Handle case when boot2docker is already running docker_host = os.environ['DOCKER_HOST'].split('=')[1] # Get the arguments form the environment client_kwargs = kwargs_from_env(assert_hostname=False) client_kwargs['version'] = MINIMUM_API_VERSION # Find the right version of the API by creating a DockerClient with the minimum working version # Then test to see if the Docker is running a later version than the minimum # See: https://github.com/docker/docker-py/issues/439 version_client = DockerClient(**client_kwargs) client_kwargs['version'] = get_api_version(MAX_CLIENT_DOCKER_API_VERSION, version_client.version()['ApiVersion']) # Create Real Docker client docker_client = DockerClient(**client_kwargs) # Derive the host address only from string formatted: "tcp://<host>:<port>" docker_client.host = docker_host.split(':')[1].strip('//') return docker_client # For Linux except OSError: # Find the right version of the API by creating a DockerClient with the minimum working version # Then test to see if the Docker is running a later version than the minimum # See: https://github.com/docker/docker-py/issues/439 version_client = DockerClient(base_url='unix://var/run/docker.sock', version=MINIMUM_API_VERSION) version = get_api_version(MAX_CLIENT_DOCKER_API_VERSION, version_client.version()['ApiVersion']) docker_client = DockerClient(base_url='unix://var/run/docker.sock', version=version) docker_client.host = DEFAULT_DOCKER_HOST return docker_client except: raise
def get_docker_client(): """ Try to fire up boot2docker and set any environmental variables """ # For Mac try: # Get boot2docker info (will fail if not Mac) process = ['boot2docker', 'info'] p = subprocess.Popen(process, stdout=PIPE) boot2docker_info = json.loads(p.communicate()[0]) # Defaults docker_host = '' docker_cert_path = '' docker_tls_verify = '' # Start the boot2docker VM if it is not already running if boot2docker_info['State'] != "running": print('Starting Boot2Docker VM:') # Start up the Docker VM process = ['boot2docker', 'start'] subprocess.call(process) if ('DOCKER_HOST' not in os.environ) or ( 'DOCKER_CERT_PATH' not in os.environ) or ('DOCKER_TLS_VERIFY' not in os.environ): # Get environmental variable values process = ['boot2docker', 'shellinit'] p = subprocess.Popen(process, stdout=PIPE) boot2docker_envs = p.communicate()[0].split() for env in boot2docker_envs: if 'DOCKER_HOST' in env: docker_host = env.split('=')[1] elif 'DOCKER_CERT_PATH' in env: docker_cert_path = env.split('=')[1] elif 'DOCKER_TLS_VERIFY' in env: docker_tls_verify = env.split('=')[1] # Set environmental variables os.environ['DOCKER_TLS_VERIFY'] = docker_tls_verify os.environ['DOCKER_HOST'] = docker_host os.environ['DOCKER_CERT_PATH'] = docker_cert_path else: # Handle case when boot2docker is already running docker_host = os.environ['DOCKER_HOST'].split('=')[1] # Get the arguments form the environment client_kwargs = kwargs_from_env(assert_hostname=False) client_kwargs['version'] = MINIMUM_API_VERSION # Find the right version of the API by creating a DockerClient with the minimum working version # Then test to see if the Docker is running a later version than the minimum # See: https://github.com/docker/docker-py/issues/439 version_client = DockerClient(**client_kwargs) client_kwargs['version'] = get_api_version( MAX_CLIENT_DOCKER_API_VERSION, version_client.version()['ApiVersion']) # Create Real Docker client docker_client = DockerClient(**client_kwargs) # Derive the host address only from string formatted: "tcp://<host>:<port>" docker_client.host = docker_host.split(':')[1].strip('//') return docker_client # For Linux except OSError: # Find the right version of the API by creating a DockerClient with the minimum working version # Then test to see if the Docker is running a later version than the minimum # See: https://github.com/docker/docker-py/issues/439 version_client = DockerClient(base_url='unix://var/run/docker.sock', version=MINIMUM_API_VERSION) version = get_api_version(MAX_CLIENT_DOCKER_API_VERSION, version_client.version()['ApiVersion']) docker_client = DockerClient(base_url='unix://var/run/docker.sock', version=version) docker_client.host = DEFAULT_DOCKER_HOST return docker_client except: raise
from docker.client import Client from docker.utils import kwargs_from_env cli = Client(**kwargs_from_env()) container = cli.create_container(image='busybox:latest', command='/bin/echo 2342', rm=True) print(container) response = cli.start(container=container.get('Id')) print(container) print(response) print(container.logs()) print(cli.version())