Skip to content

Instantly share code, notes, and snippets.

@D3f0
Last active September 4, 2017 15:09
Show Gist options
  • Save D3f0/e5913d5d3ab8fe7c594fd9d1e6743a9a to your computer and use it in GitHub Desktop.
Save D3f0/e5913d5d3ab8fe7c594fd9d1e6743a9a to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Docker-py won't tell about exposed ports"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import docker"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"client = docker.client.from_env()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Clean everything"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[None]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[container.stop() for container in client.containers.list()]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\r\n"
]
}
],
"source": [
"!docker ps"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Create container from image"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Overwriting Dockerfile\n"
]
}
],
"source": [
"%%writefile Dockerfile\n",
"FROM python:3.6\n",
"RUN pip install Flask\n",
"EXPOSE 3000\n",
"ADD app.py /app.py\n",
"CMD [\"python\", \"/app.py\"]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Overwriting app.py\n"
]
}
],
"source": [
"%%writefile app.py\n",
"\n",
"from flask import Flask\n",
"app = Flask(__name__)\n",
"\n",
"@app.route('/')\n",
"def index():\n",
" return \"HELLO WORLD\"\n",
"\n",
"if __name__ == \"__main__\":\n",
" app.run(port=3000, host='0')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Image: 'flasky:latest'>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"image = client.images.build(path='.', tag='flasky')\n",
"image"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"container = client.containers.run(image=image, publish_all_ports=True, detach=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Seems to be running"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\r\n",
"e080630cc930 766a1b617618 \"python /app.py\" 1 second ago Up Less than a second 0.0.0.0:32779->3000/tcp laughing_sammet\r\n"
]
}
],
"source": [
"!docker ps"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Let's inspect attrs..."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'AppArmorProfile': '',\n",
" 'Args': ['/app.py'],\n",
" 'Config': {'ArgsEscaped': True,\n",
" 'AttachStderr': False,\n",
" 'AttachStdin': False,\n",
" 'AttachStdout': False,\n",
" 'Cmd': ['python', '/app.py'],\n",
" 'Domainname': '',\n",
" 'Entrypoint': None,\n",
" 'Env': ['no_proxy=*.local, 169.254/16',\n",
" 'PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',\n",
" 'LANG=C.UTF-8',\n",
" 'GPG_KEY=0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D',\n",
" 'PYTHON_VERSION=3.6.2',\n",
" 'PYTHON_PIP_VERSION=9.0.1'],\n",
" 'ExposedPorts': {'3000/tcp': {}},\n",
" 'Hostname': 'e080630cc930',\n",
" 'Image': 'sha256:766a1b617618d547037986ea8a33edb6c0c0de6cf98ca79ee6859557da861164',\n",
" 'Labels': {},\n",
" 'OnBuild': None,\n",
" 'OpenStdin': False,\n",
" 'StdinOnce': False,\n",
" 'Tty': False,\n",
" 'User': '',\n",
" 'Volumes': None,\n",
" 'WorkingDir': ''},\n",
" 'Created': '2017-09-04T15:05:30.557116599Z',\n",
" 'Driver': 'overlay2',\n",
" 'ExecIDs': None,\n",
" 'GraphDriver': {'Data': {'LowerDir': '/var/lib/docker/overlay2/6e47444c8cf9a3858ee80e1377477e6210a9c01ced118a74e0f07b5dcdb9bdea-init/diff:/var/lib/docker/overlay2/f18179eaf1916cb66e6ef78249becd01ae2b96d67f9687d94d8c5727b1689bef/diff:/var/lib/docker/overlay2/53201d4326ef483dc45440182eff0aa3f25d16100be48e92a2eb92b1df187feb/diff:/var/lib/docker/overlay2/aea67e63e01565dd90f8920b38c0f8918f307d141664f050cc178648f5d0df63/diff:/var/lib/docker/overlay2/ea2e312eb5008bf25e414c6062f1bad09321b1beebe159329acb180c65010dd7/diff:/var/lib/docker/overlay2/ed6eb3b48e20351879a5fd4ac1682432cb904c1674dce1780ad49b29ca3750b5/diff:/var/lib/docker/overlay2/14087949895dfc615763833d9e8146c44f702ecc5a30b92ece94d2da9864fe2e/diff:/var/lib/docker/overlay2/600a7626e9e37ed2fa7d9743993b3962f44a62463dc78f838556f769e7d44e96/diff:/var/lib/docker/overlay2/5fc8c93883f471a0926a6f6c557f778ab653e50b7043657adcb0486d62d5fe29/diff:/var/lib/docker/overlay2/48ccd0b334cbb70e21a7ec5effa970688617d4d5d2eaf48a54e0563d49a5c63e/diff:/var/lib/docker/overlay2/3f4f2235bf9eacd69ca7ad9ac3f3afe95420a83b02e8ce6feb0db40bfff57e78/diff',\n",
" 'MergedDir': '/var/lib/docker/overlay2/6e47444c8cf9a3858ee80e1377477e6210a9c01ced118a74e0f07b5dcdb9bdea/merged',\n",
" 'UpperDir': '/var/lib/docker/overlay2/6e47444c8cf9a3858ee80e1377477e6210a9c01ced118a74e0f07b5dcdb9bdea/diff',\n",
" 'WorkDir': '/var/lib/docker/overlay2/6e47444c8cf9a3858ee80e1377477e6210a9c01ced118a74e0f07b5dcdb9bdea/work'},\n",
" 'Name': 'overlay2'},\n",
" 'HostConfig': {'AutoRemove': False,\n",
" 'Binds': None,\n",
" 'BlkioDeviceReadBps': None,\n",
" 'BlkioDeviceReadIOps': None,\n",
" 'BlkioDeviceWriteBps': None,\n",
" 'BlkioDeviceWriteIOps': None,\n",
" 'BlkioWeight': 0,\n",
" 'BlkioWeightDevice': None,\n",
" 'CapAdd': None,\n",
" 'CapDrop': None,\n",
" 'Cgroup': '',\n",
" 'CgroupParent': '',\n",
" 'ConsoleSize': [0, 0],\n",
" 'ContainerIDFile': '',\n",
" 'CpuCount': 0,\n",
" 'CpuPercent': 0,\n",
" 'CpuPeriod': 0,\n",
" 'CpuQuota': 0,\n",
" 'CpuRealtimePeriod': 0,\n",
" 'CpuRealtimeRuntime': 0,\n",
" 'CpuShares': 0,\n",
" 'CpusetCpus': '',\n",
" 'CpusetMems': '',\n",
" 'DeviceCgroupRules': None,\n",
" 'Devices': None,\n",
" 'DiskQuota': 0,\n",
" 'Dns': None,\n",
" 'DnsOptions': None,\n",
" 'DnsSearch': None,\n",
" 'ExtraHosts': None,\n",
" 'GroupAdd': None,\n",
" 'IOMaximumBandwidth': 0,\n",
" 'IOMaximumIOps': 0,\n",
" 'IpcMode': '',\n",
" 'Isolation': '',\n",
" 'KernelMemory': 0,\n",
" 'Links': None,\n",
" 'LogConfig': {'Config': {}, 'Type': 'json-file'},\n",
" 'Memory': 0,\n",
" 'MemoryReservation': 0,\n",
" 'MemorySwap': 0,\n",
" 'MemorySwappiness': -1,\n",
" 'NanoCpus': 0,\n",
" 'NetworkMode': 'default',\n",
" 'OomKillDisable': False,\n",
" 'OomScoreAdj': 0,\n",
" 'PidMode': '',\n",
" 'PidsLimit': 0,\n",
" 'PortBindings': None,\n",
" 'Privileged': False,\n",
" 'PublishAllPorts': True,\n",
" 'ReadonlyRootfs': False,\n",
" 'RestartPolicy': {'MaximumRetryCount': 0, 'Name': ''},\n",
" 'Runtime': 'runc',\n",
" 'SecurityOpt': None,\n",
" 'ShmSize': 67108864,\n",
" 'UTSMode': '',\n",
" 'Ulimits': None,\n",
" 'UsernsMode': '',\n",
" 'VolumeDriver': '',\n",
" 'VolumesFrom': None},\n",
" 'HostnamePath': '',\n",
" 'HostsPath': '',\n",
" 'Id': 'e080630cc930c90b2839808ba0c0487ae2f41be01d06946ae0a46f01b089223e',\n",
" 'Image': 'sha256:766a1b617618d547037986ea8a33edb6c0c0de6cf98ca79ee6859557da861164',\n",
" 'LogPath': '',\n",
" 'MountLabel': '',\n",
" 'Mounts': [],\n",
" 'Name': '/laughing_sammet',\n",
" 'NetworkSettings': {'Bridge': '',\n",
" 'EndpointID': '',\n",
" 'Gateway': '',\n",
" 'GlobalIPv6Address': '',\n",
" 'GlobalIPv6PrefixLen': 0,\n",
" 'HairpinMode': False,\n",
" 'IPAddress': '',\n",
" 'IPPrefixLen': 0,\n",
" 'IPv6Gateway': '',\n",
" 'LinkLocalIPv6Address': '',\n",
" 'LinkLocalIPv6PrefixLen': 0,\n",
" 'MacAddress': '',\n",
" 'Networks': {'bridge': {'Aliases': None,\n",
" 'DriverOpts': None,\n",
" 'EndpointID': '',\n",
" 'Gateway': '',\n",
" 'GlobalIPv6Address': '',\n",
" 'GlobalIPv6PrefixLen': 0,\n",
" 'IPAMConfig': None,\n",
" 'IPAddress': '',\n",
" 'IPPrefixLen': 0,\n",
" 'IPv6Gateway': '',\n",
" 'Links': None,\n",
" 'MacAddress': '',\n",
" 'NetworkID': ''}},\n",
" 'Ports': {},\n",
" 'SandboxID': '',\n",
" 'SandboxKey': '',\n",
" 'SecondaryIPAddresses': None,\n",
" 'SecondaryIPv6Addresses': None},\n",
" 'Path': 'python',\n",
" 'ProcessLabel': '',\n",
" 'ResolvConfPath': '',\n",
" 'RestartCount': 0,\n",
" 'State': {'Dead': False,\n",
" 'Error': '',\n",
" 'ExitCode': 0,\n",
" 'FinishedAt': '0001-01-01T00:00:00Z',\n",
" 'OOMKilled': False,\n",
" 'Paused': False,\n",
" 'Pid': 0,\n",
" 'Restarting': False,\n",
" 'Running': False,\n",
" 'StartedAt': '0001-01-01T00:00:00Z',\n",
" 'Status': 'created'}}"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"container.attrs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"No sign of which port was exposed 😐\n",
"### Now let's check with Docker CLI"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"output = !docker inspect {container.id}"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[\n",
" {\n",
" \"Id\": \"e080630cc930c90b2839808ba0c0487ae2f41be01d06946ae0a46f01b089223e\",\n",
" \"Created\": \"2017-09-04T15:05:30.557116599Z\",\n",
" \"Path\": \"python\",\n",
" \"Args\": [\n",
" \"/app.py\"\n",
" ],\n",
" \"State\": {\n",
" \"Status\": \"running\",\n",
" \"Running\": true,\n",
" \"Paused\": false,\n",
" \"Restarting\": false,\n",
" \"OOMKilled\": false,\n",
" \"Dead\": false,\n",
" \"Pid\": 8791,\n",
" \"ExitCode\": 0,\n",
" \"Error\": \"\",\n",
" \"StartedAt\": \"2017-09-04T15:05:31.111607784Z\",\n",
" \"FinishedAt\": \"0001-01-01T00:00:00Z\"\n",
" },\n",
" \"Image\": \"sha256:766a1b617618d547037986ea8a33edb6c0c0de6cf98ca79ee6859557da861164\",\n",
" \"ResolvConfPath\": \"/var/lib/docker/containers/e080630cc930c90b2839808ba0c0487ae2f41be01d06946ae0a46f01b089223e/resolv.conf\",\n",
" \"HostnamePath\": \"/var/lib/docker/containers/e080630cc930c90b2839808ba0c0487ae2f41be01d06946ae0a46f01b089223e/hostname\",\n",
" \"HostsPath\": \"/var/lib/docker/containers/e080630cc930c90b2839808ba0c0487ae2f41be01d06946ae0a46f01b089223e/hosts\",\n",
" \"LogPath\": \"/var/lib/docker/containers/e080630cc930c90b2839808ba0c0487ae2f41be01d06946ae0a46f01b089223e/e080630cc930c90b2839808ba0c0487ae2f41be01d06946ae0a46f01b089223e-json.log\",\n",
" \"Name\": \"/laughing_sammet\",\n",
" \"RestartCount\": 0,\n",
" \"Driver\": \"overlay2\",\n",
" \"MountLabel\": \"\",\n",
" \"ProcessLabel\": \"\",\n",
" \"AppArmorProfile\": \"\",\n",
" \"ExecIDs\": null,\n",
" \"HostConfig\": {\n",
" \"Binds\": null,\n",
" \"ContainerIDFile\": \"\",\n",
" \"LogConfig\": {\n",
" \"Type\": \"json-file\",\n",
" \"Config\": {}\n",
" },\n",
" \"NetworkMode\": \"default\",\n",
" \"PortBindings\": null,\n",
" \"RestartPolicy\": {\n",
" \"Name\": \"\",\n",
" \"MaximumRetryCount\": 0\n",
" },\n",
" \"AutoRemove\": false,\n",
" \"VolumeDriver\": \"\",\n",
" \"VolumesFrom\": null,\n",
" \"CapAdd\": null,\n",
" \"CapDrop\": null,\n",
" \"Dns\": null,\n",
" \"DnsOptions\": null,\n",
" \"DnsSearch\": null,\n",
" \"ExtraHosts\": null,\n",
" \"GroupAdd\": null,\n",
" \"IpcMode\": \"\",\n",
" \"Cgroup\": \"\",\n",
" \"Links\": null,\n",
" \"OomScoreAdj\": 0,\n",
" \"PidMode\": \"\",\n",
" \"Privileged\": false,\n",
" \"PublishAllPorts\": true,\n",
" \"ReadonlyRootfs\": false,\n",
" \"SecurityOpt\": null,\n",
" \"UTSMode\": \"\",\n",
" \"UsernsMode\": \"\",\n",
" \"ShmSize\": 67108864,\n",
" \"Runtime\": \"runc\",\n",
" \"ConsoleSize\": [\n",
" 0,\n",
" 0\n",
" ],\n",
" \"Isolation\": \"\",\n",
" \"CpuShares\": 0,\n",
" \"Memory\": 0,\n",
" \"NanoCpus\": 0,\n",
" \"CgroupParent\": \"\",\n",
" \"BlkioWeight\": 0,\n",
" \"BlkioWeightDevice\": null,\n",
" \"BlkioDeviceReadBps\": null,\n",
" \"BlkioDeviceWriteBps\": null,\n",
" \"BlkioDeviceReadIOps\": null,\n",
" \"BlkioDeviceWriteIOps\": null,\n",
" \"CpuPeriod\": 0,\n",
" \"CpuQuota\": 0,\n",
" \"CpuRealtimePeriod\": 0,\n",
" \"CpuRealtimeRuntime\": 0,\n",
" \"CpusetCpus\": \"\",\n",
" \"CpusetMems\": \"\",\n",
" \"Devices\": null,\n",
" \"DeviceCgroupRules\": null,\n",
" \"DiskQuota\": 0,\n",
" \"KernelMemory\": 0,\n",
" \"MemoryReservation\": 0,\n",
" \"MemorySwap\": 0,\n",
" \"MemorySwappiness\": -1,\n",
" \"OomKillDisable\": false,\n",
" \"PidsLimit\": 0,\n",
" \"Ulimits\": null,\n",
" \"CpuCount\": 0,\n",
" \"CpuPercent\": 0,\n",
" \"IOMaximumIOps\": 0,\n",
" \"IOMaximumBandwidth\": 0\n",
" },\n",
" \"GraphDriver\": {\n",
" \"Data\": {\n",
" \"LowerDir\": \"/var/lib/docker/overlay2/6e47444c8cf9a3858ee80e1377477e6210a9c01ced118a74e0f07b5dcdb9bdea-init/diff:/var/lib/docker/overlay2/f18179eaf1916cb66e6ef78249becd01ae2b96d67f9687d94d8c5727b1689bef/diff:/var/lib/docker/overlay2/53201d4326ef483dc45440182eff0aa3f25d16100be48e92a2eb92b1df187feb/diff:/var/lib/docker/overlay2/aea67e63e01565dd90f8920b38c0f8918f307d141664f050cc178648f5d0df63/diff:/var/lib/docker/overlay2/ea2e312eb5008bf25e414c6062f1bad09321b1beebe159329acb180c65010dd7/diff:/var/lib/docker/overlay2/ed6eb3b48e20351879a5fd4ac1682432cb904c1674dce1780ad49b29ca3750b5/diff:/var/lib/docker/overlay2/14087949895dfc615763833d9e8146c44f702ecc5a30b92ece94d2da9864fe2e/diff:/var/lib/docker/overlay2/600a7626e9e37ed2fa7d9743993b3962f44a62463dc78f838556f769e7d44e96/diff:/var/lib/docker/overlay2/5fc8c93883f471a0926a6f6c557f778ab653e50b7043657adcb0486d62d5fe29/diff:/var/lib/docker/overlay2/48ccd0b334cbb70e21a7ec5effa970688617d4d5d2eaf48a54e0563d49a5c63e/diff:/var/lib/docker/overlay2/3f4f2235bf9eacd69ca7ad9ac3f3afe95420a83b02e8ce6feb0db40bfff57e78/diff\",\n",
" \"MergedDir\": \"/var/lib/docker/overlay2/6e47444c8cf9a3858ee80e1377477e6210a9c01ced118a74e0f07b5dcdb9bdea/merged\",\n",
" \"UpperDir\": \"/var/lib/docker/overlay2/6e47444c8cf9a3858ee80e1377477e6210a9c01ced118a74e0f07b5dcdb9bdea/diff\",\n",
" \"WorkDir\": \"/var/lib/docker/overlay2/6e47444c8cf9a3858ee80e1377477e6210a9c01ced118a74e0f07b5dcdb9bdea/work\"\n",
" },\n",
" \"Name\": \"overlay2\"\n",
" },\n",
" \"Mounts\": [],\n",
" \"Config\": {\n",
" \"Hostname\": \"e080630cc930\",\n",
" \"Domainname\": \"\",\n",
" \"User\": \"\",\n",
" \"AttachStdin\": false,\n",
" \"AttachStdout\": false,\n",
" \"AttachStderr\": false,\n",
" \"ExposedPorts\": {\n",
" \"3000/tcp\": {}\n",
" },\n",
" \"Tty\": false,\n",
" \"OpenStdin\": false,\n",
" \"StdinOnce\": false,\n",
" \"Env\": [\n",
" \"no_proxy=*.local, 169.254/16\",\n",
" \"PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\",\n",
" \"LANG=C.UTF-8\",\n",
" \"GPG_KEY=0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D\",\n",
" \"PYTHON_VERSION=3.6.2\",\n",
" \"PYTHON_PIP_VERSION=9.0.1\"\n",
" ],\n",
" \"Cmd\": [\n",
" \"python\",\n",
" \"/app.py\"\n",
" ],\n",
" \"ArgsEscaped\": true,\n",
" \"Image\": \"sha256:766a1b617618d547037986ea8a33edb6c0c0de6cf98ca79ee6859557da861164\",\n",
" \"Volumes\": null,\n",
" \"WorkingDir\": \"\",\n",
" \"Entrypoint\": null,\n",
" \"OnBuild\": null,\n",
" \"Labels\": {}\n",
" },\n",
" \"NetworkSettings\": {\n",
" \"Bridge\": \"\",\n",
" \"SandboxID\": \"201486ae09a8ab004b1bb487c0c16888a64eb9a77ffad5c14907ea30b357fce8\",\n",
" \"HairpinMode\": false,\n",
" \"LinkLocalIPv6Address\": \"\",\n",
" \"LinkLocalIPv6PrefixLen\": 0,\n",
" \"Ports\": {\n",
" \"3000/tcp\": [\n",
" {\n",
" \"HostIp\": \"0.0.0.0\",\n",
" \"HostPort\": \"32779\"\n",
" }\n",
" ]\n",
" },\n",
" \"SandboxKey\": \"/var/run/docker/netns/201486ae09a8\",\n",
" \"SecondaryIPAddresses\": null,\n",
" \"SecondaryIPv6Addresses\": null,\n",
" \"EndpointID\": \"c17821c1fe033d33289fc6b78ce5ace1c63ecb2f28f493ac713cac7c38649deb\",\n",
" \"Gateway\": \"172.17.0.1\",\n",
" \"GlobalIPv6Address\": \"\",\n",
" \"GlobalIPv6PrefixLen\": 0,\n",
" \"IPAddress\": \"172.17.0.2\",\n",
" \"IPPrefixLen\": 16,\n",
" \"IPv6Gateway\": \"\",\n",
" \"MacAddress\": \"02:42:ac:11:00:02\",\n",
" \"Networks\": {\n",
" \"bridge\": {\n",
" \"IPAMConfig\": null,\n",
" \"Links\": null,\n",
" \"Aliases\": null,\n",
" \"NetworkID\": \"c83410f8b3a3a509daea656695dc34bb1361f3fb359ce9b2c5986e684209d2db\",\n",
" \"EndpointID\": \"c17821c1fe033d33289fc6b78ce5ace1c63ecb2f28f493ac713cac7c38649deb\",\n",
" \"Gateway\": \"172.17.0.1\",\n",
" \"IPAddress\": \"172.17.0.2\",\n",
" \"IPPrefixLen\": 16,\n",
" \"IPv6Gateway\": \"\",\n",
" \"GlobalIPv6Address\": \"\",\n",
" \"GlobalIPv6PrefixLen\": 0,\n",
" \"MacAddress\": \"02:42:ac:11:00:02\",\n",
" \"DriverOpts\": null\n",
" }\n",
" }\n",
" }\n",
" }\n",
"]\n"
]
}
],
"source": [
"print(output.n)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'3000/tcp': [{'HostIp': '0.0.0.0', 'HostPort': '32779'}]}"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import json\n",
"attrs = json.loads(output.s)\n",
"attrs[0]['NetworkSettings']['Ports']"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"https://gist.github.com/e5913d5d3ab8fe7c594fd9d1e6743a9a\r\n"
]
}
],
"source": [
"!gist -u e5913d5d3ab8fe7c594fd9d1e6743a9a -s -c ./CantRetrievePortMappedByDocker.ipynb"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment