Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用程序及其依赖项到一个可移植的容器中,然后发布到任何支持 Docker 的平台上运行。
Docker 的概念
-
容器(Container):容器是 Docker 的核心运行单元,它是一个轻量级、可执行的软件包,包含了运行某个应用程序所需的所有内容,如代码、运行时、库、环境变量和配置文件等。容器与宿主机共享内核,但彼此隔离,互不干扰。
-
镜像(Image):镜像是容器的模板,包含了容器运行所需的文件系统和应用程序。镜像是只读的,不可修改,但可以通过它创建多个容器实例。Docker 镜像通常基于基础镜像(如 Ubuntu、Alpine 等),通过添加应用程序和配置构建而成。
-
仓库(Repository):仓库是存储 Docker 镜像的地方,分为本地仓库和远程仓库。Docker Hub 是最著名的远程仓库,用户可以在这里上传、下载和共享镜像。
1. 通过 curl
下载 Docker 安装脚本
通过 curl
下载 Docker 安装脚本,并保存为 test-docker.sh
文件。以下是完整的操作步骤:
步骤 1:安装 curl
首先,确保你的系统中安装了 curl
。运行以下命令:
bash复制
sudo apt update
sudo apt install curl
步骤 2:下载 Docker 安装脚本
使用 curl
下载脚本并保存为 test-docker.sh
:
bash复制
curl -fsSL https://test.docker.com -o test-docker.sh
步骤 3:验证脚本内容
在运行脚本之前,建议先查看脚本内容,确保其安全:
bash复制
cat test-docker.sh
步骤 4:运行脚本
确认脚本内容无误后,可以运行脚本安装 Docker。由于脚本需要 root
权限,因此需要使用 sudo
:
bash复制
sudo sh test-docker.sh
步骤 5:验证 Docker 是否安装成功
安装完成后,运行以下命令验证 Docker 是否安装成功:
bash复制
sudo docker --version
2. 用户组(User Group)是什么?
在 Linux 系统中,用户组是一种用于管理用户权限的机制。每个用户都可以属于一个或多个用户组,每个用户组可以被赋予特定的权限。通过用户组,系统管理员可以更高效地管理权限,而不需要为每个用户单独设置权限。
例如:
-
sudo
组:属于这个组的用户可以执行需要管理员权限的命令。 -
www-data
组:用于管理 Web 服务器(如 Apache 或 Nginx)的文件和权限。 -
docker
组:用于管理 Docker 的权限。
1. 查看所有用户组
要查看系统中所有的用户组,可以使用以下命令:
bash复制
cat /etc/group
-
解释:
/etc/group
文件包含了系统中所有用户组的信息。每一行代表一个用户组,格式如下:group_name:password:GID:user_list
-
group_name
:用户组名称。 -
password
:用户组密码(通常为空或x
,表示没有密码)。 -
GID
:用户组的 ID(Group ID)。 -
user_list
:属于该组的用户列表,用逗号分隔。
-
2. 查看当前用户所属的组
要查看当前登录用户所属的所有用户组,可以使用以下命令:
bash复制
groups
或者:
bash复制
id -Gn
-
groups
:显示当前用户所属的所有用户组。 -
id -Gn
:显示当前用户所属的所有用户组名称。 -
id -G
:显示当前用户所属的所有用户组的 GID(Group ID)。
例如:
bash复制
$ groups
wang docker sudo
这表示用户 wang
属于 wang
、docker
和 sudo
这三个用户组。
3. 查看指定用户所属的组
如果你想查看某个特定用户所属的用户组,可以使用以下命令:
bash复制
groups username
或者:
bash复制
id -Gn username
3. Docker 和用户组的关系
Docker 是一个运行在后台的守护进程(dockerd
),它默认以 root 用户 的权限运行。这意味着,当你运行 Docker 命令(如 docker run
或 docker ps
)时,这些命令实际上是在与 Docker 守护进程通信,而守护进程需要高权限来管理容器、镜像和网络等资源。
为什么需要 docker
组?
默认情况下,只有 root 用户可以直接与 Docker 守护进程通信。如果你以普通用户身份运行 Docker 命令,系统会提示你需要管理员权限(即需要使用 sudo
)。这可能会带来不便,尤其是在开发环境中频繁使用 Docker 时。
为了避免每次运行 Docker 命令都需要输入 sudo
,Docker 提供了一种机制:将用户添加到 docker
组。这个组被配置为可以直接与 Docker 守护进程通信,而不需要额外的管理员权限。
sudo groupadd docker
sudo usermod -aG docker ${USER}
sudo systemctl restart docker
newgrp docker
4.构建docker镜像
Dockerfile
是一个文本文件,用于定义如何构建 Docker 镜像
docker build
是用于构建 Docker 镜像的命令,它会根据指定的 Dockerfile
和上下文(context)生成一个新的镜像(换源)
docker build --network host -f base.dockerfile .
#查看镜像id
docker images ls
docker tag
是 Docker 的一个命令,用于为现有的镜像重新打标签(tag)。通过这个命令,你可以为镜像指定一个新的名称或标签,方便管理和识别。
命令解析
docker tag 10ba4324da04 linux:monitor