为啥我得到一个没有 IPAddress 的 docker 容器?
Posted
技术标签:
【中文标题】为啥我得到一个没有 IPAddress 的 docker 容器?【英文标题】:Why am I getting a docker container with no IPAddress?为什么我得到一个没有 IPAddress 的 docker 容器? 【发布时间】:2014-08-08 01:13:41 【问题描述】:我有一个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"
为什么?我发现在没有地址的情况下使用它很有挑战性。
如果我用CMD []
替换ENTRYPOINT
和CMD
,我可以运行容器(docker run -t -i mongodb /bin/sh
),它有一个地址,我可以从容器内启动mongod
。它可以作为 mongodb 服务器从外部访问,我可以在其中插入行并进行查询。
【问题讨论】:
您使用的是什么版本的 docker? (类型:docker版本) % docker -v Docker 版本 1.0.0,构建 63fe64c 【参考方案1】:所以答案是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 使用 ENTRYPOINT 但 CMD 为空时
“当使用没有 CMD 的入口点时,CMD 设置为 /bin/sh 而不是预期的空。”
【讨论】:
以上是关于为啥我得到一个没有 IPAddress 的 docker 容器?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 IPAddress.TryParse 允许“]”之后的任何内容
为啥我没有得到 UIScrollView 的实际 contentSize?