docker 网络管理

docker 网络模式

  • host模式,使用docker run时使用--net=host指定

    docker使用的网络实际上和宿主机一样,在容器内看到的网卡ip是宿主机ip

  • container模式,使用--net=container:container_id/container_name 多个容器使用共同的网络,看到的ip是一样的

  • none模式,使用--net=none指定 这种模式下,不会配置任何网络

  • bridge模式,使用`--net=bridge`指定默认模式,不用指定默认就是这种网络模式。这种模式会为每个容器分配一个独立的Network Namespace。类似于vmware的nat网络模式。同一个宿主机上的所有容器会在同一个网段下,相互之间是可以通信的。

外部访问容器

让本机网络也可以访问容器中运行的服务,关键在于容器和宿主机的端口映射。

1.新建一个容器

docker run -itd -p 8080:80 --name centos-nginx centos bash

-p port:port :表示映射宿主机和容器的端口,宿主机端口:容器端口

2.在容器中下载服务

[root@7607eaefdc07 /]# yum install epel-release
[root@7607eaefdc07 /]# yum install nginx
[root@7607eaefdc07 /]# /usr/sbin/nginx

因为容器中执行systemctl starg nginx 命令会有如下错误

Failed to get D-Bus connection: Operation not permitted

3.退出容器,在外部访问

新建的容器,启动nginx或者httpd服务的时候会报错

Failed to get D-Bus connection: Operation not permitted

这是因为dbus-daemon没有启动,解决该问题可以这样做

配置桥接网络

为了使本地网络中的机器和Docker容器更方便的通信,我们经常会有将Docker容器配置到和主机同一网段的需求。这个需求其实很容易实现,我们只要将Docker容器和宿主机的网卡桥接起来,再给Docker容器配上IP就可以了。

修改宿主机网络配置

启动网络服务

安装pipework

开启一个容器

再配置sshd服务,就可以直接对外提供一台简易的linux主机了。

最后更新于

这有帮助吗?