在GCE的docker实现上,我们在根文件系统上的空间不足。 由于图像本身存储在一个单独的1TB卷上,图像本身不应该成为问题。 一个候选人是Docker本身存储的集中式日志文件(json文件在哪里?),有没有人知道这些文件/文件位于哪里,以及我们如何logrotate / truncate它们?
我有泊坞窗容器与安装和configuration的软件。 没有任何计划应该始终开始/运行。 我想要的 – 根据外部事件启动某些命令的能力。 喜欢: docker exec mysupercont /path/to/mycommand -bla -for 和 docker exec mysupercont /path/to/myothercommand 但是当容器停止时,“exec”是不可能的,而且这个容器里面有一些“工作”的数据,用于这个命令,所以我不能使用 docker run … 每一次,因为它从图像重新创build容器,并摧毁我的数据。 保持这种容器运行的“正确”和“最佳”方法是什么? 我可以从哪里开始?
build议用什么方法更新Amazon ECS中运行的服务的容器? AWS文档说:“如果您更新了应用程序的Docker镜像,则可以使用该镜像创build新的任务定义,并将其部署到您的服务中,一次完成一项任务。 这几乎是当前(2015年4月13日)文档中可用的所有内容。 我理解正确吗,更新Amazon ECS中的应用程序容器的唯一方法是创build一个新任务,然后停止旧任务并启动新任务? 我已经成功地在Core OS和Fleetctl上使用“latest”标签。 这样做的好处是无需为新的更新更改Docker镜像标签,因为重新加载服务将会看到新的更改并更新容器(使用相同的标签“latest”)。 您在Amazon ECS中使用更新的Docker镜像更新服务时使用了哪种方法?
我在设置正在运行的Docker容器上的主机名时遇到问题。 我也无法理解如何在映像启动后指定主机名。 我从我下载的一个图像开始了一个容器: sudo docker run -p 8080:80 -p 2222:22 oskarhane/docker-wordpress-nginx-ss 但我忘了通过-h指定主机名; 我现在怎么能指定容器正在运行的主机名?
在我的Dockerfile中,我有以下的“COPY”语句: # Copy app code COPY /srv/visitor /srv/visitor 不用说,在我的主机系统的“/ srv / visitor”目录下,确实有我的源代码: [root@V12 visitor]# ls /srv/visitor/ Dockerfile package.json visitor.js 现在,当我尝试使用这个Dockerfile来构build一个图像时,它会在应该发生“COPY”的步骤挂起: Step 10 : COPY /srv/visitor /srv/visitor INFO[0155] srv/visitor: no such file or directory 它说没有这样的目录,但显然是。 有任何想法吗? 更新1: 有人指出我错了,就像我理解build筑语境一样。 这个build议相当于把“COPY”声明改为: COPY . /srv/visitor 问题是,我这样做了,构build过程在下一步停止: RUN npm install 它说了一些沿着“没有package.json文件find”的行,当明确是一个。 更新2: 我试图用Dockerfile中的这个改变来运行它: COPY source /srv/visitor/ 它尝试运行npm时停止: Step 12 : […]
在ubuntu:12.04的基础上ubuntu:12.04 , ifconfig在容器中不可用,虽然ip命令可用,为什么呢? 和,如何获取容器中的ifconfig ?
使用Docker Compose v1.6.0 +, docker-compose.yml文件现在有一个新的/ version 2文件语法。 这些更改包括一个名为volumes的单独顶级密钥。 这允许在一个地方“集中”卷定义。 我想要做的是在那里命名卷,并在我的本地主机磁盘上有一个卷引用多个path。 以下是一个例子,用一个以Traceback结尾的exception引发exception AttributeError: 'list' object has no attribute 'items' 示例docker-compose.yml : version: '2' services: db: image: postgres volumes: – database:/var/lib/postgres/data php: image: php-fpm:5.6 volumes: – phpconf:/etc/php/conf.d namedvolume: container_name: namedvolume build: ./Docker/Testvolume volumes: – ./Docker/Testvolume/shareme volumes: database: – ./Docker/Postgres/db:ro – ./Docker/Postgres/ini phpconf: – ./Docker/PHP-FPM/conf singledir: ./Docker/foo completemap: […]
我遇到了Ubuntu 14.04 LTS上的Docker容器问题。 Docker工作了两天,然后突然间,我的容器中的所有networking连接都失去了。 下面的错误输出最初让我相信这是因为apt-get试图通过IPv6来parsingDNS。 我在我的主机上禁用了IPv6,并且仍然删除了所有的镜像,把Ubuntu的基础拉下来了,但是仍然遇到了问题。 我将我的/etc/resolve.conf名称服务器从本地DNS服务器更改为Google的公共DNS服务器(8.8.8.8和8.8.4.4),但仍然没有运气。 我还在/ etc / default / docker的DOCKER_OPTS中将DNS设置为Google,并重新启动了docker。 我也试过拉动coreos,而yum也无法parsingDNS。 这很奇怪,因为虽然DNS不起作用,但当我ping到apt-get无法parsing的相同更新服务器时,仍然得到响应。 我不是在一个代理的背后,我在一个非常标准的本地networking,这个版本的Ubuntu是最新的和新鲜的(我安装两天前更接近docker)。 我已经彻底研究了这个通过其他post在stackoverflow和github问题,但还没有find任何解决scheme。 我不知道如何解决这个问题,谁能帮忙? 错误信息 ➜ arthouse git:(docker) ✗ docker build –no-cache . Sending build context to Docker daemon 51.03 MB Sending build context to Docker daemon Step 0 : FROM ubuntu:14.04 —> 5506de2b643b Step 1 : RUN apt-get update —> […]
我有一个容器的问题,即使它build立完美,它不正确启动。 原因是我已经添加到Dockerfile的解决方法(有一个自我configuration的/ etc / hosts路由) RUN mkdir -p — /lib-override /etc-override && cp /lib/libnss_files.so.2 /lib-override ADD hosts.template /etc-override/hosts RUN perl -pi -e 's:/etc/hosts:/etc-override/hosts:g' /lib-override/libnss_files.so.2 ENV LD_LIBRARY_PATH /lib-override 显然,在那里有一些错误,但我不知道如何得到更多的信息,在运行时,docker正在做什么。 例如,这工作: $ docker run image ls usr bin … 但是这不是: $ docker run image ls -l $ 日志中没有任何内容,我也无法调用交互式shell。 我可以用strace来看看发生了什么,但是我希望能有更好的办法。 有什么办法可以设置docker更详细? 编辑 :感谢Andrew D.我现在知道上面的代码有什么问题(我离开了,所以他的答案可以理解)。 现在问题仍然是我怎么可能debugging这样的事情,或者为什么ls -l失败,为什么ls没有。 编辑 :-D […]
我刚刚开始研究Docker,对我来说有一些困惑。 正如我在Docker的网站上看到的,容器与虚拟机不同。 据我所知,一个容器只是一个内部运行整个隔离文件系统的沙箱。 我也读过一个容器没有安装Guest OS。 相反,它依赖于底层的操作系统内核。 所有这一切都很好。 我感到困惑的是Docker镜像以操作系统命名。 我们看到像Ubuntu,Debian,Fedora,CentOS等图像。 我的观点是:那些图像是什么,真的? 与创build虚拟机和安装Debian相比,创build基于Debian映像的容器有什么不同? 我以为容器没有安装Guest OS,但是当我们创build镜像时,我们将它们放在一个名为OS的命名镜像上。 另外,在例子中,我们看到当我们做docker run ubuntu echo "hello world" ,似乎我们正在Ubuntu上运行一个虚拟机,并运行命令echo "hello world" 。 当我们做docker run -it ubuntu /bin/bash ,看起来我们正在Ubuntu上运行一个虚拟机,并使用命令行来访问它。 无论如何,那些以操作系统命名的图像都是关于什么的? 运行带有其中一个映像的容器和使用相应的客户操作系统启动虚拟机有什么不同? 是这样的想法,我们只是与主机操作系统共享内核(因此我们可以访问底层的机器硬件资源,而不需要虚拟化硬件),但仍然使用容器上每个不同系统的文件和二进制文件支持我们想运行的任何应用程序?