Tag: docker

Docker for Windows无法正常工作

我已经安装了Docker工具箱,我得到了一切的错误: Get http://127.0.0.1:2375/v1.20/version: dial tcp 127.0.0.1:2375: ConnectExtcp: No connection could be made because the target machine actively refused it.. * Are you trying to connect to a TLS-enabled daemon without TLS? * Is your docker daemon up and running? docker version输出: Client: Version: 1.8.1 API version: 1.20 Go version: go1.4.2 Git commit: d12ea79 Built: Thu […]

在Dockerfile中,如何更新PATH环境variables?

我有一个dockerfile从源代码下载和构buildGTK,但下面的行不更新我的图像的环境variables: RUN PATH="/opt/gtk/bin:$PATH" RUN export PATH 我读过,我应该使用ENV设置环境值,但下面的指令似乎也不工作: ENV PATH /opt/gtk/bin:$PATH 这是我的整个Dockerfile: FROM ubuntu RUN apt-get update RUN apt-get install -y golang gcc make wget git libxml2-utils libwebkit2gtk-3.0-dev libcairo2 libcairo2-dev libcairo-gobject2 shared-mime-info libgdk-pixbuf2.0-* libglib2-* libatk1.0-* libpango1.0-* xserver-xorg xvfb # Downloading GTKcd RUN wget http://ftp.gnome.org/pub/gnome/sources/gtk+/3.12/gtk+-3.12.2.tar.xz RUN tar xf gtk+-3.12.2.tar.xz RUN cd gtk+-3.12.2 # Setting environment variables before […]

如何使用不同的命令启动停止的Docker容器?

我想用一个不同的命令启动一个停止的Docker容器,就像默认的命令崩溃 – 这意味着我不能启动容器,然后使用“docker exec”。 基本上我想开始一个shell,所以我可以检查容器的内容。 幸运的是我用-it选项创build了容器!

在Docker中以非root用户身份运行应用程序

在昨天的Shocker消息之后 ,似乎Docker容器内的应用程序不应该以root身份运行。 我试图更新我的Dockerfile来创build一个应用程序用户,但是改变应用程序文件的权限(虽然仍然是root)似乎不工作。 我猜这是因为一些LXC权限没有被授予root用户也许? 这是我的Dockerfile: # Node.js app Docker file FROM dockerfile/nodejs MAINTAINER Thom Nichols "thom@thomnichols.org" RUN useradd -ms /bin/bash node ADD . /data # This next line doesn't seem to have any effect: RUN chown -R node /data ENV HOME /home/node USER node RUN cd /data && npm install EXPOSE 8888 WORKDIR /data CMD […]

如何使用Docker,Puppet和Vagrant开发LAMP Web应用程序?

在黑暗时代,我通常开发的LAMP Web应用程序是在我的机器上进行本地testing。 PHP(在我的情况下),数据库和Web服务器都是本地安装的。 服务器是使用标准安装的Apache和MySQL进行安装的,而且我有多个虚拟主机用于Web应用程序的不同部分。 当我对我在本地机器上得到的结果感到满意时,我将login到服务器,然后在暂存环境中进行git pull 。 假设服务器上的所有东西都和我的机器一样,我也会为生产做同样的事情。 新的开始… 所以现在我从头开始一个全新的Web应用程序,我想要“正确的方式”。 我已经读了Docker,Vagrant和Puppet(还有厨师,尽pipe我个人更喜欢Puppet的依赖系统而不是Chef的迭代过程)。 尽pipe我所做的所有研究,似乎仍然有几个问题,我似乎无法find答案: 是否应为Web服务器(如Apache),数据库服务器(如MySQL)和Web应用程序的每个部分分别安装Docker容器? 当我谈论Web应用程序的某些部分时,我指的是mysite.com , controlpanel.mysite.com等等。这些“部分”将共享相同的数据库。 由于Docker似乎为Web和数据库服务器提供了现成的容器,所以至less应该将这些东西放在单独的容器中。 我的networking应用程序的不同部分应该在不同的容器中吗? Docker容器似乎被devise成可replace的,而不是我必须更新里面的软件。 他们写的数据怎么样,我不想丢失? 数据库服务器将pipe理与我的数据库内容相关的文件(我将要备份)。 Web服务器将创build日志,我的Web应用程序将pipe理各种文件和caching等。所有这些文件都需要写在应用程序的容器之外(因为我可能在更新时replace它们),所以它们在哪里? 直接进入主机的文件系统? 或成为一个单独的“docker卷”? 如果他们进入Docker卷,我应该使用一个单独的卷为数据库,Web服务器,应用程序等? 我是否仍然可以像现在一样使用本地机器上的SFTP轻松访问内容? 我不想在这里失去任何便利! 使用Puppet创build和pipe理开发服务器和生产服务器的Docker容器是不是一个好主意? 看来Puppet支持直接pipe理Docker容器,所以这似乎是从头开始轻松设置服务器或生产环境(使用Vagrant)的相当好的方法。 希望我已经提出了一些相关的问题; 为了开发和生产类似LAMP的networking应用程序,获得一些适当的“最佳实践”将是非常好的,只是似乎没有多less我find的!

在docker集装箱上安装多个卷?

我知道我可以在我的容器中使用类似的东西在我的主机上挂载一个目录 docker run -t -i -v '/on/my/host:/on/the/container' ubuntu /bin/bash 有没有办法创build多个主机 – 容器对? 例如逗号分隔的列表,或传入数组?

docker工人:“构build”需要1个参数。 请参阅“docker build –help”

尝试按照说明从docker网站build立docker图像。 https://docs.docker.com/examples/running_redis_service/ 这是我得到的错误将按照文档上的说明和使用此Dockerfile FROM ubuntu:14.04 RUN apt-get update && apt-get install -y redis-server EXPOSE 6379 ENTRYPOINT ["/usr/bin/redis-server"] sudo docker build -t myrepo/redis docker: "build" requires 1 argument. See 'docker build –help'. 如何解决?

如何将卷添加到现有的Docker容器?

我有一个Docker容器,我简单地通过在Ubuntu上安装Docker来创build: sudo docker run -i -t ubuntu /bin/bash 我立即开始安装Java和一些其他工具,花一些时间和它停止了容器 exit 然后,我想添加一个音量,并意识到这不像我想的那样简单。 如果我使用sudo docker -v /somedir run …那么我最终将得到一个新的容器,所以我将安装Java,并执行之前完成的工作,然后才能到达装入卷的容器。 所有关于从主机安装文件夹的文档似乎暗示了安装卷是创build容器时可以完成的事情。 所以我必须避免从头开始重新configuration一个新的容器,唯一的办法就是将现有的容器提交到一个存储库,并在安装时使用它作为新容器的基础。 这确实是将卷添加到现有容器的唯一方法吗?

如何configurationDocker端口映射来使用Nginx作为上游代理?

更新II 现在是2015年7月16日,事情又改变了。 我从Jason Wilder发现了这个自动化的容器: https://github.com/jwilder/nginx-proxy : https://github.com/jwilder/nginx-proxy ,只要需要docker run容器,它就解决了这个问题。 这是现在我用来解决这个问题的解决scheme。 更新 现在是2015年7月,事情发生了巨大的变化,关于networkingDocker容器。 现在有许多不同的解决scheme可以解决这个问题(以各种方式)。 您应该使用这篇文章来获得对docker –link的基本了解 – 连接服务发现的方法,它基本上是一样的,工作得很好,实际上比大多数其他解决scheme所需的花式跳舞less。 这是有限的,很难在任何给定的集群单独的主机上的容器networking,容器不能重新启动一旦联网,但提供了一个快速和相对简单的方法,在同一个主机上的networking容器。 弄清楚你可能用来解决这个问题的软件实际上是在做什么的。 此外,你可能还想看看Docker的新生network ,Hashicorp的consul ,Weaveworks weave ,Jeff Lindsay的progrium/consul & gliderlabs/registrator以及Google的Kubernetes 。 还有使用etcd , fleet和flannel etcd产品。 如果你真的想参加一个聚会,你可以build立一个集群来运行Mesosphere , Deis或者Flynn 。 如果你刚接触networking(比如我),那么你应该拿出你的老花镜,在Wi-Hi-Fi上popup“用星星涂写天空 – 恩雅的精华” ,然后开一杯啤酒 – 这将会是有一段时间你才真正明白你在做什么。 提示:您正试图在您的Cluster Control Plane实现Service Discovery Layer 。 这是一个非常好的方式来度过一个星期六晚上。 这很有趣,但是我希望自己能花点时间好好教育自己,以便更好地了解networking。我最终从仁慈的数字海洋教程(Digital Ocean Tutorials Gods)网站上find了几篇文章: Introduction to […]

Docker,如何从容器中获取容器信息?

我想让我的docker containers知道它们的configuration,就像通过元数据获取有关EC2实例的信息一样。 我可以使用(提供的docker正在监听端口4243 ) curl http://172.17.42.1:4243/containers/$HOSTNAME/json 得到它的一些数据,但想知道是否有更好的方法,至less得到容器的完整ID,因为HOSTNAME实际上缩短为12个字符,并且docker似乎执行了“最佳匹配”。 另外,如何获取Docker主机的外部IP(除访问AWS特有的EC2元数据外)