有什么办法可以在 docker 启动时禁用 docker0 桥接器?
在 daemon.json 中尝试了 "bridge": "none" 但它不起作用。
还使用“ip link delete docker0”删除了默认的docker桥,但是当我们重新启动docker时它会自动出现。那么有什么永久的方法可以在启动时禁用/删除默认的 docker 桥接器吗?我在这里看到了同样的问题How to delete interface docker0但我已经尝试过了,每当 docker 重新启动时,docker0 网桥就回来了。
有没有人得到这个?这是我的命令:
docker network create \
--opt com.docker.network.bridge.enable_ip_masquerade=true \
--opt com.docker.network.bridge.enable_icc=true \
--opt com.docker.network.bridge.host_binding_ipv4=0.0.0.0 \
--opt com.docker.network.bridge.name=dockerbridge123456789 \
--opt com.docker.network.driver.mtu=1500 \
-d bridge \
mydockerdockerbridge
Run Code Online (Sandbox Code Playgroud)
这是回应:
Error response from daemon: failed to check bridge interface existence: numerical result out of range
Run Code Online (Sandbox Code Playgroud) 我正在启动一个容器network_mode = bridge,当我检查终端中的网络容器时,我得到了容器 IP 地址。
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_id
Run Code Online (Sandbox Code Playgroud)
但是,我无法从容器对象中获取此 IP 地址。不搜索网络对象中的容器有什么解决办法吗?
您好,我是使用 docker 进行开发的新手。我试图在这里从前端(react)到后端(express.js)进行通信。
net::ERR_NAME_NOT_RESOLVED我也启用了 cors,当尝试使用 url 从后端获取时,出现错误http://backend:4001,
但当我使用 docker 内部 IPAddress 时它就可以工作,例如:http://172.18.0.3:4001。
以下是我的 docker-compose.yml 文件。
请提供有关使其正常工作的建议,谢谢。
version: "3"
services:
backend:
build: ./api
volumes:
- ./api:/usr/src/api
ports:
- 6002:4001
depends_on:
- database
database:
image: mongo:4.0.15-xenial
ports:
- 27018:27017
frontend:
build: ./app
volumes:
- ./app:/usr/src/app
ports:
- 6001:3000
links:
- backend
depends_on:
- backend
Run Code Online (Sandbox Code Playgroud) 我有一个带有 Java spring boot 应用程序的 docker 映像,该应用程序在端口 8080 的 docker 容器中启动和运行没有问题,正如您在部分日志中看到的那样:
\n\n 2020-02-24 02:09:07.906 INFO : Tomcat started on port(s): 8080 (http) with context path \'/web-app\'\n 2020-02-24 02:09:07.909 INFO : Started web-app in 7.034 seconds (JVM running for 7.601)\nRun Code Online (Sandbox Code Playgroud)\n\n如果我在容器内运行curl命令(使用终端),我会得到正确的响应,表明服务器正在运行并且正在运行。
\n\n/# curl http://localhost:8080/web-app/cars/1\n{"id":"1"}\nRun Code Online (Sandbox Code Playgroud)\n\n现在,当我尝试访问主机上的应用程序时,问题就来了,我正在使用 Windows 10 顺便说一句(在网络浏览器中http://localhost:8080/web-app/cars/1),这里是如何我运行泊坞窗图像。
\n\ndocker run web-app -p 8080:8080\nRun Code Online (Sandbox Code Playgroud)\n\n但是,我不认为这是 Windows 问题,因为我可以运行一个简单的 nginx 服务器,并且可以毫无问题地在主机上访问它。
\n\ndocker run -d -p 80:80 nginx\nRun Code Online (Sandbox Code Playgroud)\n\n我注意到的一件事是当看到正在运行的容器时,端口列
\n\nC:\\Users\\luis>docker ps\nCONTAINER ID IMAGE COMMAND CREATED …Run Code Online (Sandbox Code Playgroud) 这里是 Docker 新手。我的 Nextjs 应用程序遇到了令人困惑的障碍,该应用程序与 API 和数据库容器一起在自己的容器中运行。
我的 Nextjs 应用程序使用 API 容器中的数据。这在服务器端效果很好:Nextjs 应用程序按其应有的方式解析容器主机名。然而,在客户端,应用程序崩溃了,因为容器主机名对浏览器来说没有任何意义(我认为?)。我对如何处理这件事感到相当迷失。有想法吗?
这是我的 Docker Compose 文件,它有助于阐明我的问题。请注意,我通过以下environment字段将主机名传递给 Nextjs 应用程序:
version: '3.8'
services:
# Redis
redis:
image: redis
command: redis-server --requirepass ${REDIS_PASSWORD} --bind redis
ports:
- "6379:6379"
networks:
- mywebappio
# Data Processing Service
mywebapp-api:
container_name: mywebapp-api
restart: always
build:
context: packages/dps-api
dockerfile: Dockerfile
command: npm run dev # npm start prod
working_dir: /usr/src/dps-api
env_file:
- .env
volumes:
- ./packages/dps-api:/usr/src/dps-api
ports:
- "5000:5000"
networks:
- mywebappio
depends_on:
- redis …Run Code Online (Sandbox Code Playgroud) 我刚刚根据文档从 Hyperledger Fabric 存储库重新安装了 Fabric Samples v2.2.0 。
但是当我尝试通过运行钱包来运行asset-transfer-basic位于fabric-samples/asset-transfer-basic/application-javascript目录中的应用程序时,node app.js会创建一个管理员和用户。但随后它尝试调用中给出的函数app.js并显示此错误
error: [Transaction]: Error: No valid responses from any peers. Errors:
peer=peer0.org1.example.com:7051, status=500, message=error in simulation: failed to execute transaction
aa705c10403cb65cecbd360c13337d03aac97a8f233a466975773586fe1086f6: could not launch chaincode basic_1.0:b359a077730d7
f44d6a437ad49d1da951f6a01c6d1eed4f85b8b1f5a08617fe7: error starting container: error starting container:
API error (404): network _test not found
Run Code Online (Sandbox Code Playgroud)
这个错误以前从未发生过。但不知何故,在重新安装 docker 和 Hyperledger Fabric 后,fabric-samples它似乎从未找到网络_test。
注意:在重新安装网络名称之前net_test。但是现在当我尝试时,docker network ls它显示了一个名为docker_test. 我正在使用适用于 …
现在,当我将 docker 容器端口绑定到我的计算机上的端口时,可以通过属于我的计算机的每个 IP 地址访问它。
我知道这一点是因为我尝试使用 Docker 主机的静态 LAN IP 地址通过另一台计算机连接到该端口。
我想限制该特定容器只能由我的 docker 主机(127.0.0.1 或 localhost)访问。当我将 Web 服务器的 IP 更改为 localhost 时,我的 docker 主机将无法访问它(可能是因为这使其位于容器本地,而不是主机)。
如何使 docker 容器成为主机本地的?
我在 Java/maven 项目中使用 Testcontainer 进行单元测试和集成测试。测试按预期进行,直到我运行我用来工作的 VPN。使用 VPN,我可以看到错误消息“Can not connect to Ryuk at localhost:49198”
以下是完整的日志:
Connected to the target VM, address: '127.0.0.1:50813', transport: 'socket'
2022-10-03 18:01:49.728 INFO --- [ main] o.t.d.DockerClientProviderStrategy : Loaded org.testcontainers.dockerclient.UnixSocketClientProviderStrategy from ~/.testcontainers.properties, will try it first
2022-10-03 18:01:50.280 INFO --- [ main] o.t.d.DockerClientProviderStrategy : Found Docker environment with local Unix socket (unix:///var/run/docker.sock)
2022-10-03 18:01:50.282 INFO --- [ main] org.testcontainers.DockerClientFactory : Docker host IP address is localhost
2022-10-03 18:01:50.308 INFO --- [ main] org.testcontainers.DockerClientFactory : Connected to docker: …Run Code Online (Sandbox Code Playgroud) 我有无法解决的端口转发问题。我在VM中运行Linux,并且正在使用该VM中的docker。例如,当我尝试从docker compose设置端口转发时:
ports:
- "3080:3080"
Run Code Online (Sandbox Code Playgroud)
它仅在容器中运行的应用程序正在侦听0.0.0.0:3080的情况下起作用。问题是,我正在码头化的大多数应用程序都在监听localhost。0.0.0.0以外的任何接口都会导致端口转发不起作用。您是否知道为什么会这样或如何解决?
我在跑:
Docker版本17.05.0-CE,内部版本89658be
docker-compose版本1.17.1,构建未知
谢谢
PS我发现了一个临时的解决方法。我为容器指定了网络模式“主机”,强制容器使用主机OS网络,但是这种方法在MacOS上不起作用。