docker之旅 3.安装docker-compose以及让nginx跟随docker启动

如果在运行docker-compose ps命令时出现“command not found”错误,这意味着系统无法找到docker-compose命令。这可能是因为docker-compose并未正确安装或者其路径没有添加到系统的环境变量中。

如果你已经安装了Docker,但是未安装docker-compose,你可以通过以下步骤安装它:

  1. 在终端中运行以下命令来下载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/目录中。

  1. 授予docker-compose执行权限:
sudo chmod +x /usr/local/bin/docker-compose
  1. 现在,尝试重新运行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 文件中的服务。下面我会逐一解释这个命令中的各个部分:

  1. docker-compose up:
    • 这是 docker-compose 的一个基本命令,用于创建和启动由 docker-compose.yml 文件定义的服务和容器。
  2. -d:
    • 这是 --detach 的缩写,表示在后台运行容器。当使用 -d 或 --detach 时,docker-compose up 不会阻塞你的终端,而是会立即返回,而容器则会在后台继续运行。
  3. --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

 

posted @ 2024-04-25 23:05  He_LiangLiang  阅读(166)  评论(0编辑  收藏  举报