我像这样启动了一个MongoDB容器:
docker run -d -p 27017:27017 --net=cdt-net --name cdt-mongo mongo
Run Code Online (Sandbox Code Playgroud)
我看到我的MongoDB容器已退出:
0e35cf68a29c mongo "docker-entrypoint.s…" Less than a second ago Exited (1) 3 seconds ago cdt-mongo
Run Code Online (Sandbox Code Playgroud)
我检查了Docker日志,我看到:
$ docker logs 0e35cf68a29c
about to fork child process, waiting until server is ready for connections.
forked process: 21
2018-01-12T23:42:03.413+0000 I CONTROL [main] ***** SERVER RESTARTED *****
2018-01-12T23:42:03.417+0000 I CONTROL [main] ERROR: Cannot write pid file to /tmp/tmp.aLmNg7ilAm: No space left on device
ERROR: child process failed, exited with error number 1
Run Code Online (Sandbox Code Playgroud)
有谁知道这个错误是什么?容器中没有足够的空间?
mongodb docker docker-networking docker-container docker-network
请注意,这与如何公开在 docker 容器内运行的服务(绑定到 localhost )不同,后者可以在 Docker for Linux 中以多种方式解决,比如通过--net host甚至-v绑定我的 Linux 风格的客户端等。我的问题是特定的对于 Mac 版 Docker,所以事情没那么简单。
I have a TCP server binding to localhost:5005 running inside Docker for Mac. (For security reason, I must not bind to 0.0.0.0:5005.)
I have a TCP client sending request to this server from my Mac (not inside the docker container).
My question is, how do I make it work?
In Linux Docker, I would simply use --net=host so the …
我有一个用 Go 编写的 Web 服务器,可以与 Rabbitmq 和 Mongodb 交互。当我在没有容器的机器上运行所有这些服务器时(rabbitmq url:),amqp://guest:guest@localhost:5672它工作正常。
现在我尝试在单独的容器中运行所有这些服务。这是我的撰写文件
version: '3'
services:
rabbitmq:
image: rabbitmq
container_name: rabbitmq
ports:
- 5672:5672
mongodb:
image: mongo
container_name: mongodb
ports:
- 27017:27017
web:
build: .
image: palash2504/collect
container_name: collect-server
restart: on-failure
ports:
- 3000:3000
depends_on:
- rabbitmq
- mongodb
links: ["rabbitmq", "mongodb"]
networks:
default:
external:
name: collect-net
Run Code Online (Sandbox Code Playgroud)
这是我的服务器 dockerfile
FROM golang
ENV GO111MODULE=on
WORKDIR /app
COPY go.mod .
COPY go.sum .
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 …Run Code Online (Sandbox Code Playgroud) 我正在Nginx使用docker-compose版本创建一个容器3.7
我正在尝试指定ipam属性。但是当我阅读以下官方参考资料时:https :
//docs.docker.com/compose/compose-file/#network-configuration-reference
有一个注释,我知道gateway只能在 version 下指定2。
注意:其他 IPAM 配置(例如网关)目前仅适用于版本 2。
所以我尝试不指定gatewayunderipam属性。我的容器仍然可以创建和运行。
然后我去检查docker-network设置。经过我检查和观察,没有指定gateway。但我Nginx's access.log仍然显示来自172.19.100.1我认为它是gateway.
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.19.100.0/24"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想知道并澄清的是,在 version 下3.7,是否有任何方法可以指定gateway内部docker-compose文件,或者如果无法指定,默认值是什么?
另外,是否应该建议docker-compose在 version 下编写2而不是在3?
我已经安装了 18.04 ubuntu docker 映像,并在其中安装了以下软件包:
apt-get install traceroute
apt-get install net-tools
apt-get install iputils-ping
apt-get install netbase
Run Code Online (Sandbox Code Playgroud)
但是当我使用traceroute时,docker之外的所有数据包似乎都被过滤了:
#traceroute google.com
traceroute to google.com (172.217.16.206), 30 hops max, 60 byte packets
1 172.17.0.1 (172.17.0.1) 0.397 ms 0.309 ms 0.286 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
Run Code Online (Sandbox Code Playgroud)
有没有解决方法可以使其发挥作用?请注意,在 Windows 主机中,tracert 可以工作。
在我们的开发环境中,我们使用 docker-compose 文件管理 20 多个容器,但有时其中一个容器从我们的网络获取一个 IP,导致我们失去连接。发生这种情况时,我们手动关闭容器和网络。
当我们添加更多容器时,有没有办法配置 docker 以避免使用特定的 IP 地址或子网?
我们的 Docker 版本是:
Client: Docker Engine - Community
Version: 19.03.12
API version: 1.40
Go version: go1.13.10
Git commit: 48a66213fe
Built: Mon Jun 22 15:45:36 2020
OS/Arch: linux/amd64
Experimental: false
Run Code Online (Sandbox Code Playgroud)
我们的 docker-compose 版本是:
docker-compose version 1.25.4, build 8d51620a
docker-py version: 4.1.0
CPython version: 3.7.5
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
Run Code Online (Sandbox Code Playgroud)
主机操作系统是:
Linux lin_env_int_2 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux(Ubuntu 18.04.4 LTS)
我有一个 docker-compose 工作负载,允许发出一些外部网络请求,但不应连接到允许列表之外的域。
有没有好的办法
tcpdump 看起来可以记录我的容器尝试连接的 ipaddrs,但对于主机名而言,它依赖于不明确的反向域名查找;我们可以记录 DNS 查找吗?tcpdump 也不让我阻止非白名单域。
我正在尝试在 docker 容器内使用雪花连接器。我想使用externalbrowser身份验证器,以便可以使用 Okta 凭据进行连接,但连接器失败并出现下面提到的错误。
DatabaseError: (snowflake.connector.errors.DatabaseError) 250008 (08001): None: 无法连接到 DB: xx.snowflakecomputing.com:443,无法在此环境中打开浏览器。(此错误的背景位于:http ://sqlalche.me/e/13/4xp6 )
python-webbrowser docker snowflake-cloud-data-platform docker-network
我的容器应用程序想要从主机访问 Mysql,但无法连接。我用谷歌搜索了很多并尝试了很多解决方案,但无法找出错误,你能帮我解决这个问题吗?
尝试了 docker 卸载、重新安装、镜像修剪、容器修剪、WSL 停止和启动、主机文件注释以下行:
192.168.1.8 host.docker.internal
192.168.1.8 gateway.docker.internal
Run Code Online (Sandbox Code Playgroud)
以下是容器中的 ipconfig
Nslookup 和 Ping 命令:
网络LS:
码头工人组成:
version: "3.9"
services:
web:
container_name: dinesh_server_container
image: dinesh_server:1
build: .
ports:
- "8000:80"
- "8001:81"
volumes:
- .\rowowcf:c:\rowowcf
- .\rowowcf_supportfiles:c:\rowowcf_supportfiles
- .\rowocollectionsite:c:\rowocollectionsite
environment:
TZ: Asia/Calcutta
Run Code Online (Sandbox Code Playgroud)
构建映像使用:来自mcr.microsoft.com/dotnet/framework/aspnet:4.8
主机操作系统: Win 10 Pro 10.0.19043 Build 19043
HyperV也已启用。
也尝试了以下方法:
extra_hosts:
- "host.docker.internal:host-gateway"
Run Code Online (Sandbox Code Playgroud)
由于它在 Windows 操作系统上 - 不支持主机网络模式(根据我的研究)
请注意:即使添加了端口转发标志,此问题仍然存在,因此其他 SO 答案在这里对我没有帮助。我知道我在这里询问开源MediaMTX RTSP服务器,但我相信这本质上是一个纯粹的 Docker 问题;因此,任何具有 Docker 网络经验的人都可以回答这个问题,无论他们是否有 MediaMTX 的经验。
我这里使用的是 Mac 笔记本电脑。我通过 docker 运行 MediaMTX,如下所示:
docker run --rm -it -p 8554:8554 bluenviron/mediamtx:latest
2023/10/16 15:05:22 INF MediaMTX v1.2.0
2023/10/16 15:05:22 INF configuration loaded from /mediamtx.yml
2023/10/16 15:05:22 INF [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP)
2023/10/16 15:05:22 INF [RTMP] listener opened on :1935
2023/10/16 15:05:22 INF [HLS] listener opened on :8888
2023/10/16 15:05:22 INF [WebRTC] listener opened on :8889 (HTTP)
2023/10/16 15:05:22 INF [SRT] …Run Code Online (Sandbox Code Playgroud) docker ×10
docker-network ×10
gateway ×1
macos ×1
mongodb ×1
rabbitmq ×1
snowflake-cloud-data-platform ×1
traceroute ×1