2021年2月

docker容器之间互联, 默认是创建一个虚拟局域网络, DHCP分配IP地址, 从而桥接在一起互通;
整个虚拟网络内的所有容器 与 宿主机 是 NAT端口映射模式;

要容器内查询 ip地址 和 端口映射情况;

查询 网络模式
docker network ls
name有 bridge,host,none

查询 网络IP与容器的情况
docker network inspect [网络模式的name]
比如:
docker network inspect bridge
得到:

"4b32914e77989ecb74324ee81e4e9596be44902bd5ef95afa7639355824dcfa9": {
    "Name": "hyperf2",
    "EndpointID": "e84bd168a8f93a41712dfbcf5b2c0748e61a972fbea24325b78976a96b98d8a9",
    "MacAddress": "02:42:ac:11:00:03",
    "IPv4Address": "172.17.0.3/16",
    "IPv6Address": ""
},
"5e313d3e68a8069950a6d0f971d88333c155ec396dc5f5225611256e4ae935e3": {
    "Name": "hyperf",
    "EndpointID": "a5d7aef7dfc3114fe73dcb820bffc391c689bf5325d10b61d9005b96d14d2f2d",
    "MacAddress": "02:42:ac:11:00:02",
    "IPv4Address": "172.17.0.2/16",
    "IPv6Address": ""
},

查询 容器的端口映射情况
示例:
C:UsersAdministrator>docker port hyperf
9501/tcp -> 0.0.0.0:22222
9502/tcp -> 0.0.0.0:33333

示例:
C:UsersAdministrator>docker port hyperf2
9503/tcp -> 0.0.0.0:44444

docker run 的时候,指定 --network [网络Id]
docker network create --driver bridge my_net可以创建一个指定网络ID的虚拟局域网,bridge模式

同一个虚拟局域网, 容器内 如何知道 其他容器的IP地址 ?
给IP地址一个别名, docker run 的时候 --network my_net --network-alias php

CentOS7 安装docker

yum update -y
yum remove docker docker-common docker-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce
systemctl start docker
systemctl enable docker
docker version


Win10 安装docker

https://desktop.docker.com/win/stable/Docker%20Desktop%20Installer.exe


下载源代码

git clone git@gitee.com:hello/caiss-front.git


下载运行环境的镜像
docker pull hyperf/hyperf:7.4-alpine-v3.11-swoole


启动容器

docker rm -f hyperf

Linux系统是

docker run -it --volume=/data/wwwroot/caiss-front:/hyperf-skeleton --publish=22222:9501 --name="hyperf" --entrypoint /bin/sh hyperf/hyperf:7.4-alpine-v3.11-swoole

Windows10系统
鲸鱼的Settings的Resources的FileSharing要添加宿主机目录,比如开放F磁盘

docker run -it --volume=F:/caiss-front:/hyperf-skeleton --publish=22222:9501 --name="hyperf" --entrypoint /bin/sh hyperf/hyperf:7.4-alpine-v3.11-swoole

exit


开始编码

docker start hyperf
docker exec -ti hyperf /bin/sh
cd /hyperf-skeleton/
任意操作,比如
composer install
composer start
exit

关机下班