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

为什么我得到一个没有IP地址的docker容器?,docker,centos6,Docker,Centos6,我有一个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\

我有一个
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地址

My
/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服务器从外部访问,我可以在其中插入行并进行查询。

因此答案是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运行-t-I
这个容器来查看终端中的结果,但是我得到了:

CMD=/bin/sh当使用ENTRYPOINT但CMD为空时


“在不使用CMD的情况下使用entrypoint时,CMD设置为/bin/sh,而不是预期的nothing。”

您使用的是什么版本的docker?(类型:docker版本)%docker-v docker版本1.0.0,版本63fe64c