你好,我是新来的docker,并试图安装docker在centos 7环境。我已经安装了docker使用https://docs.docker.com/install/linux/docker-ce/centos/,然后试图让一个网站运行使用这个https://docs.docker.com/engine/examples/dotnetcore/#build-and-run-the-docker-image。我曾试图做wget对localhost和docker ip对这些端口无济于事。
这是我所执行的:
docker build -t aspnetapp .
docker run -it -d --name myapp aspnetapp
这是docker文件
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 64928
EXPOSE 44340
FROM microsoft/dotnet:2.1-sdk AS build
COPY . /app
WORKDIR /app
RUN dotnet restore "TestDocker.csproj"
FROM build AS publish
RUN dotnet publish "TestDocker.csproj" -c Release -o /app
FROM base AS final
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "TestDocker.dll"]
它可以完美地构建和运行
[root@local testSite]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b6044951aa7d aspnetapp "dotnet TestDocker.d…" 45 minutes ago Up 45 minutes 44340/tcp, 64928/tcp myapp
防火墙D:
[root@local testdocker]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp9s0
sources:
services: ssh dhcpv6-client http https
ports: 44340/tcp 64928/tcp 443/tcp 80/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
我原以为我可以直接从浏览器访问它,但我没有运气。即使某个地方有这方面的说明,也能有人给我指出那个方向。
这会是问题所在吗
Dec 12 14:40:58 local.office firewalld[2591]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C POSTROUTING -p tcp -s 172.17.0.2 -d 172.17.0.2 --dport 64928 -j MASQUERADE' failed: iptables: No chain/target/match by that name.
Dec 12 14:40:58 local.office firewalld[2591]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C DOCKER -p tcp -d 0/0 --dport 80 -j DNAT --to-destination 172.17.0.2:64928 ! -i docker0' failed: iptables: No chain/target/match by that name.
Dec 12 14:42:36 local.office firewalld[2591]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.2 --dport 64928 -j ACCEPT' failed: iptables: Bad rule (does a matching rule exist in that chain?).
Dec 12 14:42:36 local.office firewalld[2591]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C POSTROUTING -p tcp -s 172.17.0.2 -d 172.17.0.2 --dport 64928 -j MASQUERADE' failed: iptables: No chain/target/match by that name.
Dec 12 14:43:18 local.office firewalld[2591]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C DOCKER -p tcp -d 0/0 --dport 64928 -j DNAT --to-destination 172.17.0.2:64928 ! -i docker0' failed: iptables: No chain/target/match by that name.
2条答案
按热度按时间ar7v8xwq1#
Docker容器有自己的网络堆栈。您需要向外界公开容器上的端口,并将这些端口Map到主机端口。您可以使用“-p”标志来完成此操作。
详情请参阅:
https://docs.docker.com/config/containers/container-networking/
5f0d552i2#
虽然FirewallD是CentOS 7的预设防火墙程式,但在新的CentOS 7伺服器上,它会被预设停用。因此,让我们启动它并加入所需的网络埠。您可以尝试使用以下的方法在您的防火墙应用程式中加入埠。
防火墙命令添加端口=64928/tcp永久
防火墙命令添加端口=44340/tcp永久
或
您可以检查您的Docker防火墙规则一次,因为这些规则是在操作系统上的默认防火墙管理工具之前设置的。
iptables -L -v -n -t nat --行号
您可以使用上述命令检查这些。