尝试 运行 docker-compose 的 archlinux 映像,但它只是以代码 0 退出
Trying to run archlinux image of docker-compose but its just exits with code 0
我正在尝试启动 archlinux 映像,然后添加卷,这样我就可以测试我的脚本来配置 Arch Linux。但我坚持开始撰写。如果我重新启动:总是在我注释掉它时它总是重新启动,然后它给我退出代码 0.
version: "3.7"
services:
arch:
image: archlinux/base
# restart: always
我开始创作
$docker-compose up
输出为
Creating network "docker-compose_default" with the default driver
Creating docker-compose_arch_1 ... done
Attaching to docker-compose_arch_1
docker-compose_arch_1 exited with code 0
可能缺少什么?
非常感谢任何帮助。我被这个问题困扰了很长一段时间。
因为 archlinux 有 CMD[/usr/bin/bash]
https://github.com/archlinux/archlinux-docker/blob/master/Dockerfile 这意味着你必须指定任何长 运行 任务来让容器 运行 否则它会退出例如你可以通过bash 的参数,例如 while 循环以保持它 运行.
version: "3.7"
services:
arch:
image: archlinux/base
command:
- "while(true); do sleep 5; done"
您目前正在使用的基本映像 executes /usr/bin/bash
as a default command 需要分配一个 tty 以保持 运行ning(或者您必须将命令更改为任意长 运行宁任务).
首先看看 docker 本身会发生什么。
以交互方式启动容器按预期工作:
$ docker run -it --rm archlinux/base
[root@6642c519e328 /]# more /etc/issue
Arch Linux \r (\l)
[root@6642c519e328 /]# exit
现在让我们尝试运行一个容器在后台:
$ docker run -d --name testarch archlinux/base
915ff11b0c93bd795eb62d37cd2d9928638560d9accfb2e5ba061b3ef19c0235
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ # Hoho, it's not running
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
915ff11b0c93 archlinux/base "/usr/bin/bash" 8 seconds ago Exited (0) 7 seconds ago testarch
$ docker rm testarch
testarch
如果我们对 tty 分配做同样的事情:
$ docker run -d --tty --name testarch archlinux/base
d160a3d7e18c3d094f47577b448a11808eb30ce7ba8fad4cde882818f248f207
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d160a3d7e18c archlinux/base "/usr/bin/bash" 5 seconds ago Up 4 seconds testarch
$ # Tada ! It runs, we can now attach to it.
$ docker exec -it testarch bash
[root@d160a3d7e18c /]# more /etc/issue
Arch Linux \r (\l)
[root@d160a3d7e18c /]# exit
$ docker rm -f testarch
现在回到你的docker-compose.yml
。在您当前的测试阶段,您需要分配一个 tty(如果您 cmd/entry-point 不再需要它,您可以稍后删除)。
version: "3.7"
services:
arch:
image: archlinux/base
tty: true
目前,bash 命令没有在容器日志中发送任何内容。我将以分离模式启动,所以命令 returns 一旦容器启动,我就可以使用同一个终端(启动第二个终端,如果你仍然想 运行 docker-compose in前景模式)
$ pwd
/tmp/slack_test
$ docker-compose up -d
Creating network "slack_test_default" with the default driver
Creating slack_test_arch_1 ... done
$ docker-compose exec arch bash
[root@10f138d98782 /]# more /etc/issue
Arch Linux \r (\l)
[root@10f138d98782 /]# exit
exit
$ docker-compose down
Stopping slack_test_arch_1 ... done
Removing slack_test_arch_1 ... done
Removing network slack_test_default
$
我正在尝试启动 archlinux 映像,然后添加卷,这样我就可以测试我的脚本来配置 Arch Linux。但我坚持开始撰写。如果我重新启动:总是在我注释掉它时它总是重新启动,然后它给我退出代码 0.
version: "3.7"
services:
arch:
image: archlinux/base
# restart: always
我开始创作
$docker-compose up
输出为
Creating network "docker-compose_default" with the default driver
Creating docker-compose_arch_1 ... done
Attaching to docker-compose_arch_1
docker-compose_arch_1 exited with code 0
可能缺少什么?
非常感谢任何帮助。我被这个问题困扰了很长一段时间。
因为 archlinux 有 CMD[/usr/bin/bash]
https://github.com/archlinux/archlinux-docker/blob/master/Dockerfile 这意味着你必须指定任何长 运行 任务来让容器 运行 否则它会退出例如你可以通过bash 的参数,例如 while 循环以保持它 运行.
version: "3.7"
services:
arch:
image: archlinux/base
command:
- "while(true); do sleep 5; done"
您目前正在使用的基本映像 executes /usr/bin/bash
as a default command 需要分配一个 tty 以保持 运行ning(或者您必须将命令更改为任意长 运行宁任务).
首先看看 docker 本身会发生什么。
以交互方式启动容器按预期工作:
$ docker run -it --rm archlinux/base
[root@6642c519e328 /]# more /etc/issue
Arch Linux \r (\l)
[root@6642c519e328 /]# exit
现在让我们尝试运行一个容器在后台:
$ docker run -d --name testarch archlinux/base
915ff11b0c93bd795eb62d37cd2d9928638560d9accfb2e5ba061b3ef19c0235
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ # Hoho, it's not running
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
915ff11b0c93 archlinux/base "/usr/bin/bash" 8 seconds ago Exited (0) 7 seconds ago testarch
$ docker rm testarch
testarch
如果我们对 tty 分配做同样的事情:
$ docker run -d --tty --name testarch archlinux/base
d160a3d7e18c3d094f47577b448a11808eb30ce7ba8fad4cde882818f248f207
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d160a3d7e18c archlinux/base "/usr/bin/bash" 5 seconds ago Up 4 seconds testarch
$ # Tada ! It runs, we can now attach to it.
$ docker exec -it testarch bash
[root@d160a3d7e18c /]# more /etc/issue
Arch Linux \r (\l)
[root@d160a3d7e18c /]# exit
$ docker rm -f testarch
现在回到你的docker-compose.yml
。在您当前的测试阶段,您需要分配一个 tty(如果您 cmd/entry-point 不再需要它,您可以稍后删除)。
version: "3.7"
services:
arch:
image: archlinux/base
tty: true
目前,bash 命令没有在容器日志中发送任何内容。我将以分离模式启动,所以命令 returns 一旦容器启动,我就可以使用同一个终端(启动第二个终端,如果你仍然想 运行 docker-compose in前景模式)
$ pwd
/tmp/slack_test
$ docker-compose up -d
Creating network "slack_test_default" with the default driver
Creating slack_test_arch_1 ... done
$ docker-compose exec arch bash
[root@10f138d98782 /]# more /etc/issue
Arch Linux \r (\l)
[root@10f138d98782 /]# exit
exit
$ docker-compose down
Stopping slack_test_arch_1 ... done
Removing slack_test_arch_1 ... done
Removing network slack_test_default
$