如何运行和login到容器进行debugging?

我只是想build立我的Dockerfile,看下面:

FROM ubuntu:14.04 MAINTAINER Mike Dillon <mike@appropriate.io> ENV POSTGIS_MAJOR 2.1 ENV POSTGIS_VERSION 2.1.7+dfsg-3~94.git954a8d0.pgdg80+1 # temporary instruction, i beleive all the apt-get etc commands will need to be RUN in the # RUN -t -i ubuntu:14.04 /bin/bash RUN apt-get install postgresql-client RUN apt-get update && apt-get install -y --no-install-recommends postgresql-$PG_MAJOR-po$ postgis=$POSTGIS_VERSION && rm -rf /var/lib/apt/lists/* RUN mkdir -p /docker-entrypoint-initdb.d COPY ./initdb-postgis.sh /docker-entrypoint-initdb.d/postgis.sh 

现在几行代码运行,比我得到以下错误:

 Need to get 2538 kB of archives. After this operation, 12.3 MB of additional disk space will be used. Do you want to continue? [Y/n] Abort. The command '/bin/sh -c apt-get install postgresql-client' returned a non-zero code: 1 

现在我不关心Dockerfile也没有错误,事实上我知道错误是什么,我没有将-y标志添加到RUN apt-get install postgresql-client命令中。 我的问题是关于debugging,我的同事给了我下面的build议,每次我得到一个错误,当我尝试build立一个Dockerfile:

非零代码表示运行此任务时出错。 为了testing到底发生了什么问题,可以运行并login容器,并在容器内手动运行此命令。

现在我怎样才能run and login the container ? 我不太明白那部分,有人可以解释吗?

假设你运行构build并有问题。 docker提供您可以login的图层ID来执行故障排除。

 $ docker build -t test . Sending build context to Docker daemon 2.56 kB Step 0 : FROM ubuntu:14.04 ---> 8251da35e7a7 Step 1 : MAINTAINER Mike Dillon <mike@appropriate.io> ---> Running in 85fd1216cc35 ---> d6d68fed500b Removing intermediate container 85fd1216cc35 Step 2 : ENV POSTGIS_MAJOR 2.1 ---> Running in 6d0ee92229ee ---> 377a352cd0fa Removing intermediate container 6d0ee92229ee Step 3 : ENV POSTGIS_VERSION 2.1.7+dfsg-3~94.git954a8d0.pgdg80+1 ---> Running in 40173fe1edb9 ---> 758a2e6c90b0 Removing intermediate container 40173fe1edb9 Step 4 : RUN apt-get install postgresql-client ---> Running in 3ece9c7fa9df Reading package lists... Building dependency tree... Reading state information... The following extra packages will be installed: krb5-locales libasn1-8-heimdal libedit2 libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libpq5 libroken18-heimdal libsasl2-2 libsasl2-modules libsasl2-modules-db libwind0-heimdal postgresql-client-9.3 postgresql-client-common Suggested packages: krb5-doc krb5-user libsasl2-modules-otp libsasl2-modules-ldap libsasl2-modules-sql libsasl2-modules-gssapi-mit libsasl2-modules-gssapi-heimdal postgresql-9.3 postgresql-doc-9.3 The following NEW packages will be installed: krb5-locales libasn1-8-heimdal libedit2 libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libpq5 libroken18-heimdal libsasl2-2 libsasl2-modules libsasl2-modules-db libwind0-heimdal postgresql-client postgresql-client-9.3 postgresql-client-common 0 upgraded, 24 newly installed, 0 to remove and 0 not upgraded. Need to get 2538 kB of archives. After this operation, 12.3 MB of additional disk space will be used. Do you want to continue? [Y/n] Abort. The command '/bin/sh -c apt-get install postgresql-client' returned a non-zero code: 1 

所以它停在容器ID( 3ece9c7fa9df ),然后你需要去以前的容器( 758a2e6c90b0 )和logintesting命令:

 $ docker run -ti 758a2e6c90b0 bash root@32e1859e2675:/# apt-get install postgresql-client Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: krb5-locales libasn1-8-heimdal libedit2 libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libpq5 libroken18-heimdal libsasl2-2 libsasl2-modules libsasl2-modules-db libwind0-heimdal postgresql-client-9.3 postgresql-client-common Suggested packages: krb5-doc krb5-user libsasl2-modules-otp libsasl2-modules-ldap libsasl2-modules-sql libsasl2-modules-gssapi-mit libsasl2-modules-gssapi-heimdal postgresql-9.3 postgresql-doc-9.3 The following NEW packages will be installed: krb5-locales libasn1-8-heimdal libedit2 libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libpq5 libroken18-heimdal libsasl2-2 libsasl2-modules libsasl2-modules-db libwind0-heimdal postgresql-client postgresql-client-9.3 postgresql-client-common 0 upgraded, 24 newly installed, 0 to remove and 0 not upgraded. Need to get 2538 kB of archives. After this operation, 12.3 MB of additional disk space will be used. Do you want to continue? [Y/n] 

现在你看到完全相同的错误,重复这个问题,你可以运行任何你可以在容器层进行故障排除的命令。 你应该知道下一步该怎么做。

在这种情况下,当你手动运行这个命令,并且你看到错误的时候,你可以用-y选项再次运行来certificate问题是可以修复的。另一种情况是,你启用了debugging选项,比如在shell脚本中运行与-x选项等等。如果这有帮助,你也可以通过日志文件。