Docker 是开发人员和系统管理员构建、运行和共享应用程序的最流行的开源平台。容器化(使用容器部署应用程序)变得流行,因为容器灵活、轻量、便携、松散耦合、可扩展且更安全。
本文是初学者学习如何在 Ubuntu 20.04 Linux 系统上安装和使用 Docker 的良好起点,附带一些基本命令。在本指南中,我们将安装 Docker 社区版(CE)。
先决条件:
在 Ubuntu 20.04 上安装 Docker
为了使用最新版本的 Docker,我们将从官方 Docker 仓库安装它。因此,首先添加官方 Docker 仓库的 GPG 密钥到您的系统,然后使用以下命令将仓库配置添加到 APT 源中。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
现在使用以下命令更新 APT 包缓存,以包含新的 Docker 包到系统中。
$ sudo apt update
接下来,按照以下所示安装 Docker 包。
$ sudo apt install docker-ce

在 Docker 包安装过程中,软件包安装程序会触发 systemd(系统和服务管理器)自动启动和启用 docker 服务。使用以下命令确认 docker 服务处于活动状态,并已启用自动在系统启动时启动。还要检查其状态:
$ sudo systemctl is-active docker $ sudo systemctl is-enabled docker $ sudo systemctl status docker

有几个其他的 systemctl 命令 用于管理和控制 Docker 服务,其中包括以下内容:
$ sudo systemctl stop docker #stop the docker service $ sudo systemctl start docker #start the docker service $ sudo systemctl restart docker #restart the docker service
要检查系统上安装的 Docker CE 的版本,请运行以下命令:
$ docker version

您可以通过运行 docker 命令而不带任何选项或参数来查看可用的 docker 使用命令:
$ docker

使用 sudo 命令以非 root 用户身份管理 Docker
默认情况下,Docker 守护进程绑定到一个 UNIX 套接字(而不是一个 TCP 端口),该套接字由用户 root 拥有。因此,Docker 守护进程始终以 root 用户身份运行,并且要运行 docker 命令,您需要使用 sudo。
此外,在安装 Docker 软件包时,会创建一个名为 docker
的组。当 Docker 守护进程启动时,它会创建一个由 docker 组成员访问的 UNIX 套接字(该套接字授予与 root 用户等效的特权)。
要在不使用 sudo 的情况下运行 docker 命令,请将所有应该访问 docker 的非 root 用户添加到 docker 组中,如下所示。在此示例中,命令将当前登录的用户 ($USER)
或用户名添加到 docker 组:
$ sudo usermod -aG docker $USER OR $ sudo usermod -aG docker username
覦激活组的更改,运行以下命令:
$ newgrp docker $ groups

下一步,请验证您是否可以在docker命令中不使用sudo。以下命令下载一个测试镜像并在容器中运行它。一旦容器运行起来,它会打印一条信息消息然后退出。这也是另一种检查您的安装是否正常工作的方法。
$ docker run hello-world

使用Docker镜像
A Docker image is a read-only template file with instructions for creating a Docker container. You can either create your custom images or you can only use those created by others and published in the Docker Hub, the world’s largest library and community for container images.
您可以使用以下命令在Docker Hub中搜索centos
镜像:
$ docker search centos

要在本地下载镜像,请使用pull命令。此示例显示如何下载官方centos镜像。
$ docker pull centos

下载完成后,您可以列出本地系统上可用的镜像。
$ docker images

如果您不再需要某个镜像,可以将其从系统中删除。
$ docker rmi centos OR $ docker rmi centos:latest #where latest is the tag
运行和管理Docker容器
A Docker container is a process that runs natively on Linux and shares the kernel of the host machine with other containers. Concerning a Docker image, a container is just a running image.
要基于您的新centos
镜像启动一个容器,请运行以下命令,其中“centos”
是本地镜像名称,而“cat /etc/centos-release”是在容器中运行的命令:
$ docker run centos cat /etc/centos-release

A container runs a discrete process that is isolated in that it has its own: file system, networking, and isolated process tree separate from the host. Note that you can manipulate a container using the container’s ID, ID-prefix, or name as shown below. The above container process exits after the command runs.
要列出Docker容器,请使用docker ps命令如下。使用-l
标志显示所有状态中最新创建的容器:
$ docker ps OR $ docker ps -l

要显示包括已退出的所有容器,请使用-a
标志。
$ docker ps -a

您还可以在容器退出后使用其容器ID启动容器。例如,在上一个命令中,我们的容器ID是94c35e616b91。我们可以像下面显示的那样启动容器(注意它将运行命令然后退出):
$ docker start 94c35e616b91

要停止使用其ID运行的容器,请使用如下所示的stop命令。
$ docker stop 94c35e616b91
Docker还允许您在运行容器时使用--name
选项为容器分配名称。
$ docker run --name my_test centos cat /etc/centos-release $ docker ps -l

现在您可以使用容器名称来管理(启动、停止、统计、删除等)容器:
$ docker stop my_test $ docker start my_test $ docker stats my_test $ docker rm my_test
在Docker容器中运行交互式会话
要在容器中启动交互式shell会话,以便在容器内运行命令,请运行以下命令:
$ docker run --name my_test -it centos

在上述命令中,-it
开关告诉Docker分配一个伪TTY连接到容器的标准输入,从而在容器中创建一个交互式bash shell。
您可以按照所示使用exit命令退出。
# exit
如果您不希望退出,可以分离容器并使其保持运行状态。为此,请使用CTRL+p
然后CTRL+q
键序列。

您可以使用attach命令重新连接到容器,该命令将本地标准输入、输出和错误流附加到运行的容器:
$ docker attach my_test
此外,您可以使用-d
标志在分离模式下启动容器。然后使用attach命令将您的终端的标准输入、输出和错误流附加到运行的容器:
$ docker run --name my_test -d -it centos $ docker attach my_test

最后,您可以通过运行以下命令从主机会话停止正在运行的容器:
$ docker kill my_test
就这些了!在本指南中,我们介绍了如何在Ubuntu 20.04 Linux中安装和使用Docker CE。如果您有任何疑问,请使用下面的反馈表格询问我们。