Articles of Docker

为什么ecs集群不重新启动任务定义的最新版本的任务?

我最初定义了一个名为GoogleDriveAPI-prod:1的任务GoogleDriveAPI-prod:1 。 它具有2048的内存硬限制。集群只有t2.medium机器的一个实例。 即使我将所需的任务数量设置为2, ecs只能启动1,因为RAM要求不满足。 但我真的想要运行2个任务。 我将任务的内存硬限制修改为1536.而任务定义已经变成了GoogleDriveAPI-prod:3 更新后会产生一个新任务('f510e1cc-c459-4247-8d3b-59d78106ece7')。 但是,实际上,在更新服务以使用任务定义版本GoogleDriveAPI-prod:3之后,我预计会看到GoogleDriveAPI-prod:3两个任务。但是,您可以在附加的屏幕截图中看到,原始任务未重新启动,并保留任务定义版本1。 我的问题: 当任务定义改变时,ecs如何决定重新生成一个任务? 在这种情况下,只要没有改变Docker镜像的url,ecs就不会重新生成活动任务。 编辑 所以要部署新的容器,我不得不手动杀死两个旧的任务。 ecs开始产卵新的容器 这似乎是主要的原因ECS不能杀死旧的容器,因为现有的服务器不能支持运行所有新的容器进程。 那么这是否意味着我需要有多余的产能来平稳过渡?

docker里面的iptables – conntrack不起作用

我试图在Docker容器(基于Centos 7的镜像)中设置iptables规则,连接跟踪不起作用。 # iptables -S INPUT -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT -A INPUT -j DROP 当我build立一个出站连接时,它会在conntrack表中创build一个条目,但是激活的数据包与该条目不匹配,因此被iptables的最后一条规则丢弃。 # wget -O /dev/null https://example.com (……) # conntrack -E -d 1.2.3.4 [NEW] tcp 6 120 SYN_SENT src=1.1.1.1 dst=1.2.3.4 sport=49696 dport=443 [UNREPLIED] src=1.2.3.4 dst=1.1.1.1 sport=443 dport=49696 [DESTROY] tcp 6 src=1.1.1.1 dst=1.2.3.4 sport=49696 dport=443 [UNREPLIED] src=1.2.3.4 dst=1.1.1.1 sport=443 […]

无法以守护进程模式启动泊坞窗容器

这是我的docker文件: FROM ubuntu:16.04 RUN apt-get update –fix-missing && apt-get install -y emacs npm git nodejs RUN rm -rf .emacs .emacs.d RUN git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d RUN ln -s /usr/bin/nodejs /usr/bin/node RUN npm install && npm install -g yarn 我试图在守护进程模式下启动它,以便稍后可以附加到进程 docker run -d spacemacs bash 但它没有留下居民 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d4f867eb78f1 spacemacs […]

与同一networking上的其他机器共享一个openvpn客户机实例

我在我的主服务器上安装了一个docker容器和openvpn客户端。 它连接到ipvanish,我可以使用–network container:ipvanish连接其他docker集装箱–network container:ipvanish使这些容器的所有stream量通过VPN连接。 这很好。 但是,我想将同一networking上的其他设备(不使用docker)连接到同一个vpn容器,通过ipvanish路由stream量。 我设置容器使用macvlan驱动程序,所以我的路由器可以看到在192.168.1.2的vpn容器,我可以从任何设备在同一个子网上ping它。 我不确定最好的方法去做这件事。 我可以使用http或socks代理轻松完成此操作,还是必须创build隧道到vpn容器? openvpn提供了一种方法来处理这个问题吗? 我需要一点指导。 Docker镜像 FROM alpine:3.6 ENTRYPOINT ["openvpn"] VOLUME ["/config"] RUN apk add –no-cache openvpn Docker构build docker build –no-cache -t openvpn . docker集装箱 CONFIG=ipvanish-US-New-York-nyc-a01 sudo rm /appdata/ipvanish/configs/${CONFIG}.conf sudo cp /appdata/ipvanish/configs/${CONFIG}.ovpn /appdata/ipvanish/configs/${CONFIG}.conf sudo chown nobody:users /appdata/ipvanish/configs/${CONFIG}.conf sudo sed -i -e "s#ca ca.ipvanish.com.crt#ca /config/configs/ca.ipvanish.com.crt#g" /appdata/ipvanish/configs/${CONFIG}.conf sudo sed -i -e […]

奇怪的行为与Docker伪装规则

我们正在经历间歇性的阶段,来自一个特定的Docker容器的stream量不正确的NAT,并到达我们的互联网网关与docker的内部地址。 以下是显示火星包的网关dmesg的摘录: [Fri Sep 1 11:18:21 2017] martian source 108.177.119.138 from 172.17.0.7, on dev vlan10 [Fri Sep 1 11:18:21 2017] ll header: xx:xx:xx:02:98:41:xx:xx:xx:6b:d5:e3:08:00 [Fri Sep 1 11:18:21 2017] martian source 108.177.119.138 from 172.17.0.7, on dev vlan10 [Fri Sep 1 11:18:21 2017] ll header: xx:xx:xx:02:98:41:xx:xx:xx:6b:d5:e3:08:00 [Fri Sep 1 11:18:37 2017] net_ratelimit: 118 callbacks suppressed Docker主机上的相关规则如下所示: ansible@moby:~$ […]

postgresql不绑定到docker组成的IP

我正在尝试使用docker-compose运行一个postgresql9.5容器(docker 17.06,compose 1.16 compose-file v2): postgis: build: context: ./postgis environment: ALLOW_IP_RANGE: "0.0.0.0/0" healthcheck: test: ["CMD", "nc", "-zv", "localhost", "5432"] interval: 30s timeout: 10s retries: 5 container_name: postgis networks: vpcbr: ipv4_address: 10.10.10.3 我正在使用桥接networking来构build组合 postgresql设置可以在这里find https://github.com/kartoza/docker-postgis 有一个start.sh脚本和set-postgis.sh,那些修改过的pg_hba.conf使用0.0.0.0(接受一切) host all all 0.0.0.0/0 md5 我的postgresql.conf正在监听所有的IP: listen_addresses = '*' 我试图将listen_address设置为10.10.10.3甚至0.0.0.0(?),但似乎没有任何工作,postgresql不会bing到组成的IP,postgresql 只能在本地主机 有什么我可以忽略?

如何从composer开始debuggingDocker容器初始化?

作为Docker的初学者,我问这个问题:“ 如何在docker容器启动时debugging/显示日志和输出 ”,除了我需要为docker-compose启动的docker容器做这个。 容器一遍又一遍地重新启动,所以任何尝试将容器日志ID从docker events到docker logs都是徒劳的(自服务重新启动以来每隔5-10秒更改一次)。

启动并运行Docker EE

我刚刚在Windows 2016服务器上安装了Docker EE。 (按照https://docs.docker.com/engine/installation/windows/docker-ee/上的说明 ),并拉动卷工作和运行容器一直很好。 但感觉有限。 以前我一直在使用基于Virtualbox的系统在我的Windows 10 PC上使用Docker。 所以我习惯于使用Docker-Machine,SSH和Docker-Compose。 这些可用于Docker EE,还是应该以不同的方式工作? 我也无法pipe理卷,因为“docker volume ls”什么也找不到,尽pipe系统中有很多卷。 这感觉就像它是一个有限的安装。 我应该安装更多? 或者安装Docker for Windows产品而不是/并行? 任何基本的技巧,欢迎。

如何从包含卷数据的docker创build映像?

考虑一个声明两个卷的Dockerfile FROM someimage # … VOLUME ["/foo", "/bar"] 以及从该映像启动的容器,它为这些卷之一执行绑定安装: docker run –name mycontainer -d -v /some/path:/foo myimage 如果我使用该容器创build一个新的图像 docker commit mycontainer myexportedimage 这两个path, /foo和/bar ,将被排除在导出的图像。 如何从mycontainer创build一个包含来自两个path/foo (绑定挂载)和/bar (由Dockerfile声明的卷)的数据的runnable(即从Dockerfile维护元数据)图像,所以如果我将图像导出到另一个Docker主机,所有的数据都会出现?

在nginx中有条件地使用基本身份validation

我有一个内置于Docker镜像中的NGINX服务器,我想在生产和临时环境中使用它。 问题在于,分段环境需要启用基本身份validation才能保护服务器免受窥探。 有没有办法将基本身份validationdynamic应用到nginx服务器? 我可以将环境variables传递给nginx,或者我可以使用预定义的静态主机名来区分生产和部署。 不过,我不确定如何在nginx中有条件地使用这些数据。 这是我的configuration到目前为止: server { listen 80 default_server; # IF: %ENVIRONMENT% = 'staging' OR # IF: $host = 'example.com' auth_basic "global"; auth_basic_user_file /etc/nginx/.htpasswd; # root /var/www; location /health-check { auth_basic off; try_files /health-check.html =404; } location / { try_files $uri $uri/ /index.html; } } 任何build议将不胜感激。