1. Information

2. Linux

2.1. Installation

  • Enter the following commands at a Command Line.

    # Uninstall all conflicting packages.
    sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-doc podman-docker containerd runc | cut -f1)
    
    # Add Docker's official GPG key.
    sudo apt-get update
    sudo apt-get install ca-certificates curl
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    
    # Add repository to Apt sources.
    cat << EOF | sed -e "s/^  //" | sudo tee /etc/apt/sources.list.d/docker.sources
      Types: deb
      URIs: https://download.docker.com/linux/debian
      Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
      Components: stable
      Signed-By: /etc/apt/keyrings/docker.asc
    EOF
    
    ls -al /etc/apt/sources.list.d
    cat /etc/apt/sources.list.d/docker.sources
    sudo apt-get update
    
    # Install latest version.
    sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
    # Verify Docker is running.
    sudo systemctl status docker
    
    # Verify that installation is successful by running hello-world image.
    sudo docker run hello-world

2.2. Configuration

  • Enter the following commands at a Command Line.

    # Configure Docker to start on boot with systemd.
    sudo systemctl enable docker.service
    sudo systemctl enable containerd.service
    
    # Add user to docker group.
    sudo usermod -aG docker $USER
    cat /etc/group | grep -i docker
  • Log out and log in again.

2.3. Usage

  • Enter the following commands at a Command Line.

    sudo docker run --interactive --tty debian bash
    # Do your thing.
    exit
    
    sudo ls -al /var/lib/docker/containers
    docker ps --all
  • Contents of Dockerfile.

    FROM debian:latest
    
    # See https://code.visualstudio.com/remote/advancedcontainers/add-nonroot-user
    
    ARG USERNAME=delta
    ARG USER_UID=1000
    ARG USER_GID=$USER_UID
    
    # Create the user
    RUN groupadd --gid $USER_GID $USERNAME \
        && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \
        #
        # [Optional] Add sudo support. Omit if you don't need to install software after connecting.
        && apt-get update \
        && apt-get install -y sudo \
        && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
        && chmod 0440 /etc/sudoers.d/$USERNAME
    
    # ********************************************************
    # * Anything else you want to do like clean up goes here *
    # ********************************************************
    
    # [Optional] Set the default user. Omit if you want to keep the default as root.
    USER $USERNAME
    # Create Dockerfile
    docker build -t delta/debian .
    docker images
    sudo docker run --interactive --rm --tty delta/debian bash
    # Do your thing.
    exit
    
    # Remove all containers.
    docker container prune
    # Create/change a root password in a running container.
    docker exec --interactive --tty --user 0 <container> passwd
  • See https://www.baeldung.com/ops/root-user-password-docker-container.

    cat Dockerfile12
      FROM debian:latest
      RUN apt-get update
      RUN useradd --comment "Delta Software Labs" --create-home delta
      USER delta
      CMD ["/bin/bash"]
    
    docker build --file Dockerfile12 --tag delta-debian .
    docker run --detach --interactive --name delta-debian delta-debian
    docker ps
    docker exec --interactive --tty delta-debian bash
    docker stop <id>
    docker container prune
  • Enter the following commands at a Command Line.

    sudo docker run hello-world
    sudo docker run --interactive --tty ubuntu /bin/bash
    sudo docker run debian:8 /bin/echo 'Hello world'
    sudo docker run ubuntu:14.04 /bin/echo 'Hello world'
  • In ~/.docker/config.json change credsStore to credStore.

docker network create nginx-proxy
docker run -p 8080:8080 lissy93/dashy

2.4. Connect to Running Container

  • Enter the following commands at a Command Line.

    docker ps
    
    docker exec -it <container-name> /bin/bash
    docker exec -it <container-name> /bin/sh