所以我在Docker容器中运行了一个Nginx,我在localhost上运行了一个mysql,我想从我的Nginx中连接到MySql.MySql在localhost上运行,而不是将端口暴露给外部世界,所以它绑定在localhost上,而不是绑定在机器的ip地址上.
有没有办法从这个docker容器中连接到这个MySql或localhost上的任何其他程序?
所以我有3个端口应该暴露在机器的界面上.是否可以使用Docker容器执行此操作?
主机中的容器"突然"失去与外部世界容器的连接.然而,一些主机被刷新,突然我们遇到以下情况:
这是一个例子:
[root@pprdespap322 deploy]# ping ci.docker.company.net
PING pprdespap324.corp.company.net (10.137.55.22) 56(84) bytes of data.
64 bytes from pprdespap324.corp.company.net (10.137.55.22): icmp_seq=1 ttl=64 time=0.282 ms
64 bytes from pprdespap324.corp.company.net (10.137.55.22): icmp_seq=2 ttl=64 time=0.341 ms
^C
--- pprdespap324.corp.company.net ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.282/0.311/0.341/0.034 ms
Run Code Online (Sandbox Code Playgroud)
现在,从容器本身,我们无法ping同一主机:
[root@pprdespap322 deploy]# docker run -ti quay.io/coreos/registry ping ci.docker.company.net
WARNING: IPv4 forwarding is disabled. Networking will not work.
ping: unknown host ci.docker.company.net
Run Code Online (Sandbox Code Playgroud)
我第一次看到这个警告是在Docker的初始版本中......拥有Docker 1.9.1和1.10.3,如何解决这个问题?
我最近开始迁移到Docker 1.9和Docker-Compose 1.5的网络功能,以替换使用链接.
到目前为止链接没有问题nginx通过docker-compose连接到位于一组不同服务器中的php5-fpm fastcgi服务器.最近,当我运行docker-compose --x-networking up我的php-fpm时,mongo和nginx容器启动,但nginx立即退出[emerg] 1#1: host not found in upstream "waapi_php_1" in /etc/nginx/conf.d/default.conf:16
但是,如果我在php和mongo容器运行时再次运行docker-compose命令(nginx退出),nginx启动并从那时起正常工作.
这是我的docker-compose.yml档案:
nginx:
image: nginx
ports:
- "42080:80"
volumes:
- ./config/docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
php:
build: config/docker/php
ports:
- "42022:22"
volumes:
- .:/var/www/html
env_file: config/docker/php/.env.development
mongo:
image: mongo
ports:
- "42017:27017"
volumes:
- /var/mongodata/wa-api:/data/db
command: --smallfiles
Run Code Online (Sandbox Code Playgroud)
这是我default.conf的nginx:
server {
listen 80;
root /var/www/test;
error_log /dev/stdout debug;
access_log /dev/stdout;
location / {
# try to serve file directly, fallback to app.php …Run Code Online (Sandbox Code Playgroud) 我是Docker的初学者.我找不到任何关于此选项在docker run命令中做什么的明确描述,并且对它有点困惑.
我们可以使用它来访问在docker容器上运行的应用程序而无需指定端口吗?举个例子,如果我使用-p 8080:8080docker run命令中的选项运行通过端口8080中的docker镜像部署的webapp ,我知道我将不得不在Docker容器ip/theWebAppName上的8080端口上访问它.但我真的想不出--net=host选项如何运作的方式.
我最近安装了隐私vpn,事实证明启用openvpn打破了docker.
当我尝试运行时,docker-compose up我得到以下错误
ERROR: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
Run Code Online (Sandbox Code Playgroud)
禁用vpn可以解决问题(但我不想禁用它).有没有办法让这两个和平共处?我使用debian jessie,我的openvpn有以下版本字符串
OpenVPN 2.3.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Jun 26 2017
Run Code Online (Sandbox Code Playgroud)
很多人通过禁用openvpn"解决"了这个问题,所以我特别要求如何让这两个工作同时工作.
参考文献:
如果这有什么不同,我的VPN提供商是:https://www.ovpn.com/,这里是(有些编辑)配置文件:
client
dev tun
proto udp
remote host port
remote-random
mute-replay-warnings
replay-window 256
push "dhcp-option DNS 46.227.67.134"
push "dhcp-option DNS 192.165.9.158"
remote-cert-tls server
cipher aes-256-cbc
pull
nobind
reneg-sec 432000
resolv-retry infinite
comp-lzo …Run Code Online (Sandbox Code Playgroud) 我正在学习码头工人.我看到这两个词让我感到困惑.例如,这里是一个定义了两个服务redis和的docker-compose web-app.
services:
redis:
container_name: redis
image: redis:latest
ports:
- "6379:6379"
networks:
- lognet
app:
container_name: web-app
build:
context: .
dockerfile: Dockerfile
ports:
- "3000:3000"
volumes:
- ".:/webapp"
links:
- redis
networks:
- lognet
networks:
lognet:
driver: bridge
Run Code Online (Sandbox Code Playgroud)
此docker-compose文件定义名为lognet的网桥,所有服务都将连接到此网络.据我了解,此操作使这些服务可以看到其他人.那么为什么app服务仍然需要在上面的情况下链接到redis服务.
谢谢
使用1.9,有没有办法直接用两个或多个网络接口启动容器?
您可以在使用"docker network connect"启动容器后执行此操作,但这意味着该进程已在运行,可能会错过新进程的创建.
我有Docker版本1.10与嵌入式DNS服务.
我在docker-compose文件中创建了两个服务容器.它们可以通过主机名和IP相互访问,但是当我想从主机到达其中一个时,它不起作用,它只适用于IP但不适用于主机名.
那么,是否可以通过Docker 1.10中的主机名从主机访问docker容器,好吗?
更新:
泊坞窗,compose.yml
version: '2'
services:
service_a:
image: nginx
container_name: docker_a
ports:
- 8080:80
service_b:
image: nginx
container_name: docker_b
ports:
- 8081:80
Run Code Online (Sandbox Code Playgroud)
然后我按命令启动它: docker-compose up --force-recreate
当我跑:
docker exec -i -t docker_a ping -c4 docker_b - 有用docker exec -i -t docker_b ping -c4 docker_a - 有用ping 172.19.0.2- 它的工作原理(172.19.0.2是docker_b的)ping docker_a- 失败了结果docker network inspect test_default是
[
{
"Name": "test_default",
"Id": "f6436ef4a2cd4c09ffdee82b0d0b47f96dd5aee3e1bde068376dd26f81e79712",
"Scope": "local",
"Driver": "bridge",
"IPAM": { …Run Code Online (Sandbox Code Playgroud) 我无法通过docker-compose容器访问外部网络.
考虑以下docker-compose文件:
version: '2'
services:
nginx:
image: nginx
Run Code Online (Sandbox Code Playgroud)
使用简单的docker run -it nginx bash我设法到达外部IP或Internet IP(ping www.google.com).
另一方面,如果我使用docker-compose并附加到容器,我无法访问外部IP地址/ DNS.
码头信息:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 1
Server Version: 1.12.1
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 7
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge null host overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: apparmor seccomp
Kernel Version: 4.4.0-38-generic
Operating System: Ubuntu …Run Code Online (Sandbox Code Playgroud)