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主机了。
最后更新于
这有帮助吗?