docker-compose up 不启动容器

标签 docker docker-compose

Dockerfile:

FROM shawnzhu/ruby-nodejs:0.12.7

RUN \
    apt-get install git \   
    && npm install -g bower gulp grunt \
    gem install sass

RUN useradd -ms /bin/bash devel

# Deal with ssh
COPY ssh_keys/id_rsa /devel/.ssh/id_rsa
COPY ssh_keys/id_rsa.pub /devel/.ssh/id_rsa.pub
RUN echo "IdentityFile /devel/.ssh/id_rsa" > /devel/.ssh/config

# set root password
RUN echo 'root:password' | chpasswd

# Add gitconfig
COPY .gitconfig /devel/.gitconfig

USER devel

WORKDIR /var/www/

EXPOSE 80

docker-compose.yml 文件:

nodejs:
  build: .
  ports:
    - "8001:80"
    - "3000:3000"
  volumes:
    - ~/Web/docker/nodejs/www:/var/www

命令:

$ docker-compose 构建 Nodejs

$ docker 镜像

REPOSITORY             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
nodejs_nodejs          latest              aece5fb27134        2 minutes ago       596.5 MB
shawnzhu/ruby-nodejs   0.12.7              bbd5b568b88f        5 months ago        547.5 MB

$ docker-compose up -d nodejs

Creating nodejs_nodejs_1

$ docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

$ docker ps --all

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                          PORTS               NAMES
c24c6d0e756b        nodejs_nodejs       "/bin/bash"         About a minute ago   Exited (0) About a minute ago                       nodejs_nodejs_1

正如您所看到的,docker-compose up -d 应该创建了一个容器并在后台运行它,但它没有。相反,它以代码 0 退出。

最佳答案

如果您的 Dockerfile 不执行任何操作(例如,在端口 80 上监听 Web 服务器),则它会在完成运行指令后立即被丢弃。因为Docker containers should be "ephemeral" .

如果您只想启动容器并通过终端与其交互,请不要使用docker-compose up -d,而是使用以下命令:

docker run -it --entrypoint=/bin/bash [your_image_id]

这将启动您的容器并运行 /bin/bash-it 帮助您保持终端 session 与容器交互。完成工作后,按 Ctrl-D 退出。

关于docker-compose up 不启动容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34482018/

相关文章:

docker - 无法拉取图像拉取访问被拒绝,存储库不存在或可能需要 'docker login' :

docker - "404 page not found"执行时 `curl --unix-socket/var/run/docker.sock http:/containers/json`

javascript - 当 docker-compose 退出时运行可执行文件

docker - 将 docker-compose 转换为 Helm chart ?

windows - OSError : Can not read file in context:\\?\C :\project\. gradle\6.6.1\executionHistory\executionHistory.lock

docker - 无法在 Google Container 优化 VM 中将端口绑定(bind)到我的容器

java - Docker 文件 - Master jenkins - hudson.util.HudsonFailedToLoad

docker - Docker组成多个网络

docker - nsq 无法通过连接到 nsqlookupd 来消费消息

docker - 我的docker swarm创建了一个<none>镜像,尝试更新时该镜像一直在运行