docker之旅 3.安装docker-compose以及让nginx跟随docker启动
如果在运行docker-compose ps
命令时出现“command not found”错误,这意味着系统无法找到docker-compose
命令。这可能是因为docker-compose
并未正确安装或者其路径没有添加到系统的环境变量中。
如果你已经安装了Docker,但是未安装docker-compose
,你可以通过以下步骤安装它:
- 在终端中运行以下命令来下载
docker-compose
的二进制文件:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
这会将docker-compose
下载并安装到/usr/local/bin/
目录中。
- 授予
docker-compose
执行权限:
sudo chmod +x /usr/local/bin/docker-compose
- 现在,尝试重新运行
docker-compose ps
命令。
如果docker-compose
已正确安装,但在运行时仍出现“command not found”错误,可能是因为其路径没有添加到系统的环境变量中。你可以手动将其路径添加到环境变量中,或者在运行命令时使用绝对路径。例如:
/usr/local/bin/docker-compose ps
到这里,你的docker-compose 就安装成功了。
(新用户,docker下面没有启动容器,没有 docker-compose.yml配置文件,所以执行
/usr/local/bin/docker-compose ps
的时候,没有啥信息输出。关于这个 yml配置文件,后面会继续介绍)
docker 已经跟随系统启动了,但是docker下面安装的nginx 没有跟随docker启动。
这个需要docker-compose来管理。
1.找一个文件夹,存放docker 的一些工程文件。
例如我们这里是 /home/henry/dockerPath,在它下面创建一个 名为 docker-compose.yml
文件。
touch docker-compose.yml
使用 Docker Compose
如果你使用 Docker Compose 管理容器,你可以在 docker-compose.yml
文件中设置 Nginx 服务的启动选项。例如:
version: '3' services: nginx: image: nginx restart: always # 总是重启容器
然后,运行 docker-compose up -d
启动服务,此时 Nginx 将在 Docker 启动时自动启动。
重启docker
sudo systemctl restart docker
查看 docker下面运行的容器
docker ps
此时我们会看到 nginx跟随了 docker一起启动。
这是我目前的 yml文件。
[henry@192 dockerPath]$ pwd /home/henry/dockerPath [henry@192 dockerPath]$ [henry@192 dockerPath]$ cat docker-compose.yml version: '3' services: myNginx: image: nginx restart: always [henry@192 dockerPath]$
每次yml文件修改之后,需要执行
docker-compose up -d
sudo systemctl restart docker
sudo systemctl status docker
docker-compose up -d --remove-orphans
是一个 docker-compose
命令,用于启动和运行定义在 docker-compose.yml
文件中的服务。下面我会逐一解释这个命令中的各个部分:
- docker-compose up:
- 这是
docker-compose
的一个基本命令,用于创建和启动由docker-compose.yml
文件定义的服务和容器。
- 这是
- -d:
- 这是
--detach
的缩写,表示在后台运行容器。当使用-d
或--detach
时,docker-compose up
不会阻塞你的终端,而是会立即返回,而容器则会在后台继续运行。
- 这是
- --remove-orphans:
- 这个选项是
docker-compose
的一个非常有用的特性。在某些情况下,你可能会手动删除一些容器,或者由于某些原因(如配置错误、网络问题等)导致容器没有正常停止,但相关的服务在docker-compose.yml
文件中仍然存在。这些未被docker-compose
管理的容器被称为“孤儿”容器。 - 使用
--remove-orphans
选项,docker-compose up
会在启动服务之前,先尝试删除所有与当前docker-compose.yml
文件不相关的“孤儿”容器。这有助于保持你的 Docker 环境整洁,并确保只有与当前配置相关的容器在运行。
- 这个选项是
总结:docker-compose up -d --remove-orphans
命令会在后台启动 docker-compose.yml
中定义的服务,并在启动之前尝试删除所有与该文件不相关的“孤儿”容器。
docker-compose up -d --remove-orphans