本文整理汇总了Python中docker.APIClient.inspect_container方法的典型用法代码示例。如果您正苦于以下问题:Python APIClient.inspect_container方法的具体用法?Python APIClient.inspect_container怎么用?Python APIClient.inspect_container使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类docker.APIClient
的用法示例。
在下文中一共展示了APIClient.inspect_container方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_server_containers
# 需要导入模块: from docker import APIClient [as 别名]
# 或者: from docker.APIClient import inspect_container [as 别名]
def get_server_containers(server: Server, client: docker.APIClient) -> tp.List[dict]:
containers = client.containers()
server_containers = []
for container in containers:
container = {
'command': filter_printable(container['Command']),
'containerId': container['Id'],
'image': container['Image'],
'labels': sorted([{
'containerId': container['Id'],
'name': l[0],
'value': l[1]} for l in container['Labels'].items()],
key=lambda label: label['name']),
'name': container['Names'][0],
'network': container['HostConfig']['NetworkMode'],
'ports': sorted([{
'destination': str(p['PrivatePort']),
'hostIp': p['IP'] if 'IP' in p else None,
'protocol': p['Type'],
'source': str(p['PublicPort']) if 'PublicPort' in p else None} for p in container['Ports']],
key=lambda port: (str(port['destination']), str(port['source']))),
'privileged': client.inspect_container(container['Id'])['HostConfig']['Privileged'],
'serverId': server.id,
'volumes': sorted([{
'containerId': container['Id'],
'destination': filter_printable(v['Destination']),
'source': filter_printable(v['Source'])} for v in container['Mounts']],
key=lambda volume: volume['destination'])
}
server_containers.append(container)
return server_containers
示例2: docker_container_id
# 需要导入模块: from docker import APIClient [as 别名]
# 或者: from docker.APIClient import inspect_container [as 别名]
def docker_container_id(container_name):
"""
Uses the container name to return the container ID.
:param container_name: The full name of the docker container.
:type container_name: ``str``
:return: Returns the container ID or None if the container is not running or could not be found.
:rtype: ``dict``
"""
c = APIClient()
detail = c.inspect_container(container_name)
if bool(detail["State"]["Running"]):
return detail['Id']
return None
示例3: get_swarm_node_ip
# 需要导入模块: from docker import APIClient [as 别名]
# 或者: from docker.APIClient import inspect_container [as 别名]
def get_swarm_node_ip(swarm_url, container_name, timeout=5):
"""
Detect the host ip where the given container locate in the swarm cluster
:param swarm_url: Swarm cluster api url
:param container_name: The container name
:param timeout: Time to wait for the response
:return: host ip
"""
logger.debug("Detect container={} with swarm_url={}".format(
container_name, swarm_url))
try:
client = Client(base_url=swarm_url, version="auto", timeout=timeout)
info = client.inspect_container(container_name)
return info['NetworkSettings']['Ports']['5000/tcp'][0]['HostIp']
except Exception as e:
logger.error("Exception happens when detect container host!")
logger.error(e)
return ''
示例4: ImageBuildException
# 需要导入模块: from docker import APIClient [as 别名]
# 或者: from docker.APIClient import inspect_container [as 别名]
#.........这里部分代码省略.........
working_dir=volume_dir,
environment={"PYTHONPATH": "/usr/local/"})
container_id = container.get("Id")
return container_id
# noinspection PyBroadException
@staticmethod
def _verify_directory(working_directory):
import os
if working_directory is None or os.path.basename(working_directory) in Constants.ForbiddenVolumeNames:
return False
try:
if not os.path.exists(working_directory):
os.makedirs(working_directory)
return True
except:
return False
def stop_containers(self, container_ids):
"""Stops given containers."""
for container_id in container_ids:
self.stop_container(container_id)
def stop_container(self, container_id):
"""Stops the container with given ID."""
self.client.stop(container_id)
def container_status(self, container_id):
"""Checks if container with given ID running."""
status = ProviderBase.STATUS_TERMINATED
try:
ret_val = str(self.client.inspect_container(container_id).get('State').get('Status'))
if ret_val.startswith("running"):
status = ProviderBase.STATUS_RUNNING
else:
status = ProviderBase.STATUS_STOPPED
except NotFound:
pass
return status
def start_containers(self, container_ids):
"""Starts each container in given list of container IDs."""
for container_id in container_ids:
self.start_container(container_id)
def start_container(self, container_id):
""" Start the container with given ID."""
logging.info(DockerProxy.LOG_TAG + " Starting container " + container_id)
try:
self.client.start(container=container_id)
except (NotFound, NullResource) as e:
print (DockerProxy.LOG_TAG + "Something went wrong while starting container.", e)
return False
return True
def execute_command(self, container_id, command):
"""Executes given command as a shell command in the given container. Returns None is anything goes wrong."""
run_command = "/bin/bash -c \"" + command + "\""
# print("CONTAINER: {0} COMMAND: {1}".format(container_id, run_command))
if self.start_container(container_id) is False:
print (DockerProxy.LOG_TAG + "Could not start container.")
return None
try:
exec_instance = self.client.exec_create(container_id, run_command)