【Docker】容器与外部系统之间沟通交流方式

如何拷贝容器内的数据

类似 Linux 的“cp”、“scp”,指定源路径(src path)和目标路径(dest path)

# 将 a.txt 拷贝到容器的 /tmp 目录
 docker cp a.txt 964:/tmp
# 从容器拷贝出文件
 docker cp 964:/tmp/a.txt ./a_copy.txt

如何共享主机上的文件

共享宿主机目录。
docker run 命令启动容器使用 -v 参数,具体的格式是“宿主机路径: 容器内路径”。

docker run -d --rm -v /tmp:/tmp redis

如何实现网络互通

Docker 提供了三种网络模式,分别是 null、host 和 bridge。

null

null 是最简单的模式,也就是没有网络,但允许其他的网络插件来自定义网络连接。

host

host 使用宿主机网络,相当于去掉了容器的网络隔离(其他隔离依然保
留),所有的容器会共享宿主机的 IP 地址和网卡。
这种模式没有中间层,自然通信效率高,但缺少了隔离,运行太多的容器也容易导致端口冲突。
使用:docker run 时加上 --net=host

docker run -d --rm --net=host nginx:alpine

bridge

桥接模式。
容器和宿主机再通过虚拟网卡接入这个网桥(图中的 docker0),那么它们之间也就可以正常的收发网络数据包了。和 host 模式相比,bridge 模式多了虚拟网桥和网卡,通信效率会低一些。

Docker 默认的网络模式就是 bridge,所以一般不需要显式指定。(--net=bridge)

如何分配服务端口号

端口号映射需要使用 bridge 模式,并且在 docker run 启动容器时使用 -p 参数,用 : 分隔本机端口和容器端口。

# 启动两个Nginx 容器,分别跑在 80 和 8080 端口上
docker run -d -p 80:80 --rm nginx:alpine
docker run -d -p 8080:80 --rm nginx:alpine
作者:micromatrix原文地址:https://www.cnblogs.com/cenjw/p/18867281

%s 个评论

要回复文章请先登录注册