繁体   English   中英

Entrypoint命令如何在这里工作

[英]how does the Entrypoint command works here

ENTRYPOINT命令如何在以下docker compose文件中给出。 我在副本集mongo docker-compose中找到了docker compose文件。 usr / bin / mongod ”是ENTRYPOINT中给出的第一个命令,我的问题usr / bin / mongod是否会启动本地mongo并运行它具有docker容器,否则它将从存储库中提取mongo映像并将其作为容器如果是这样,为什么我们使用“ usr / bin / mongod ”。

version: "3"
services:
  mongo-1:
    hostname: mongo-1
    container_name: mongo-1
    image: mongo:4.0
    ports:
      - "127.0.0.1:28000:28000"
    volumes:
      - ./mongo-1/data:/data/db
    restart: always
    entrypoint: [ "/usr/bin/mongod", "--port", "28000", "--bind_ip_all", "--replSet", "rs1" ] 

使用这个撰写文件,我能够从主机连接在端口28000中运行的mongoDB但是当我在compose文件中用CMD替换ENTRYPOINT时 ,我无法从主机连接mongoDB。

您正在使用图像“mongo:4.0”,它具有自己的ENTRYPOINT和CMD定义。 当您在docker-compose.yml中重新声明其中任何一个时,您将覆盖原始的。

ENTRYPOINT是主命令,CMD只是发送到主命令的参数。 因此,当您使用有效命令定义ENTRYPOINT时,它适用于您。 如果将其更改为CMD,则运行时是原始的ENTRYPOINT(“docker-entrypoint.sh”)和新命令。

您的入口点使用容器内部基于指定图像的二进制文件。

供参考,你可以看到官方图片的Dockerfile: https//github.com/docker-library/mongo/blob/40056ae591c1caca88ffbec2a426e4da07e02d57/4.0/Dockerfile

最后定义了ENTRYPOINT和CMD。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM