Last active
September 4, 2017 15:09
-
-
Save D3f0/e5913d5d3ab8fe7c594fd9d1e6743a9a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "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