docker static ip 在访问 mysql 的时候将非常有用,比如 mysql 指定了ip,docker 静态IP主要是通过自定义网络来实现,而如果需要访问数据库,最好的办法是使用 --link 链接docker 容器,然后在应用里使用链接名称。
综上述,如果需要指定 IP 则需要先自定义网络,然后创建的时候指定网络,如果需要使用 mysql 则还需要 --link 选项,下面我们进入主题。
docker 自定义网络
docker network create --subnet=172.27.0.0/16 dockerNetwork
上述命令创建了一个自定义的网络,名称为 dockerNetwork,ip 范围为 172.27.0.1 - 172.27.255.254 ,下面我们创建 docker 容器,并分配网络。
docker 静态 IP 地址 - docker static ip address
docker run --name yerbe-api -p 5000:3000 --link mysql:mariadb --network dockerNetwork --ip 172.27.1.10 -itd node sh /usr/local/bin/start.sh
这里,创建了一个名字为 yerbe-api 的容器,并把主机的 5000 端口绑定到该容器的 3000 端口,然后把它和 名为 mysql 的容器链接,这里 mysql 是已存在的容器名,mariadb 是别名。接着指定了网络为 dockerNetwork,ip 为 172.27.1.10 ,最后的 sh /usr/local/bin/start.sh 是该容器启动后执行的命令。
关于 docker 的博客,你可以参考:https://www.kpromise.top/?s=docker
docker --link 的使用
如上,我创建的容器 yerbe-api 链接到了 mysql 容器,别名为 mariadb,接着,在 yerbe-api 容器里可以通过 host: mariadb 端口 3306 以及 用户名密码链接数据库了,前提是 mysql 容器创建了用户、数据库并合理的授权了,比如:
grant all privileges on yerbe_web.* to 'yerbe'@'172.27.1.10' identified by '123456';
以后就可以通过 host: mariadb、用户名 yerbe 密码 123456 以及 databases yerbe_web 来连接数据库了。