How to use docker - 10 common examples

To help you get started, we’ve selected a few docker examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github docker / docker-py / docker / api / client.py View on Github external
base_url, timeout, pool_connections=num_pools
            )
            self.mount('http+docker://', self._custom_adapter)
            self._unmount('http://', 'https://')
            self.base_url = 'http+docker://localunixsocket'
        elif base_url.startswith('npipe://'):
            if not IS_WINDOWS_PLATFORM:
                raise DockerException(
                    'The npipe:// protocol is only supported on Windows'
                )
            try:
                self._custom_adapter = NpipeAdapter(
                    base_url, timeout, pool_connections=num_pools
                )
            except NameError:
                raise DockerException(
                    'Install pypiwin32 package to enable npipe:// support'
                )
            self.mount('http+docker://', self._custom_adapter)
            self.base_url = 'http+docker://localnpipe'
        else:
            # Use SSLAdapter for the ability to specify SSL version
            if isinstance(tls, TLSConfig):
                tls.configure_client(self)
            elif tls:
                self._custom_adapter = SSLAdapter(pool_connections=num_pools)
                self.mount('https://', self._custom_adapter)
            self.base_url = base_url

        # version detection needs to be after unix adapter mounting
        if version is None:
            self._version = DEFAULT_DOCKER_API_VERSION
github status-im / status-react / test / desktop_sikuli / main.py View on Github external
def main(**kwargs):

    if not os.path.exists(kwargs['test_results_path']):
        os.makedirs(kwargs['test_results_path'])
    if kwargs['linux_app_url']:
        linux_app_url = kwargs['linux_app_url']
    else:
        linux_app_url = re.findall('https\S*AppImage', requests.get('https://status.im/nightly/').text)[0]
    app_version = ([i for i in [i for i in linux_app_url.split('/') if '.AppImage' in i]])[0]
    urlretrieve(linux_app_url, 'nightly.AppImage')
    client = docker.from_env()
    client.images.build(tag='status_desktop', path='.')
    pytest.main(['--collect-only', '-m %s' % kwargs['mark']])
    from tests import test_data
    if kwargs['testrail_report']:
        testrail_report = TestrailReportDesktop(kwargs['test_results_path'])
        testrail_report.add_run(app_version if app_version else '%s' % datetime.now().strftime("%Y-%m-%d %H:%M"))
    for test in test_data.tests_to_run:
        print(test)
        try:
            container = client.containers.run("status_desktop",
                                              detach=True, tty=True, ports={'5900/tcp': 5900},
                                              volumes={kwargs['test_results_path']: {'bind': TEST_REPORT_DIR_CONTAINER,
                                                                                     'mode': 'rw'}})
            outcome = container.exec_run(['/jython-2.7.1/bin/jython', '-m', 'pytest', '/home/tests/' + test],
                                         stdout=True, stderr=False, stdin=True)
        except Exception:
github n1b0r / docker-flow-proxy-letsencrypt / tests.py View on Github external
try:
            self.docker_client.swarm.init()
        except docker.errors.APIError:
            pass

        # docker network
        self.network_name = "test-network-dfple"
        self.network = self.docker_client.networks.create(name=self.network_name, driver='overlay')

        # docker-flow-proxy service
        # dfp_image = self.docker_client.images.pull('vfarcic/docker-flow-proxy')
        dfp_service = {
            'name': 'proxy_{}'.format(self.test_name),
            'image': 'vfarcic/docker-flow-proxy',
            'constraints': [],
            'endpoint_spec': docker.types.EndpointSpec(
                ports={80: 80, 443: 443, 8080: 8080}),
            'env': [
                "LISTENER_ADDRESS=swarm_listener_{}".format(self.test_name),
                "MODE=swarm",
                "DEBUG=true",
                "SERVICE_NAME=proxy_{}".format(self.test_name) ],
            'networks': [self.network_name]
        }

        # docker-flow-swarm-listener service
        # dfsl_image = self.docker_client.images.pull('vfarcic/docker-flow-swarm-listener')
        dfsl_service = {
            'name': 'swarm_listener_{}'.format(self.test_name),
            'image': 'vfarcic/docker-flow-swarm-listener',
            'constraints': ["node.role == manager"],
            'endpoint_spec': docker.types.EndpointSpec(
github gamechanger / dusty / dusty / systems / docker / testing_image.py View on Github external
def _create_tagged_image(base_image_tag, new_image_tag, app_or_lib_name):
    docker_client = get_docker_client()

    command = _get_test_image_setup_command(app_or_lib_name)
    split_volumes = _get_split_volumes(get_volume_mounts(app_or_lib_name, get_expanded_libs_specs(), test=True))
    create_container_volumes = _get_create_container_volumes(split_volumes)
    create_container_binds = _get_create_container_binds(split_volumes)

    container = docker_client.create_container(image=base_image_tag,
                                               command=command,
                                               volumes=create_container_volumes,
                                               host_config=docker.utils.create_host_config(binds=create_container_binds))
    docker_client.start(container=container['Id'])
    log_to_client('Running commands to create new image:')
    for line in docker_client.logs(container['Id'], stdout=True, stderr=True, stream=True):
        log_to_client(line.strip())
    exit_code = docker_client.wait(container['Id'])
    if exit_code:
        raise ImageCreationError(exit_code)

    new_image = docker_client.commit(container=container['Id'])
    try:
        docker_client.remove_image(image=new_image_tag)
    except:
        log_to_client('Not able to remove image {}'.format(new_image_tag))
    docker_client.tag(image=new_image['Id'], repository=new_image_tag, force=True)
    docker_client.remove_container(container=container['Id'], v=True)
github confluentinc / cp-docker-images / tests / steps / steps.py View on Github external
def step_impl(context, image_name, basedir):
    client = docker.from_env(assert_hostname=False)
    full_image_path = os.path.join(IMAGE_DIR, basedir)
    output = client.build(full_image_path, rm=True, tag=image_name)
    response = ["     %s" % (line,) for line in output]
    print("Building image %s from %s" % (full_image_path, basedir))
    print(response)
    return True
github Yelp / data_pipeline / data_pipeline / testing_helpers / containers.py View on Github external
def exec_command(cls, command, project, service, timeout_seconds=60):
        """Executes the command in the project and service container running under
        docker-compose.
        Throws ContainerUnavailableError if the retry limit is reached.

        Args:
            command: The command to be executed in the container
            project: Name of the project the container is hosting
            service: Name of the service that the container is hosting
            timeout_seconds: Retry time limit to wait for containers to start
                             Default in seconds: 60
        """
        docker_client = Client(version='auto')
        container_id = cls._get_container_id(project, service, docker_client, timeout_seconds)
        exec_id = docker_client.exec_create(container_id, command)['Id']
        docker_client.exec_start(exec_id)
github osrg / gobgp / test / lib / base.py View on Github external
def addif(self, ctn, ip_addr=''):
        _name = ctn.next_if_name()
        self.ctns.append(ctn)
        ip = ''
        if not ip_addr == '':
            ip = '--ip {0}'.format(ip_addr)
            if self.subnet.version == 6:
                ip = '--ip6 {0}'.format(ip_addr)
        local("docker network connect {0} {1} {2}".format(ip, self.name, ctn.docker_name()))
        i = [x for x in list(Client(timeout=60, version='auto').inspect_network(self.id)['Containers'].values()) if x['Name'] == ctn.docker_name()][0]
        if self.subnet.version == 4:
            eth = 'eth{0}'.format(len(ctn.ip_addrs))
            addr = i['IPv4Address']
            ctn.ip_addrs.append((eth, addr, self.name))
        else:
            eth = 'eth{0}'.format(len(ctn.ip6_addrs))
            addr = i['IPv6Address']
            ctn.ip6_addrs.append((eth, addr, self.name))
github saga92 / eagle / tests / unit / test_worker.py View on Github external
def test_create_container_failed(self):
        create_user(dict(
            username=test_cfg.USER_NAME,
            password=test_cfg.USER_PASSWORD,
            email=test_cfg.USER_EMAIL
        ))
        req = dict(
            image_id=test_cfg.CONTAINER_IMAGE_ID,
            user_name=test_cfg.USER_NAME,
            container_name=test_cfg.CONTAINER_NAME
        )
        with mock.patch.object(self.cli, 'create_container') as mock_cli_create:
            mock_cli_create.side_effect = docker.errors.APIError(mock.Mock(), mock.Mock())
            response = worker.create_container(self.cli, **req)

            #The default container_serial is ''
            remove_instance_by_serial('')
            remove_user_by_username(test_cfg.USER_NAME)
            mock_cli_create.assert_called_once()
            res_dict = json.loads(response)
            self.assertEqual(res_dict.get('code'), '0x3')
github openstack / kolla / tests / test_kolla_docker.py View on Github external
def test_remove_volume_exception(self):
        resp = mock.MagicMock()
        resp.status_code = 409
        docker_except = docker_error.APIError('test error', resp)
        self.dw = get_DockerWorker({'name': 'nova_compute',
                                    'action': 'remove_volume'})
        self.dw.dc.volumes.return_value = self.volumes
        self.dw.dc.remove_volume.side_effect = docker_except

        self.assertRaises(docker_error.APIError, self.dw.remove_volume)
        self.assertTrue(self.dw.changed)
        self.dw.module.fail_json.assert_called_once_with(
            failed=True,
            msg="Volume named 'nova_compute' is currently in-use"
        )
github goldmann / docker-squash / tests / test_unit_squash.py View on Github external
def test_should_handle_cleanup_error_when_removing_image(self, v2_image):
        self.docker_client.inspect_image.return_value = {'Id': "abcdefgh"}
        self.docker_client.remove_image.side_effect = docker.errors.APIError("Message")

        squash = Squash(self.log, 'image', self.docker_client, load_image=True, cleanup=True)
        squash.run()

        self.log.info.assert_any_call("Removing old image image...")
        self.log.warn.assert_any_call("Could not remove image image: Message, skipping cleanup after squashing")