Docker 提供了巨大的好处。在容器化之前,开发人员在各种 Linux 版本上编写和部署代码时会遇到很多问题,应用程序在一个系统上工作得很好,但在另一个系统上却失败了。Docker 标准化了代码部署,并确保应用程序可以在各种计算环境中无缝运行,而不会遇到依赖关系问题或错误。此外,Docker 还有助于实现巨大的规模经济。Docker 是资源友好的,轻量级的,而且非常高效。
如果你在 IT 行业工作,你很有可能听说过 Docker,除非你住在一个山洞里或一个与世界完全隔绝的偏远地区。Docker 是一种开源的容器化技术,它彻底改变了开发人员开发和部署应用程序的方式。它允许开发团队在容器中构建、管理和部署应用程序。容器是一个独立的预构建的软件包,它带有自己的库和依赖项。容器在与主机操作系统完全隔离的情况下运行,彼此之间也完全隔离。
在本指南中,我们将介绍如何在 Arch Linux 安装 Docker,并学习如何运行 Docker 容器。
使用如下命令,安装 docker
$ sudo pacman -S docker
Docker 作为守护服务运行,就像 Apache 或 SSH 等其他服务一样。这意味着您可以启动、停止、重新启动和启用 Docker 服务。
$ sudo systemctl start docker
$ sudo systemctl enable docker
确认 docker 服务正在运行
$ sudo systemctl status docker
查看 docker 版本
$ sudo docker version
运行以下 docker 命令,启动一个 hello-world 容器
$ sudo docker run hello-world
To download or pull an image from Docker hub without running it, use the syntax:
要从 Docker Hub 下载或拉取镜像而不运行它,请使用以下语法
$ sudo docker pull
例如,我们拉取 nginx 镜像
$ sudo docker pull nginx
查看本地镜像
$ sudo docker images
从输出中,你可以看到我们有两个镜像:nginx 和 hello-world 镜像。输出提供了诸如 Repository、Image 标签、Image ID、修改日期和镜像大小等附加信息。
如果要运行一个镜像,基本语法如下
$ sudo docker run
直接运行镜像,终端可能没有响应,镜像通常在前台运行。建议使用 -d 选项在后台运行它。
例如,要在后台运行 nginx 镜像,请执行
$ sudo docker run -d nginx
查看正在运行的容器
$ sudo docker ps
查看所有容器,包括正在运行的和先前已停止的容器
$ sudo docker ps -a
要停止容器,使用 docker stop 命令,后面跟着容器 ID。例如,停止 Nginx 容器
$ sudo docker stop 968ff5caba7f
一些从操作系统镜像生成的容器可能需要一些用户交互。例如,您可能希望与 Ubuntu 容器镜像交互并访问 shell 以运行命令。要实现这一点,请使用 -it 选项。
为了更好地演示这一点,我们将下载 Ubuntu 20.04 docker 镜像
$ sudo docker pull ubuntu:20.04
我们将访问 shell,并在容器中运行命令
$ sudo docker run -it ubuntu:20.04
你可能想运行一个 web 服务器容器,使用 -p 选项,将其端口映射到主机系统
$ sudo docker -p 8080:80 nginx
Port 80 is the port on which the Nginx container is listening to which is being mapped on port 8080 on the host. You can test this by accessing the Nginx web server using the host’s IP address as shown:
80 端口是 nginx 容器监听的端口,它被映射到主机的 8080 端口上。你可以通过如下所示的主机 IP 地址访问 nginx 服务器来测试
http://host-ip:8080
If you want to user docker commands with sudo command then add your local user to docker group, run
如果不想使用 sudo 命令来执行 docker 命令,请将本地用户添加到 docker 组
$ sudo usermod -aG docker $USER
$ newgrp docker