【问题标题】:Docker will not attach to an imageDocker 不会附加到图像
【发布时间】:2015-03-01 05:32:03
【问题描述】:

我有一个 fig.yml 文件,用于设置我的 docker 容器。我通过输入 ./fig up 来运行它然后它输出以下内容:

Recreating docker_memcache_1...
Recreating docker_sphinx_1...
Recreating docker_percona_1...
Recreating docker_php_1...
Recreating docker_sa_1...
Attaching to docker_memcache_1, docker_percona_1, docker_php_1

因此,一旦完成,一切都会启动并运行。我的问题是由于某种原因它没有附加到我设置的 nginx 容器。 docker ps 命令输出以下内容:

9bb0c647338e        php:latest          "/usr/sbin/php-fpm -   2 minutes ago       Up 2 minutes        9000/tcp            docker_php_1        
9f74789bdb15        percona:latest      "mysqld"               3 minutes ago       Up 3 minutes                            docker_percona_1    
b848d3442bdf        memcached:latest    "/bin/sh -c memcache   3 minutes ago       Up 3 minutes        11211/tcp           docker_memcache_1  

因此,memcache 映像、php 映像和 percona 映像都可以使用,但是没有应该有的 nginx docker 映像。

以下是我设置 fig.yml 文件的方式,它基本上是启动所有内容的文件。有人对可能发生的事情有任何想法吗?请注意,我确实将守护程序设置为关闭,因此它不应该自动退出。

fig.yml 文件在这里:

sa:
  image: nginx
  links:
    - php:php-fpm
  volumes:
    - ./svn (path here)
    - ./cert:/(path here)
  ports:
    - "8080:80"
memcache:
  image: memcached
  hostname: memcached.docker
sphinx:
  image: sphinx
  hostname: sphinx.docker
percona:
  image: percona
  hostname: percona.docker
php:
  image: php
  hostname: php.docker
  links:  
    - memcache:memcache.docker
    - sphinx:sphinx.docker
    - percona:percona.docker

还想我会包含我的 nginx Dockerfile,以防万一里面有东西我丢失了非常感谢任何帮助

Nginx Dockerfile

From centos:6.6
RUN yum -y install http://mirror.us.leaseweb.net/epel/6/i386/epel-release-6-8.noarch.rpm
RUN yum -y install nginx && rm /etc/nginx/conf.d/*
CMD ["nginx", "-g", "daemon off;"]
EXPOSE 80 443
COPY sa.conf /etc/nginx/conf.d/
COPY base /etc/nginx/base/

【问题讨论】:

    标签: nginx docker dockerfile fig


    【解决方案1】:

    运行docker ps -a 以显示所有容器,而不仅仅是正在运行的容器。您会看到docker_sa_1 列为已停止的容器。这是因为它在启动时立即崩溃。不幸的是,发生这种情况时,fig 不会为您显示日志(或自动关闭堆栈)。

    运行docker logs docker_sa_1 以查看输出。希望能给你一个很好的 Nginx 错误消息。如果您找不到任何东西,请从您的 fig.yml 中删除 sa 条目,执行 fig up 以启动其他所有操作,然后运行

    docker run -it --link=docker_php_1:php-fpm -v $PWD/svn:(?) -v $PWD/cert:(?) -p 8080:80 nginx
    

    (您需要用您遗漏的路径位填充?s)这与 Fig 所做的相同,除了我们使用附加的 tty 启动容器交互而不是稍后附加。如果您仍然无法收到任何错误消息,请运行

    docker run -it --link=docker_php_1:php-fpm -v $PWD/svn:(?) -v $PWD/cert:(?) -p 8080:80 nginx /bin/bash
    

    在容器上获得一个活动外壳。然后尝试自己启动 Nginx 并在崩溃后挖掘日志文件。

    【讨论】:

    • 这就像你说的那样有效。由于不喜欢 SSL 证书的路径名,nginx 已退出。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 2011-05-20
    • 2011-06-05
    相关资源
    最近更新 更多