这篇文章主要讲解了“如何使用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:数据卷容器挂载时不一定要处于运行状态
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 里面:
暂时用不到 pass
感谢各位的阅读,以上就是“如何使用docker网络”的内容了,经过本文的学习后,相信大家对如何使用docker网络这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。