Wednesday, December 05, 2018

docker: Error response from daemon: OCI runtime create failed:

Problem:

$ docker run -i -t a4a9a769aa01 /bin/bash
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory": unknown.

Resolution:

$ docker run -i -t a4a9a769aa01 sh

Docker Compose Version 2 and 3

Docker Compose file structure for version 3 is the same as version 2. Some of the items in version 2 are removed in version 3. For more details: Docker Compose File Upgrade

Docker Networking Basics

$ docker version
Client: Docker Engine - Community
 Version:           18.09.0
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        4d60db4
 Built:             Wed Nov  7 00:47:43 2018
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.0
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       4d60db4
  Built:            Wed Nov  7 00:55:00 2018
  OS/Arch:          linux/amd64
  Experimental:     true
  
$ docker-compose version
docker-compose version 1.23.2, build 1110ad01
docker-py version: 3.6.0
CPython version: 3.6.6
OpenSSL version: OpenSSL 1.1.0h  27 Mar 2018
$ docker network

Usage: docker network COMMAND

Manage networks

Commands:
  connect     Connect a container to a network
  create      Create a network
  disconnect  Disconnect a container from a network
  inspect     Display detailed information on one or more networks
  ls          List networks
  prune       Remove all unused networks
  rm          Remove one or more networks

Run 'docker network COMMAND --help' for more information on a command.
$ docker network ls
NETWORK ID          NAME                   DRIVER              SCOPE
2ecc545ad2b8        alpy_default           bridge              local
d8671393ed7e        bridge                 bridge              local
b3c19c5fabc5        host                   host                local
861cdc4e1aaa        kafk_default           bridge              local
43c34d2fd46b        kafka-docker_default   bridge              local
4436df0f00b3        none                   null                local
7b3893e43bb7        rmoff_default          bridge              local


$ docker network inspect kafk_default
[
    {
        "Name": "kafk_default",
        "Id": "861cdc4e1aaaed3e874a93e0153fdf2eeaabb9a81c84fe246c0db1e83408abbb",
        "Created": "2018-12-04T23:38:29.1987718Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.20.0.0/16",
                    "Gateway": "172.20.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

$ docker info
Containers: 20
 Running: 4
 Paused: 0
 Stopped: 16
Images: 48
Server Version: 18.09.0
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host ipvlan macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
 seccomp
  Profile: default
Kernel Version: 4.9.125-linuxkit
Operating System: Docker for Mac
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.952GiB
Name: linuxkit-025000000001
ID: SPSV:BXUV:N7OG:TBYX:CGRI:RDXB:F7RW:JTRP:ZUBN:UAM2:7WD4:Z5GQ
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 51
 Goroutines: 82
 System Time: 2018-12-05T17:17:10.0243027Z
 EventsListeners: 3
HTTP Proxy: gateway.docker.internal:3128
HTTPS Proxy: gateway.docker.internal:3129
Labels:
Experimental: true
Insecure Registries:
Live Restore Enabled: false
Product License: Community Engine

Docker on Mac. Version is most recent than Docker Networking course by Nigel Poulton.

Tuesday, December 04, 2018

How to find Docker host IP

On Mac:

$ docker run -it busybox /bin/sh

Inside the container:

/ # pwd
/
/ # ping docker.for.mac.localhost
PING docker.for.mac.localhost (192.168.65.2): 56 data bytes
64 bytes from 192.168.65.2: seq=0 ttl=37 time=6.215 ms
64 bytes from 192.168.65.2: seq=1 ttl=37 time=0.698 ms
64 bytes from 192.168.65.2: seq=2 ttl=37 time=0.423 ms
64 bytes from 192.168.65.2: seq=3 ttl=37 time=0.324 ms
64 bytes from 192.168.65.2: seq=4 ttl=37 time=0.647 ms
^C
--- docker.for.mac.localhost ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.324/1.661/6.215 ms

On Mac:
$ export HOST_IP=192.168.65.2
$ echo $HOST_IP
192.168.65.2
$ docker run --add-host outside:$HOST_IP --name busybox -it busybox /bin/sh
/ # cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.65.2 outside
172.17.0.4 b0d28743cbcb

Reference