gpt4 book ai didi

docker - 为什么我得到一个没有 IP 地址的 docker 容器?

转载 作者:行者123 更新时间:2023-12-03 17:54:58 24 4
gpt4 key购买 nike

我有一个 Dockerfile 可以在 Centos 6 上构建 mongodb:

# Build docker image for mongodb

FROM test

MAINTAINER ...

# Set up mongodb yum repo entry
# https://www.liquidweb.com/kb/how-to-install-mongodb-on-centos-6/
RUN echo -e "\
[mongodb]\n\
name=MongoDB Repository\n\
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/\n\
gpgcheck=0\n\
enabled=1\n" >> /etc/yum.repos.d/mongodb.repo

# Install mongodb
RUN yum install -y mongodb-org

# Set up directory requirements
RUN mkdir -p /data/db /var/log/mongodb /var/run/mongodb
VOLUME ["/data/db", "/var/log/mongodb"]

# Expose port 27017 from the container to the host
EXPOSE 27017

# Start mongodb
ENTRYPOINT ["/usr/bin/mongod"]
CMD ["--port", "27017", "--dbpath", "/data/mongodb", "--pidfilepath", "/var/run/mongodb/mongod.pid"]

我构建它:

% docker build -t mongodb .                                                      
...
Step 8 : CMD ["--port", "27017", "--dbpath", "/data/mongodb", "--pidfilepath", "/var/run/mongodb/mongod.pid"]
---> Running in 4025f6c86f81
---> 46d71068d2e0
Removing intermediate container 4025f6c86f81
Successfully built 46d71068d2e0

我运行它:

% docker run -d -P 46d71068d2e0
0bdbfd6fe86ca31c678ba45ac1328958e8126b05c717877287e725924451f7f8

我检查它:

% docker inspect 0bdbfd6fe86ca31c678ba45ac1328958e8126b05c717877287e725924451f7f8
[{
...
"NetworkSettings": {
"Bridge": "",
"Gateway": "",
"IPAddress": "",
"IPPrefixLen": 0,
"PortMapping": null,
"Ports": null
},

我没有IP地址。

我的/etc/default/docker里面只有DNS选项:

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"

为什么?我发现在没有地址的情况下使用它很有挑战性。

如果我将 ENTRYPOINTCMD 替换为 CMD [],我可以运行容器(docker run -t -我是 mongodb/bin/sh),它有一个地址,我可以从容器内启动 mongod。它可以作为 mongodb 服务器从外部访问,我可以在其中插入行和查询。

最佳答案

所以答案是 mongodb 无法启动,因为我为数据指定了一个不存在的路径:

 "--dbpath", "/data/mongodb"

当我之前创建了一个完全不同的目录时:

RUN mkdir -p /data/db /var/log/mongodb /var/run/mongodb
VOLUME ["/data/db", "/var/log/mongodb"]

当使用 docker run -P -d 启动时,没有输出。我尝试 docker run -t -i 这个容器在终端中查看结果,但我得到了 this error :

CMD = /bin/sh when using ENTRYPOINT but empty CMD

“在没有 CMD 的情况下使用入口点时,CMD 设置为/bin/sh 而不是预期的空。”

关于docker - 为什么我得到一个没有 IP 地址的 docker 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24273728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com