码头-分离模式组成

我有以下码头命令运行集装箱

docker run -d --name test -v /etc/hadoop/conf:/etc/hadoop/conf -v /usr/lib/python2.7/dist-packages/hdinsight_common:/usr/lib/python2.7/dist-packages/hdinsight_common -v /etc/hive/conf/:/etc/hive/conf/ -v /etc/tez/conf/:/etc/tez/conf/ -v /usr/hdp/2.4.2.0-258/sqoop/lib/:/usr/hdp/2.4.2.0-258/sqoop/lib/ -i -t hdinsight /bin/bash

这太复杂了,所以我试着创建这样的文件

version: '2'
services:
hdinsight:
image: hdinsight
container_name: ABC
volumes:
- /etc/hadoop/conf:/etc/hadoop/conf
- /usr/lib/python2.7/dist-packages/hdinsight_common:/usr/lib/python2.7/dist-packages/hdinsight_common
- /etc/hive/conf/:/etc/hive/conf/
- /etc/tez/conf/:/etc/tez/conf/
- /usr/hdp/2.4.2.0-258/sqoop/lib/:/usr/hdp/2.4.2.0-258/sqoop/lib/
entrypoint:
- bash
labels:
- "HDInsight client VM"

但是我不确定从我原来的 docker run 命令传递 -d-i-t标志的位置

我当时在做这样的码头作曲

docker-compose -f docker-compose.yml run hdinsight

有人能告诉我正确的方向吗?

第一次回答后更新

我试过运行 docker-compose up -d

root@abc-docker:~/ubuntu# docker-compose up -d
Creating ABC
root@sbd-docker:~/ubuntu# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
ffa4c359abf7        hdinsight           "/bin/bash"         5 seconds ago       Exited (0) 5 seconds ago                       ABC
root@sbd-docker:~/ubuntu#

不知道为什么它在 Exited状态

知道吗?

谢谢

102223 次浏览

您应该清理 Compose 文件 医生

大多数 去码头了命令都有一个撰写等价物,它们都应该列在那里。

背景标志-d 位于 快跑起来之后。

Tty 标志-t 和交互式标志-i 在 docker-compose 运行 默认这样做时不是必需的。您可以使用-t 将 tty 添加到组合文件中的单个容器中,但是不能使用交互模式,因为您可能同时启动多个容器,并且不能与所有容器进行交互。

根据您的情况,您正在使用的命令应该可以工作。如果在 run 命令之后添加-d,它将在后台运行。但是我建议使用 起来而不是 快跑,因为它将简单地启动文件中的所有容器,而不必指定 hdinsight。

今天我面临着同样的问题,下面是我如何管理。

我添加 没错键值 & 键值 真实键值在’多克-组成。Yml’文件,我确信它将在分离模式下运行,也可以与控制台交互。

version: '2'
services:
hdinsight:
image: hdinsight
container_name: ABC
volumes:
- /etc/hadoop/conf:/etc/hadoop/conf
- /usr/lib/python2.7/dist-packages/hdinsight_common:/usr/lib/python2.7/dist-packages/hdinsight_common
- /etc/hive/conf/:/etc/hive/conf/
- /etc/tez/conf/:/etc/tez/conf/
- /usr/hdp/2.4.2.0-258/sqoop/lib/:/usr/hdp/2.4.2.0-258/sqoop/lib/
entrypoint:
- bash
labels:
- "HDInsight client VM"
tty: true
stdin_open: true

摘自文件

Usage: up [options] [--scale SERVICE=NUM...] [SERVICE...]


Options:
-d, --detach               Detached mode: Run containers in the background,
print new container names. Incompatible with
--abort-on-container-exit.

码头工人,准备好,博士

命令应该是

docker-compose up -d

正如 Anand Suthar 所说,你必须使用 tty: truestdin_open: true:

version: "3"
services:
alpine1:
image: alpine
tty: true
stdin_open: true

首先:

docker-compose up -d

用以下物品附着在容器上:

docker attach 268bcfb650fb

^P^Q分离。

现在使用 1.28.0中引入的 资料比试图附加到现有容器要容易得多。

下面是一个显示 CLI 容器旁边的普通服务的基本示例:

version: '3'


services:
db:
image: mariadb:10
environment:
- MARIADB_ROOT_PASSWORD=INSECURE
volumes:
- mariadb:/var/lib/mysql
ports:
- "3306:3306"


cli:
image: node:16
user: node
volumes:
- .:/app
environment:
- DATABASE_URL=mysql://root:INSECURE@db/prisma
working_dir: "/app"
stdin_open: true
tty: true
command: bash
profiles:
- cli


volumes:
mariadb:

在运行 docker-compose up -d之后,docker-compose run cli将在容器内部提供一个 bash shell。

对于更复杂的应用程序,可以考虑重写入口点。在 nodejs 中,如果将其设置为 npx,并且不定义命令,则可以使用 docker-compose run npx ...运行任意 npx 命令。对于总是非交互的常见任务,您可以在离开配置文件集时删除 std_opentty行。