可以从Docker容器中执行“Docker组合”命令吗?

s6fujrry  于 2023-01-29  发布在  Docker
关注(0)|答案(2)|浏览(127)

是否可以使用Docker容器从运行docker-compose命令?例如,我正在尝试从Docker容器中安装https://datahubproject.io/docs/quickstart/,该容器是使用如下所示的Dockerfile构建的。Dockerfile将创建一个Linux容器,该容器具有datahubproject.io项目所需的先决条件(Python)并将存储库代码克隆到Docker容器中,然后我希望能够从存储库代码执行Docker编写脚本(克隆到新构建的Docker容器)来创建运行datahubproject.io项目所需的Docker容器。这不是一个docker提交问题。
要尝试此操作,我有以下docker-compose.yml脚本:

version: '3.9'
# This is the docker configuration script    
services:
    datahub:
      # run the commands in the Dockerfile (found in this directory)
      build: .
      # we need tty set to true to keep the container running after the build
      tty: true

...和一个Dockerfile(用于根据datahubproject.io quickstart所需的要求设置Linux环境):

FROM debian:bullseye
ENV DEBIAN_FRONTEND noninteractive

# install some of the basics our environment will need
RUN apt-get update && apt-get install -y \
    git \
    docker \
    pip \
    python3-venv

# clone the GitHub code
RUN git clone https://github.com/kuhlaid/datahub.git --branch master --single-branch

RUN python3 -m venv venv
#     # the `source` command needs the bash shell
SHELL ["/bin/bash", "-c"]
RUN source venv/bin/activate

RUN python3 -m pip install --upgrade pip wheel setuptools
RUN python3 -m pip install --upgrade acryl-datahub
CMD ["datahub version"]
CMD ["./datahub/docker/quickstart.sh"]

我从这两个脚本所在的命令行运行docker compose up,以运行Dockerfile并创建将用于安装datahubproject.io项目的启动容器。
我收到此错误:

datahub-datahub-1  | Quickstarting DataHub: version head
datahub-datahub-1  | Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
datahub-datahub-1  | No Datahub Neo4j volume found, starting with elasticsearch as graph service
datahub-datahub-1  | ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?

我不知道我正在尝试做的事情是否可能与Docker。有什么建议,使这项工作?-谢谢

wqsoz72f

wqsoz72f1#

docker-compose命令是否可以从Docker容器中执行?
是的。和其他命令一样。
是否可以使用Docker容器从运行Docker-compose命令?
是的。
有什么建议可以让它工作吗?
与主机上的Docker类似。运行Docker守护进程或使用DOCKER_HOST连接到一个守护进程。DIND与https://hub.docker.com/_/docker相关。

yc0p9oo0

yc0p9oo02#

答案似乎是修改docker-compose.yml脚本以包含两个附加设置:

version: '3.9'
# This is the docker configuration script    
services:
    datahub:
      # run the commands in the Dockerfile (found in this directory)
      build: .
      # we need tty set to true to keep the container running after the build
      tty: true
      # ---------- adding the following two settings seems to fixes the issue of the `CMD ["./datahub/docker/quickstart.sh"]` failing in the Dockerfile 
      stdin_open: true
      volumes:
        - /var/run/docker.sock:/var/run/docker.sock

相关问题