Skip to content

Docker Engine

Timeline

2013:

Docker Daemon ← → Rest API ← → Docker CLI

Docker Daemon was managing Containers, Volumes, Images, Networks and Runtime

Docker used LXC to manage containers

LXC uses namespaces and CGroups

2014 (v0.9)

Introduction of libcontainer

libcontainer was able to directly contact kernel and no dependency on LXC

2015 (OCI)

Open Container Initiative

2016 (v1.11)

Daemon Manages: Images, Volumes and Networks

containerD: Manage containers

containerd-shim: manages runC

runC: Runs containers

Docker Objects

  1. Images
  2. Containers
  3. Networks
  4. Volumes

Check Docker Installation

Check Edition and Version

docker version

Check Docker CLI verison

docker --version

Check info of docker host

docker system info

Managing Docker Service on Linux System

Start docker daemon

systemctl start docker

Manually Start docker daemon

dockerd

:::info dockerd will print logs of docker daemon service :::

Get debug logs

dockerd --debug

Docker Socket

By default, docker daemon listen on Unix Socket at /var/run/docker.sock

By default, listening on network interface is disabled

Enable docker daemon to listen on network socket

unencrypted connection

dockerd --host=tcp://IP-ADDRESS:2375

for encrypted connections

dockerd --host=tcp://IP-ADDRESS:2376 \
        --tls=true \
        --tlscert=/var/docker/server.pem \
        --tlskey=/var/docker/serverkey.pem

Configuring a file to enable network socket

vim /etc/docker/daemon.json
{
    "debug": true,
    "hosts": ["tcp://192.168.1.10:2376"],
    "tls": true,
    "tlscert": "/var/docker/server.pem",
    "tlskey": "/var/docker/serverkey.pem"
}
dockerd

or

systemctl start docker