paragraph break

This article is my note of Docker installation and troubleshooting process, follow by the Docker official guide.

Set up the repository

  1. Update the apt package index and install packages to allow apt to use a repository over HTTPS:

    sudo apt update
    
    sudo apt install \
      apt-transport-https \
      ca-certificates \
      curl \
      gnupg-agent \
      software-properties-common
    
  2. Add Docker’s official GPG key:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    

    Verify that you now have the key with the fingerprint 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88, by searching for the last 8 characters of the fingerprint.

    sudo apt-key fingerprint 0EBFCD88
    

    screen shot of sudo apt-key

  3. Set up the stable repository.

    sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"
    

Install Docker engine

  1. Update the apt package index, and install the latest version of Docker Engine and containerd.

    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io
    
  2. Verify that Docker Engine is installed correctly by running the hello-world image.

    sudo docker run hello-world
    

    You should see the welcome message below if Docker has been successfully installed:

    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    
    To generate this message, Docker took the following steps:
     1. The Docker client contacted the Docker daemon.
     2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
        (amd64)
     3. The Docker daemon created a new container from that image which runs the
        executable that produces the output you are currently reading.
     4. The Docker daemon streamed that output to the Docker client, which sent it
        to your terminal.
    
    To try something more ambitious, you can run an Ubuntu container with:
     $ docker run -it ubuntu bash
    
    Share images, automate workflows, and more with a free Docker ID:
     https://hub.docker.com/
    
    For more examples and ideas, visit:
     https://docs.docker.com/get-started/
    

Using docker command without sudo

  • Add the docker group if it doesn’t already exist:

    sudo groupadd docker
    
  • Add the connected user “$USER” to the docker group. Change the user name to match your preferred user if you do not want to use your current user:

     sudo gpasswd -a $USER docker
    
  • To activate the changes to groups:

    # option:
    sg group_name -c "bash"
    
    # or:
    newgrp docker
    

    Or log out/in to activate the changes.

  • Check if it’s successful:

    docker ps
    

Troubleshooting

Error when connect to docker.io

This error occurs when using the Docker CLI, failed even simply calling docker run, the error message like this:

Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection
  • Fixing in the new daemon.json file
    • List current DNS server:

      nmcli dev show | grep 'IP4.DNS'
      
    • Create or Edit /etc/docker/daemon.json add the DNS server:

      In this case 192.19.8.10 is my proxy server, 8.8.8.8 is Google Public DNS server.

      {
        "dns": ["192.19.8.10", "8.8.8.8"]
      }
      
    • Restart Docker deamon

      sudo service docker restart
      

paragraph break

References

⤧  Previous post Caching system - Redis vs. Memcached ⤧  Next post Docker - Container usage