目录
- 1 下载
- 2 安装
- 2.1 新建docker.service
- 2.2 为什么要写docker.service
- 2.3 启动docker
- 2.5 安装docker-compose
- 2.5.1 为什么安装
- 2.5.2 安装
- 3 /usr/local/bin/ 和 /usr/bin 区别
1 下载
将这个上传到linux 服务器的 随便一个目录
2 安装
解压离线安装包
tar -zxvf docker-20.10.7.tgz
解压之后在安装包的同一级的目录下出现这个文件夹
将docker 文件夹里面的东西都复制到 /usr/bin/ 里面
为什么复制到这个 /usr/bin/ 里面,因为docker 文件夹下都是docker 的命令,也就是可执行文件,也就是我们操作docker 的指令。
现在把这些指令都复制到 /usr/bin/ 里面,因为 /usr/bin/ 这个在在系统的PATH
环境变量中。所以在随便一个目录都可以使用这个文件夹下的指令。
目的就是在随便一个目录下都可以使用docker 的指令
cp docker/* /usr/bin/
2.1 新建docker.service
vim /etc/systemd/system/docker.service
这个文件里面的内容是:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
这是一个示例的 docker.service
文件的内容,让我们逐行解释每一行的含义:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Unit]
:这个部分定义了单元的元数据。Description
:描述了单元的名称,这里是 Docker 应用容器引擎。Documentation
:提供了关于 Docker 的文档链接。After
:指定了单元所依赖的其他单元,这里是network-online.target
和firewalld.service
。Wants
:指定了单元所希望的其他单元,这里是network-online.target
。
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Service]
:这个部分定义了服务的配置。Type=notify
:指定了服务的类型为notify
,表示服务会在启动完成时向 systemd 发送通知。ExecStart
:指定了服务的启动命令,这里是/usr/bin/dockerd
,即 Docker 守护进程的可执行文件路径。ExecReload
:指定了服务的重载命令,这里是/bin/kill -s HUP $MAINPID
,表示当服务需要重新加载配置时,发送HUP
信号给主进程。LimitNOFILE
:指定了服务允许的最大文件描述符数,这里设置为infinity
,表示无限制。LimitNPROC
:指定了服务允许的最大进程数,这里设置为infinity
,表示无限制。TimeoutStartSec
:指定了服务启动的超时时间,这里设置为0
,表示没有超时限制。Delegate
:指定了是否将服务的控制权委托给其他单元,这里设置为yes
,表示委托给其他单元。KillMode
:指定了服务被终止时的行为,这里设置为process
,表示终止主进程。Restart
:指定了服务在失败时是否重启,这里设置为on-failure
,表示只有在失败时才重启。StartLimitBurst
:指定了服务重启的次数限制,这里设置为3
,表示在一段时间内最多重启 3 次。StartLimitInterval
:指定了服务重启的时间间隔,这里设置为60s
,表示重启的时间间隔为 60 秒。
[Install]
WantedBy=multi-user.target
[Install]
:这个部分定义了安装的相关信息。WantedBy
:指定了单元所希望安装到的目标,这里是multi-user.target
,表示希望在多用户模式下安装。
这是一个典型的 docker.service
文件的示例,其中定义了 Docker 守护进程的配置和行为,以便 systemd 可以管理它。实际使用时,你可以根据需要进行自定义配置。
2.2 为什么要写docker.service
docker.service
是一个 systemd 单元文件,用于管理 Docker 守护进程(Docker daemon)的启动和停止。systemd 是一个在现代 Linux 系统中广泛使用的初始化系统和服务管理器。
编写 docker.service
文件的目的是为了定义 Docker 守护进程的配置和行为,以便 systemd 可以管理它。这样,你就可以使用 systemd 命令来启动、停止、重启和管理 Docker 守护进程。
docker.service
文件通常位于 /etc/systemd/system/
目录下,它包含了一些配置项,如 Docker 守护进程的启动参数、依赖关系、工作目录等。通过编辑 docker.service
文件,你可以自定义 Docker 守护进程的行为,以满足你的特定需求。
在编写 docker.service
文件后,你可以使用以下命令来管理 Docker 守护进程:
- 启动 Docker 守护进程:
sudo systemctl start docker
- 停止 Docker 守护进程:
sudo systemctl stop docker
- 重启 Docker 守护进程:
sudo systemctl restart docker
- 查看 Docker 守护进程状态:
sudo systemctl status docker
通过 systemd 管理 Docker 守护进程,可以使其在系统启动时自动启动,并提供了更方便的管理方式。
2.3 启动docker
chmod +x /etc/systemd/system/docker.service
systemctl daemon-reload
systemctl enable docker.service
systemctl start docker
让我们逐行解释每一行代码的含义:
-
chmod +x /etc/systemd/system/docker.service
:这条命令给/etc/systemd/system/docker.service
文件添加可执行权限。这是为了确保 systemd 可以执行该文件来启动 Docker 服务。 -
systemctl daemon-reload
:这条命令告诉 systemd 重新加载配置文件,以便它能够识别到新的或修改过的服务单元文件。在修改了/etc/systemd/system/docker.service
文件后,需要运行这个命令来使 systemd 生效。 -
systemctl enable docker.service
:这条命令将 Docker 服务设置为开机启动。它会在系统启动时自动启动 Docker 服务。 -
systemctl start docker
:这条命令启动 Docker 服务。它会立即启动 Docker 守护进程,并使其开始运行容器。
通过执行这些命令,你设置了 Docker 服务的可执行权限,重新加载了 systemd 的配置,将 Docker 服务设置为开机启动,并启动了 Docker 服务。这样,你就可以开始使用 Docker 来管理和运行容器了。
2.5 安装docker-compose
2.5.1 为什么安装
Docker和Docker Compose是两个不同的工具,它们在容器化应用程序的管理和部署方面有不同的作用。
Docker是一个开源的容器化平台,它允许你在隔离的环境中运行应用程序。你可以使用Docker构建、发布和运行容器,每个容器都包含一个完整的应用程序及其依赖项。Docker提供了一种轻量级、可移植和可扩展的方式来打包和部署应用程序。
Docker Compose是一个用于定义和运行多个容器应用程序的工具。它使用YAML文件来配置应用程序的服务、网络和卷等方面的设置。通过Docker Compose,你可以定义一个多容器的应用程序,并使用单个命令来启动、停止和管理这些容器。它简化了多容器应用程序的部署和管理过程,并提供了更高级的功能,如容器间的连接和通信。
虽然Docker本身可以帮助你管理单个容器,但当你需要管理和部署多个容器组成的应用程序时,Docker Compose会更加方便和强大。它允许你使用一个文件来定义整个应用程序的架构,并且可以轻松地启动、停止和扩展多个容器。
因此,尽管你已经安装了Docker,但如果你计划管理和部署多容器应用程序,建议你安装Docker Compose。它将为你提供更好的工具和功能来简化多容器应用程序的管理和部署过程。
2.5.2 安装
离线下载安装包
上传到服务器
cp docker-compose /usr/local/bin/
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
让我为你解释每一行代码的含义和作用:
-
cp docker-compose /usr/local/bin/
这行代码将
docker-compose
二进制文件复制到/usr/local/bin/
目录下。/usr/local/bin/
通常是存放可执行文件的标准位置之一。这样做的目的是为了将docker-compose
添加到系统的可执行文件路径中,使其可以在任何位置运行。 -
sudo chmod +x /usr/local/bin/docker-compose
这行代码赋予
/usr/local/bin/docker-compose
文件可执行权限。通过添加可执行权限,你可以在终端中直接运行docker-compose
命令,而不需要指定完整的文件路径。 -
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
这行代码创建了一个符号链接(symbolic link),将
/usr/local/bin/docker-compose
链接到/usr/bin/docker-compose
。这样做的目的是为了在/usr/bin/
目录下创建一个指向docker-compose
的符号链接,使得docker-compose
命令可以在系统的任何位置使用。 -
docker-compose --version
这行代码用于验证Docker Compose是否成功安装。执行该命令后,会显示Docker Compose的版本信息。如果成功安装,你将看到类似于
docker-compose version X.XX.X
的输出,其中X.XX.X表示安装的Docker Compose版本号。
这些命令的目的是将Docker Compose安装到系统的可执行文件路径中,并确保它具有适当的权限。符号链接的创建可以让你在任何位置使用docker-compose
命令,而不需要指定完整的文件路径。最后,通过运行docker-compose --version
命令,你可以验证安装是否成功,并查看安装的Docker Compose版本号。
3 /usr/local/bin/ 和 /usr/bin 区别
/usr/local/bin
和/usr/bin
是Linux系统中存放可执行文件的两个常见目录。它们之间的区别如下:
-
/usr/local/bin
:这个目录用于存放本地安装的软件的可执行文件。当您手动从源代码编译并安装软件时,通常会将其安装到/usr/local
目录下。/usr/local/bin
是/usr/local
目录中的一个子目录,用于存放这些软件的可执行文件。这样做的好处是,它使得本地安装的软件与系统默认软件分开,避免了对系统软件的干扰。例如,如果您安装了一个自定义版本的某个软件,它的可执行文件可能会放在/usr/local/bin
目录下。 -
/usr/bin
:这个目录是系统默认的可执行文件目录。大多数Linux发行版会将系统自带的软件的可执行文件放在这个目录下。当您安装新的软件包时,它的可执行文件通常会被放在/usr/bin
目录下,以便所有用户都可以访问和使用这些软件。
总结起来,/usr/local/bin
目录用于存放本地安装的软件的可执行文件,而/usr/bin
目录用于存放系统默认的软件的可执行文件。
- 在随便一个目录下,都可以执行以上文件夹里面的可执行文件吗?
不是所有目录下都可以执行/usr/local/bin
和/usr/bin
中的可执行文件。执行一个可执行文件的前提是该文件所在的目录在系统的PATH
环境变量中。
PATH
环境变量是一个包含多个目录路径的列表,系统会按照列表中的顺序搜索这些目录来查找可执行文件。当您在命令行中输入一个命令时,系统会按照PATH
环境变量中的顺序在这些目录中查找对应的可执行文件。
通常情况下,/usr/local/bin
和/usr/bin
都会被包含在PATH
环境变量中,因此您可以在终端中从任意目录执行这些目录中的可执行文件。但是,如果您的PATH
环境变量没有包含这些目录,或者被其他目录覆盖了,那么您就无法直接执行这些可执行文件。
您可以通过在终端中运行echo $PATH
命令来查看当前的PATH
环境变量的值。如果需要在其他目录中执行/usr/local/bin
和/usr/bin
中的可执行文件,可以使用完整的文件路径来运行这些文件,例如/usr/local/bin/executable
或/usr/bin/executable
。