Questions tagged «docker»

Docker是一个开源项目,可自动在软件容器内部署应用程序。

3
从私有注册表中删除标记的Docker映像
如何从私有Docker注册表中的映像中删除错误添加的标签?选项-rmi似乎不适用于Docker 1.9.1中的远程映像。 user@ubuntu-user:~$ docker --version Docker version 1.9.1, build a34a1d5 user@ubuntu-user:~$ docker search myregistry:5000/user/image NAME myregistry:5000/user/image:20160119 myregistry:5000/user/image:20160119-20160120 user@ubuntu-user:~$ docker rmi myregistry:5000/user/image:20160119-20160120 Error response from daemon: could not find image: no such id: myregistry:5000/user/image:20160119-20160120 Error: failed to remove images: [myregistry:5000/user/image:20160119-20160120]

2
如何:在弹性容器服务上进行Dockerized MongoDB复制
我有一个Node.js应用程序以及在AWS ECS上运行的MongoDB数据库。我目前得到的设置是由2个ELB和2个实例组成的,每个实例运行一个带有其分配的服务(节点/ mongo)的Docker容器: Elastic Load Balancer -> Dockerized Node -> Elastic Load Balancer -> Dockerized MongoDB 我正在运行MongoDB的官方Docker映像,可在此处访问:https : //registry.hub.docker.com/_/mongo/ 关于如何能够使用Docker和ECS为MongoDB部署一个副本集的任何指示,每个副本都在不同的实例上运行?

3
我可以在Nginx服务的静态文件中使用Nginx环境变量吗?
如果我在nginx配置中使用环境变量,并且nginx配置为仅提供静态文件(html,js,css-例如AngularJs应用程序),我有什么方法可以在nginx服务的JS文件中使用环境变量?或者是运行非静态服务器(例如io.js,php等)的唯一方法。 顺便说一句,您不能在nginx的配置中本地使用环境变量。 当我在Nginx配置中谈论环境变量时,我的意思是像这篇文章一样:如何在Nginx.conf中使用环境变量env APP_WEB_1_PORT_5000_TCP_ADDR;和$ENV{"APP_WEB_1_PORT_5000_TCP_ADDR"}; 确切说明您的用例 我的特定用例是,我在Docker容器中有一个由nginx驱动的AngularJS应用。该应用程序是一个“单页应用程序”,它完全消耗了在另一个系统上运行的API。目前,我在生产和登台之间运行一个不同的Docker容器,因为该应用程序具有一些不同的配置,例如Google-Analtyics代码。此特定于环境的数据保存在config.js文件中,并且当前值已进行硬编码,mastergit中分支的一个值和分支的其他值staging。我想更改设计,以便可以在生产和暂存中使用相同的容器。我想通过一个ENV VAR到当我运行它(容器docker run -e GACODE=UA-12345-6 ...),并有使用nginx的ENV VAR(通过env GACODE;与$ENV{"GACODE"}这样的config.js文件可以使用传入的GoogleAnaltyics代码,而不是对其进行硬编码)。我不知道这是否可行(因此提出问题;)。仅使用nginx可使我的容器成为一个单进程,而如果必须使用io.js,则需要多个链接的容器,并且需要移动的部件会更加复杂。

1
如何构建指定软件包特定版本的Linux环境?
我正在创建一个dockerfile,该文件运行与Java的特定版本绑定的自定义应用程序。 我使用的是centos7基本图像,因为那是我所指的文章所使用的,并且因为我必须使用某些东西,所以它与任何东西一样好。老实说,我不在乎我使用的是哪个用户区。此映像的重点是托管的软件,Linux发行版本身只是达到目的的一种方法-重要的是,其他应用程序或用户不会使用JDK。 如前所述,我的应用程序与我使用的Java特定版本相关联-Java版本的任何更新都需要对该特定版本的软件进行全面的回归测试,然后才能发布。 我关注的文章从相关的dockerfile JDK安装部件开始,如下所示: FROM centos:centos7 RUN yum makecache \ && yum update -y \ && yum install -y \ java-1.8.0-openjdk-devel \ && yum clean all 这还不够具体,每当构建映像时,它将获得Java的随机版本,这不是我想要的,我需要特定版本的Java。 我将docker文件更改为如下所示: FROM centos:centos7 RUN yum makecache \ && yum update -y \ && yum install -y \ java-1.8.0-openjdk-devel-1.8.0.65-3.b17.el7 \ && yum clean …
9 linux  centos  java  yum  docker 

2
在AWS中使用Docker / Ansible与Ansible,Puppet和Foreman的不可变服务器模型吗?
我们遇到了一个有趣的争论,并且陷入了两个阵营。我对我们可能会缺少的想法或陷阱的任何特定问题感兴趣。确实,任何可以帮助我们做出决定或指出我们无法解释的事情的事物。我知道这会绕开“无意见”规则,但我希望这仍然是一个可以接受的问题。很抱歉,长度也有很多细微差别。 1)一方面(我-我并非毫无偏见)发现不可变服务器模型对于云系统非常有趣。为此,我们原型化了将基础架构的所有组件移入Docker的过程。我们的定制应用程序通过Jenkins直接构建到部署到本地Docker Registry的Docker映像中。然后,我们创建了大量Ansible角色和一本剧本,该剧本可以连接到空服务器,安装Docker,然后告诉Docker根据需要安装所有容器。几分钟后,整个应用程序及其所有支持的基础结构都已连接并正常工作-日志记录,监视,数据库创建/填充等。完成的机器是一个自包含的QA或开发环境,具有与之完全相同的副本。应用。我们的扩展计划是制造新的Playbook,以从基本受信任的AMI(可能是非常裸露的映像)构建新的AWS服务器,进行生产应用程序的滚动部署以处理配置管理和发布,并且通常不再编辑服务器-只是让他们重新。我不担心在实践中得到我所描述的内容-即使这是一个合理的模型。 2)另一个阵营希望使用Puppet进行配置管理,Ansible部署我们的自定义应用程序,这些应用程序是从我们的构建过程中生成的tarball,Foreman可以处理整个过程的触发和管理,而Katello可以做一些基础工作图像管理。发布将涉及Puppet根据需要更改配置,并通过一定数量的Foreman协调来部署更新的组件。如果我们需要新服务器,则将可以相当快地构建服务器,但目的不是使它们成为一次性使用的标准流程。尽管使用寿命长,但它更接近phoenix服务器模型。 因此,我的问题确实归结为:具有以上所述工具的不可变服务器模型实际上看起来像是现实的吗?我喜欢这样的想法,即我们的登台过程实际上可以实时构建应用程序的完整克隆,让质量检查人员锤打它,然后只需翻转数据库存储和一些DNS设置即可使其生效。 还是不变的服务器模型实际上会失败?我们在AWS和云环境方面都有丰富的经验,因此这并不是真正的问题-而是如何可靠地部署合理复杂的应用程序。由于我们经常发布,因此这特别有趣。 除了实际为我们创建EC2服务器外,Ansible可以完成大多数所需的工作,这并不难。我无法理解为什么您实际上完全需要这个模型中的Puppet / Foreman / Katello。在我所知道的任何工具中,Docker都比自定义部署脚本更加整洁和简单。当您不再担心必须就地配置它们并使用新配置再次构建它们时,Ansible似乎比Puppet使用起来简单得多。我是KISS负责人的粉丝-特别是在墨菲定律猖ramp的自动化领域。机械越少,IMO越好。 关于此方法的任何想法/意见或建议将不胜感激!

3
为什么docker-machine重新启动时会清除数据?
我在OSX上使用Docker Toolbox。 我创建了一个用于存储持久性数据的数据卷容器:https : //docs.docker.com/userguide/dockervolumes/#creating-and-mounting-a-data-volume-container。 我检查了这些数据确实存储在boot2docker VM(由docker-machine创建)上,而不是存储在容器上,以便将其持久化。但是,“ docker-machine restart”会清除虚拟机上的此自定义数据。 我找不到正在发生的事情的文档。我发现有一个论坛帖子提到/ var / lib / docker中的数据将被保留,但我找不到任何官方文档说明这一点,考虑到上述持久性存储指南未使用此路径,甚至提到该信息,这似乎也很奇怪。您的数据将被删除。 这是预期的吗?如果是这样,那么在存储持久数据的正确路径上是否有任何官方文档? 编辑:添加失败的senario示例 $ docker-machine ssh alt docker@alt:~$ docker run -v /data:/var/lib/mysql --name mydata busybox sh -c "echo 'hello' > /var/lib/mysql/hello" docker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello" hello docker@alt:~$ exit $ …

2
无法通过RUN从Dockerfile写入/ etc / hosts文件
我正在使用一个非常简单的Dockerfile制作Docker映像。在Dockerfile内部,我有以下命令: RUN printf "192.92.13.243 www.hahaha.com \n" >> /etc/hosts 该命令本身似乎还可以,因为此时映像的创建尚未停止。 问题是这样的:运行映像时,应该在“ / etc / hosts”中插入的行不存在。 现在,我到处搜索,发现在Docker 1.2版之前,容器内部的hosts文件存在问题。就我而言,我使用的是当前的最新版本1.5。 我想念什么吗? 更新1: 在docker的github页面中,无论是打开还是关闭,似乎都有很多问题。

2
为什么Jenkins用户没有访问Docker unix套接字的权限?
我已将该jenkins用户添加到docker组中,认为这将允许Jenkins作业运行Docker命令。如果我切换到jenkins用户,则可以验证它是否可以(手动): ubuntu@hostname:~$ ps aux | grep java jenkins 2210 9.5 7.5 1950316 292896 ? Sl 00:01 1:00 /usr/bin/java -jar /data/jenkins/jenkins-1.586.war --httpPort=8080 -Xloggc:/var/log/jenkins/gc.log ubuntu@hostname:~$ getent group docker docker:x:999:jenkins ubuntu@hostname:~$ ls -la /var/run/docker.* -rw-r--r-- 1 root root 4 Oct 23 18:32 /var/run/docker.pid srw-rw---- 1 root docker 0 Oct 23 18:32 /var/run/docker.sock ubuntu@hostname:~$ …

3
如何防止在Docker容器中附加或执行
如何阻止我的预构建Docker容器的用户访问该容器正在运行的实例中的Shell?我已经在Google上搜索并阅读了与该场景相关的所有帖子,但都没有有效的解决方案。为了进行查询,我试图阻止访问容器中的给定资源,比方说它在配置文件中的序列号。我建立在基于ubuntu图像的java:7图像上。 要测试您的解决方案,请执行以下操作: 创建并运行您的Docker容器 导出容器 docker export [容器名称] | gzip -c> mycontainer.tar.gz 在外部系统上导入容器 gzip -dc mycontainer.tar.gz | docker import-[容器名称] 运行容器 使用以下任何/所有方法将其装入运行中的容器: docker exec -it [容器名称] bash 泊坞窗附加[容器名称] docker run -ti --entrypoint = / bin / bash [容器名称] [容器名称]是您的容器的名称 bash,dash和sh都是有效的shell
9 docker 

4
网络名称空间中的iptables LOG规则
我正在尝试为Docker容器设置iptables规则。我正在使用nsenter在容器的网络名称空间内执行iptables命令: # log access to port 8080 PID=$(docker inspect --format "{{.State.Pid}}" $ID) /home/ubuntu/nsenter -n -t $PID iptables -A OUTPUT -o eth0 -p tcp -m tcp --dport 8080 -j LOG 除LOG规则外,此方法非常有效。那些似乎不在任何地方记录。请注意,适用于主机系统的相同规则适用并登录到/var/log/kern.log。 在哪里可以找到这些日志规则的输出?这是网络名称空间的已知问题/限制吗?

4
Ecs服务不会更新任务定义
在ecs集群中,我有一个运行有2个ec2实例的服务。然后我更新任务定义以获取新的docker映像。但是,即使有新的任务定义,旧的任务定义仍在运行。 我已使用以下命令来更新任务定义和服务。 aws ecs register-task-definition --family service90-task --cli-input-json file://service90-task.json aws ecs update-service --cluster service90-cluster --service service90-service --desired-count 0 TASK_REVISION=`aws ecs describe-task-definition --task-definition service90-task | egrep "revision" | tr "/" " " | awk '{print $2}' | sed 's/"$//'` aws ecs update-service --cluster service90-cluster --service service90-service --task-definition service90-task:${TASK_REVISION} --desired-count 2 我尝试了几次,但无法弄清楚哪里出了问题。我想让ecs服务运行新的任务定义而不是旧的任务定义。

1
UFW为什么不阻止使用docker公开的端口?
我在ufw上设置了一些规则,但我认为它没有阻止任何内容。这是它的当前状态: ~# ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), deny (routed) New profiles: skip To Action From -- ------ ---- 22 ALLOW IN Anywhere 80 ALLOW IN Anywhere 27015:27115/udp ALLOW IN Anywhere 27015:27115/tcp ALLOW IN Anywhere 22 (v6) ALLOW IN Anywhere (v6) 80 (v6) …
8 firewall  docker  ufw 

2
带有数据的PostgreSQL容器化的分布式文件系统
我很好奇,是否有人在某种形式的分布式文件系统(最好是GlusterFS)上的生产容器中运行PostgreSQL。 我目前正在运行Mesos / Marathon。万一PostgreSQL节点发生故障,Marathon只需在其他节点上启动PostgreSQL的另一个实例,并且如果操作正确(服务发现和应用程序从数据库连接丢失中恢复),将实现最终的容错能力。 我知道PostgreSQL有自己的HA解决方案,例如日志传送和热备用备份,但是仍然需要解决何时从主服务器切换到从服务器,如何正确执行操作等问题。 那么,如何在GlusterFS或类似产品上的生产环境中运行PostgreSQL?如果可以,是否稳定?性能如何?

2
在Docker的官方Wordpress容器中使用Let's Encrypt
我试图让咱们加密内正式泊坞WordPress的容器。 设置环境 $ cat docker-compose.yml wordpress: hostname: some.fqdn.com image: wordpress links: - db:mysql ports: - 80:80 - 443:443 db: image: mariadb environment: MYSQL_ROOT_PASSWORD: example $ docker-compose -f docker-compose.yml up -d $ docker exec -ti root_wordpress_1 bash 安装让我们加密 $ apt-get update && apt-get install -y git-core [...] $ cd /usr/local $ …

2
通过curl安装时卸载Docker
我已经使用以下命令在我的debian 7服务器上安装了docker un: sudo curl -sSL https://get.docker.com/ | sh 我现在想删除docker,究竟该如何卸载?
8 debian  docker 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.