Tag: 端口

在Docker容器中使用iptables进行端口转发

我正在一个容器上运行两个服务(A&B)。 一个服务嘲笑另一个服务所需的依赖。 服务A是一个黑匣子,并致电IP 169.254.169.254。 我想要使​​用iptables将该呼叫转发到服务B. 我开始这样的容器,所以它可以有自己的iptables, docker run -it –cap-add=NET_ADMIN –sysctl net.ipv4.conf.eth0.route_localnet=1 <name> bash 一旦在bash中,我configurationiptables转发呼叫, iptables -t nat -I PREROUTING -p tcp -d 169.254.169.254 –dport 80 -j DNAT –to-destination "127.0.0.1:8099" -i eth0 但是这个调用不会被路由到127.0.0.1。 如果在Ubuntu Xenial虚拟机中完成同样的步骤,

sshdocker集装箱从外面

我有一个docker-compose.yml文件,包含两个节点。 我已经安装ssh通过命令RUN apt-get install -y ssh和暴露的端口22为ssh (在这里讨论)在两个: version: "2" services: nodex: build: context: . dockerfile: Dockerfile-X args: – MY_USER – MY_PASS environment: – MY_DNS=${MY_DNS} – MY_HOME=${MY_HOME} env_file: – .env – envs/nodex/nodex1.env ports: – "${NODE_X_TOMCAT_PORT}:${NODE_X_TOMCAT_PORT}" – "4040:22" networks: zizi_network: ipv4_address: ${NODE_X_IP} nodey: build: context: . dockerfile: Dockerfile-Y environment: – MY_DNS=${MY_DNS} – MY_HOME=${MY_HOME} env_file: – .env – […]

为什么容易将docker守护进程绑定到0.0.0.0?

最近我在我的docker gitlab CI容器中出现错误: 无法连接到Docker守护进程。 docker守护程序是否在这个主机上运行? 我发现这个线程在一个职位的build议 : sudo service docker stop && sudo nohup docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock & 最终我在我的服务器主机上发现了一个滥用警告,那就是我的机器在端口2375上进行了端口扫描 我发现一个https://hub.docker.com/r/kannix/monero-miner/的实例杀死了它十次,最终重新启动,并且从那以后还没有返回。 这个网站表明有一个: Cisco CloudCenter Orchestrator(CCO;以前称为CliQr)的Docker Engineconfiguration中的漏洞可能允许未经身份validation的远程攻击者在受影响的系统上安装具有高权限的Docker容器。 受影响的产品:此漏洞影响Docker Engine TCP端口2375在系统上打开且绑定到本地地址0.0.0.0(任何接口)的所有Cisco CloudCenter Orchestrator(CCO)部署版本。 所以我的问题是:以上的方式(绑定到tcp://0.0.0.0:2375)启动docker守护进程本质上是脆弱的(如果是这样,为什么?)还是在docker中的错误?

如何在Docker第3部分教程中使用curl -4 http:// localhost?

使用Docker教程我被困在这个部分: https : //docs.docker.com/get-started/part3/#run-your-new-load-balanced-app 我使用curl -4 http://localhost但我得到一个curl: (7) Failed to connect to localhost port 80: Connection refused错误。 上一步的输出: docker service ps getstartedlab_web ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS kqu5qggifnlm getstartedlab_web.1 s1mpl3/get-started:part2 moby Running Running 29 minutes ago prhrmm6hpop3 getstartedlab_web.2 s1mpl3/get-started:part2 moby Running Running 29 minutes ago ytrwy5gxp2rk getstartedlab_web.3 s1mpl3/get-started:part2 moby Running […]

Nginx的docker容器将不会代理Web应用程序容器

我有一个Docker容器,运行一个Web应用程序和一个运行Nginx的docker容器:ubuntu。 Web应用程序容器运行在端口:3000上,暴露于外部(浏览器连接到主机的端口:3000端口访问应用程序) Nginx容器运行在80端口,可以通过浏览器连接到主机的ip访问 Nginx容器和Web应用都连接到相同的Docker网桥。 我可以在它的内部IP(172.21.0.2)上docker exec -it(nginx)bash和ping(web-app),反之亦然。 我也可以从两个容器外使用nmap,看到(nginx)的内部IP为80开放端口,应用程序的开放端口为3000。 什么不坏: Nginx安装正确,但可能configuration不正确。 networking应用程序很实用,不幸的是无法重新configuration以适应Nginx。 我曾经尝试过: 通过docker-compose.yml,dockerfile,一个空容器> bash和手动apt-get安装nginx来安装nginx。 由于应用程序图像的细节(图像实际上是一个node.js容器并具有应用程序的子服务),因此我不能在一个docker-compose文件中包含Web应用程序和nginx(并修复networking问题)试图在一个docker-compose.yml中包含这两个服务只是导致撰写创buildnginx和一个无应用程序的node.js容器。 我想做什么: 仅通过dockerfile和docker run命令创build一个nginx容器(以支持可伸缩性),通过它们都连接的dockernetworking来代理已经运行的应用容器。 我希望nginx能够在80端口上收听,并把它发送到3000端口的容器。我感到困惑的是: 在nginx.conf文件中,是否将其路由到容器的内部IP为172.21.0.2:3000,(hostIP):3000,Localhost:3000或0.0.0.0:3000? 我的文件如下: Dockerfile: FROM xqdocker/ubuntu-nginx COPY nginx.conf /etc/nginx/nginx.conf ##.confd IS LOCAL TO DOCKERFILE nginx.conf: worker_processes 1; events { worker_connections 1024; } http { sendfile on; upstream docker-nginx { server 172.21.0.2:3000; #WHAT DO I PUT HERE?? } […]

Docker端口80:80 127.0.0.1

我有一个巨大的问题,我无法绕过它 基本上我通过Laravel安装,并安装了宅基地7和即时通讯使用虚拟的盒子…stream浪汉 在此之前,我使用docker运行其他应用程序通过它…工作,它看起来像我所做的一切是使用相同的端口,所以我现在不能使用docker在该端口 无法启动服务网站:驱动程序无法在端点上编程外部连接distinctly_website_1(edc81f653cb3ac8c2af9b7ce070d0a0ccbb3ec255af452338ff4677ce99b156a):启动userland代理时出错:绑定0.0.0.0:80:意外错误(失败EADDRINUSE)错误:启动项目时遇到错误。 我只需要一些帮助,以消除与端口的冲突,所以我可以运行我的docker应用程序。 我不在乎什么比docker工人

在不同的端口上运行不同的docker nginx容器

好吧,我有简单的docker集,这是默认configuration做得很好。 这是我docker-compose.yml : version: '3.1' services: mysql: image: mysql ports: – ${MYSQL_PORT}:3306 environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASS} MYSQL_DATABASE: ${MYSQL_DB} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASS} volumes: – mysql_data:/var/lib/mysql php: image: some_repo/php:latest volumes: – .:/var/www/html nginx: image: some_repo/nginx:latest ports: – ${NGINX_PORT}:80 links: – php volumes: – ./docker/vhost/:/etc/nginx/sites-available – .:/var/www/html volumes: mysql_data: 在其他文件中,我有所有variables的值 – 例如更改mysql的端口效果很好。 这是我的vhost : server { server_name test.dev; […]

使用-p或-P标志运行Docker容器会导致失败

我最近开始把我的简单的博客应用程序移动到docker集装箱。 我创build了自己的dockerfile并成功构build了映像,并且运行webapp时没有问题,但是如果向运行命令添加-P或-p 8080:8080标记,则会失败,并显示以下错误: mathew@mathew-laptop:goblog:-> docker run -it -P chasinglogic/test FATA[0002] Error response from daemon: Cannot start container 0042e27ea10942b4b394b7179d8dc43e3996e28c773d400672fd2333833659ad: (exit status 1) 我有CMD设置为自动运行我的可执行文件,并在我的Dockerfile中有EXPOSE 8080。 我原本以为这一定是我的webapp不喜欢docker的端口转发或与我的Dockerfile的问题,所以我去了Docker教程和testing与培训/ Web应用程序的图像,并得到了同样的错误: mathew@mathew-laptop:goblog:-> sudo docker run -d -P training/webapp python app.py [sudo] password for mathew: Unable to find image 'training/webapp:latest' locally Pulling repository training/webapp 31fa814ba25a: Download complete 511136ea3c5a: Download complete f10ebce2c0e1: Download […]

是否有可能设置一个不同的主机端口在Docker容器的暴露端口?

是否有可能设置一个不同的主机端口在Docker容器的暴露端口? 例如docker run -name some_container -p 80:8080 -i -t some_img如果是,是-p host:container还是-p container:host ? 我已经浏览了文档,并没有find任何关于docker run发布选项的例子和细节。 另外,我不想使用与容器相同的端口,因为这是Kubernete的API服务器正在侦听的地方。

使用Docker将发布的端口限制在特定的容器中

我有两个Docker镜像: 一个tomcat图像,暴露端口8080 一个mysql映像,暴露端口3306 我使用这些图像运行两个容器,将mysql与tomcat链接起来: docker run -itd -p 3306:3306 –name mysql mysql docker run -itd -p 8080:8080 –link mysql:mysql –name tomcat tomcat 当我这样做时,与MySQL的tomcat通信工作正常,我的tomcat和mysql容器可以在服务器主机上分别在端口8080和3306上。 现在我想要在服务器主机上closures3306端口,并且只能用于tomcat容器。 我怎样才能做到这一点?