如何在Ubuntu 20.04上安装Docker

码头工人 是一个开源平台,使软件开发人员可以构建,部署和管理容器化的应用程序。这意味着应用程序被打包在一个容器中。容器是操作系统需要运行的源代码,库和其他依赖项的组合。

而且,Docker在使用容器时使其变得更加简单,流畅和安全。

在本教程中,您将完成在Ubuntu 20.04上安装Docker的所有步骤,并学习使用Docker容器/映像的基本概念。

安装Docker

默认情况下,Ubuntu 20.04的官方软件存储库中提供Docker安装包。但是,它不是最新版本。我们建议您从官方Docker存储库中安装最新版本的Docker。

首先,您需要更新当前的软件包列表并安装所需的软件包,然后才能运行以下命令将新的存储库添加到系统中。

$ sudo apt update
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg-agent

接下来,您需要从Docker存储库导入GPG密钥。

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

添加Docker存储库 到系统APT源:

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

运行以下命令以更新新添加的存储库。

$ sudo apt update

确保从该存储库而不是Ubuntu存储库安装docker。

$ apt-cache policy docker-ce

您将看到类似于以下内容的输出:

docker-ce:
  Installed: (none)
  Candidate: 5:19.03.11~3-0~ubuntu-focal
  Version table:
     5:19.03.11~3-0~ubuntu-focal 500
        500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
     5:19.03.10~3-0~ubuntu-focal 500
        500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
     5:19.03.9~3-0~ubuntu-focal 500
        500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages

上面的输出表明,系统上已安装了Ubuntu 20.04 Docker存储库中的“ docker -ce”。

最后安装 码头工人 (社区版本):

$ sudo apt install docker-ce

要检查docker是否正确安装并正常运行,请运行以下命令:

$ sudo systemctl status docker

输出显示Docker服务处于活动状态(正在运行)。

● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-06-17 15:29:48 +07; 8min ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 136640 (dockerd)
      Tasks: 17
     Memory: 50.8M
     CGroup: /system.slice/docker.service
             └─136640 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
...

检查Docker服务状态

Docker服务状态

我已经在Ubuntu计算机上成功安装了docker。本教程的以下各节详细介绍如何使用docker命令。

在没有sudo特权的情况下运行docker

默认情况下,具有sudo特权或docker组的用户必须运行docker命令。如果尝试不使用sudo或使用不属于docker组的用户的特权运行docker命令,则会收到类似于以下错误:

docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.

解决方法是将用户添加到“ docker”组。

$ sudo usermod -aG docker 

注销当前会话,然后再次登录以应用您的会员资格。通过运行以下命令,确保用户位于“ docker”组中:

$ groups
ubuntu sudo docker

现在,您可以运行不带“ sudo”的docker命令。

Docker命令

本节介绍如何使用docker命令。在深入研究细节之前,让我们看一下“ docker”命令的语法。

$ docker [options] [sub-commands] [arguments]

要列出docker的所有可用子命令,请运行以下命令:

$ docker

您需要记住许多选项,子命令和参数。让我们在本教程的以下部分中仔细研究其中的一些。

Management Commands:
  builder     Manage builds
  config      Manage Docker configs
  container   Manage containers
  context     Manage contexts
  engine      Manage the docker engine
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command. 

Docker镜像

Docker映像由源代码,库以及应用程序需要作为容器运行的所有依赖项组成。您可以从头开始构建Docker映像,但是可以从容器注册表中获取这些映像。您可以在注册表中存储图像并使用唯一名称下载它们。默认情况下,Docker的容器注册表是Docker Hub。

看看是否可以从中拉出图像 Docker中心,您可以运行以下命令:

$ docker run hello-world

从以下输出中可以看到,docker无法在本地找到“ hello-world”映像,并且无法从Docker Hub中提取该映像。下载映像后,Docker会从中创建一个容器。容器中的应用程序运行,并显示一条消息。

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete 
Digest: sha256:d58e752213a51785838f9eed2b7a498ffa1cb3aa7f946dda11af39286c3db9a9
Status: Downloaded newer image for hello-world:latest

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
...

要在Docker Hub上搜索图像,可以使用“ docker”命令和“ search”子命令。要查找“高山”图像,请运行以下命令:

$ docker search alpine

Docker搜索高山

Docker搜索命令

如您所见,输出返回名称中包含“ alpine”的所有图像的列表。

另外,您可以运行以下命令来下载Docker映像。Docker镜像拉” 继续输入图像名称。例如:

$ docker image pull alpine

根据您的互联网速度,下载可能最多需要一分钟。

Using default tag: latest
latest: Pulling from library/alpine
df20fa9351a1: Pull complete 
Digest: sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

此外,如果要列出所有下载的图像,请运行以下命令:

$ docker image ls

输出显示图像详细信息,例如存储库,标签,图像ID,创建时间和文件大小。

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
alpine              latest              a24bb4013296        2 weeks ago         5.57MB
hello-world         latest              bf756fb1ae65        5 months ago        13.3kB

有时候你必须 删除泊坞窗 图片,您可以运行命令:

$ docker image rm 

要么

$ docker image rm 

Docker容器

容器是Docker映像的运行实例。容器运行单个应用程序或进程的运行时。您可以通过运行’docker container’子命令与容器交互以启动/停止或删除它。

例如,要启动基于“ Ubuntu”映像的Docker容器,请运行以下命令:

[email protected]:~$ docker container run ubuntu

当我从Docker Hub下载新的Ubuntu映像并启动Ubuntu容器时,它立即返回系统命令提示符,因为Ubuntu容器在启动后立即停止。

Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
a4a2a29f9ba4: Pull complete 
127c9761dcba: Pull complete 
d13bf203e905: Pull complete 
4039240d2e0b: Pull complete 
Digest: sha256:35c4a2c15539c6c1e4e5fa4e554dac323ad0107d8eb5c582d6ff386b383b7dce
Status: Downloaded newer image for ubuntu:latest
[email protected]:~$

要通过命令行与Ubuntu容器进行交互,可以使用以下命令启动该容器。 -it 选项:

$ docker container run -it ubuntu

您现在位于容器中,可以访问交互式外壳程序。

[email protected]:/# 

到目前为止,我们已经在Ubuntu系统上运行了许多容器。要列出所有活动(运行)容器,请运行以下命令:

$ docker container ls

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

没有容器在运行,因为结果返回一个空列表。如果要列出所有容器(活动和不活动),请执行以下操作:

$ docker container ls -a

输出看起来像这样:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
45cc68d4395e        ubuntu              "/bin/bash"         14 minutes ago      Exited (0) 11 minutes ago                         stoic_dhawan
fc91e50d223e        ubuntu              "/bin/bash"         26 minutes ago      Exited (0) 26 minutes ago                         sleepy_ritchie
ce0d81682913        alpine              "/bin/bash"         26 minutes ago      Created                                           trusting_kowalevski
4291477f5ac2        alpine              "/bin/sh"           27 minutes ago      Exited (130) 27 minutes ago                       priceless_wozniak
86c0fd44a4f4        alpine              "/bin/sh"           28 minutes ago      Exited (0) 28 minutes ago                         objective_agnesi
3fdcaa196fca        hello-world         "/hello"            31 minutes ago      Exited (0) 31 minutes ago                         eloquent_rhodes

如果要删除/删除容器,请运行:

$ docker container rm 

结论

在本教程中,我们学习了如何在Ubuntu 20.04上安装Docker以及如何使用映像和容器。这些是Docker概念的基础,通常由开发人员使用。

感谢您的阅读。请在评论中留下您的建议。

Sidebar