如何使用docker网络
更新:HHH   时间:2023-1-7


这篇文章主要讲解了“如何使用docker网络”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用docker网络”吧!

数据卷

之前我们创建一个容器,并且在容器中创建了一个文件。然后将容器重新提交成一个镜像,这样我们使用该镜像创建新容器时就包含这个文件了,但是这种方案实际上并不推荐,docker对于数据存储方式提供数据卷和数据卷容器两种方式来处理。

数据卷

数据卷和linux挂载目录非常类似,实际上数据卷就是一个可以供容器使用的特殊目录。网上对于数据卷的创建和挂在有挺多方法,其实都差不多。这里我们将使用-v这种方式创建和挂在数据卷。

sudo docker run -ti --name volume1 -v /myDir ubuntu:16.04 bash

比如使用以上语句,我们可以创建 volume1的容器,并且创建了一个 myDir的数据卷挂在该容器上。

我们可以看到在容器中存在一个 myDir目录,这个目录就是我们挂载的数据卷。

另外一种方式是,将主机上的一个目录映射成为容器的数据源。 sudo docker run -ti --name volume2 -v /home/test/:/myShare ubuntu:16.04 bash 这样,主机上的/home/test目录就映射到了容器的myShare文件夹。 PS:默认情况下,数据卷的挂在都是读写权限,可以使用 :ro指定为只读 sudo docker run -ti --name volume2 -v /home/test/:/myShare:ro ubuntu:16.04 bash

可以使用docker volume命令管理数据卷。

数据卷容器

数据卷容器实际上就是一个普通的容器,不过这个容器专门作为数据卷供其他容器挂载。

首先创建一个数据卷容器(和上面创建带有数据卷的容器命令一样) sudo docker run -ti -d -v /dataVolume --name v0 ubuntu:16.04 以上创建一个容器 v0,包含了一个数据卷,目录是 /dataVolume

然后再创建一个容器,挂载刚才的容器 sudo docker run -ti --volumes-from v0 --name v1 ubuntu:16.04 bash 这样,在刚才的新容器中也能知道v0的数据卷挂载目录 /dataVolume

PS:数据卷容器挂载时不一定要处于运行状态

Docker网络

ubuntu容器默认并没有带基本的网络辅助工具 通过以下代码安装了 ping vim apache2 openssh工具

apt-get update
apt-get install vim
apt-get install net-tools
apt install iputils-ping
apt install apache2
apt install apache2-utils
apt install openssh-server
apt install openssh-client

然后修改 vim /etc/ssh/sshd_config 把“PermitRootLogin”的内容改为 yes,保存。 然后 使用命令 passwd 设置root密码

然后将这个容器重新打包成一个镜像 sudo docker commit -m "commit message" {containerName} {imageName}:{tag}

当我们从这个镜像创建一个容器并且开启各种服务之后,我们遇到了一个问题,如何从外网访问这个容器内容的apache服务器? 所以最重要的东西就是端口映射,在使用run创建一个容器的时候,需要使用-p参数建立端口映射。

-p hostPort:containerPort 映射所有 IP 地址上的指定端口到容器内部

-p ip:hostPort:containerPort 映射指定 IP 地址上的指定端口到容器内部

-p ip::containerPort 映射指定 IP 地址上的任意端口到容器内部

比如我们服务器地址是xxx,镜像(上面搞的)是 net:v1.0 sudo docker run -ti --name web -p 80:80 net:v1.0 bash

然后在容器中开启apache服务。

最后访问 xxx:80 就会被映射到 web容器的 80端口,实际访问了容器的apache服务器。

PS: Docker 默认使用 TCP 协议在容器之间进行网络通信,如果你需要 UDP,可以使用如下格式指定 sudo docker run -ti --name web -p 80:80/udp net:v1.0 bash

容器互联

容器互联可以不用端口映射就可以让容器之间进行交互。容器互联会在源容器和接收容器之间创建一条安全隧道,接收容器可以看到源容器的信息。比如两个容器,一个容器时db,一个容器时app

首先,创建一个源容器:

sudo docker run -ti --name db net:v1.0 bash 然后运行另一个容器,使用--link 参数连接第一个容器:

sudo docker run -ti --name app --link db:data net:v1.0 bash 这里的 --link db:data 的意思是把名字为 db 的容器链接到别名 data,然后你就可以在第二个容器里以 sender 这个名字和第一个容器通信,比如 ping data: ping data

实际上,系统把这个别名加入到了 容器的/etc/hosts 里面:

docker 组件局域网

暂时用不到 pass

感谢各位的阅读,以上就是“如何使用docker网络”的内容了,经过本文的学习后,相信大家对如何使用docker网络这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是天达云,小编将为大家推送更多相关知识点的文章,欢迎关注!

返回大数据教程...