容器互联

--link可以通过容器名互相通信,容器间共享环境变量。
--link主要用来解决两个容器通过ip地址连接时容器ip地址会变的问题.


先创建启动mysql容器

# -dti:指定容器运行在交互模式下,并将其连接到终端。
# --name db:为容器指定名称 db,以便在后续操作中引用该容器。
# --restart=always:指定容器在退出时总是自动重启。
# -e MYSQL_ROOT_PASSWORD=redhat:设置 MySQL 的 root 用户密码为 redhat。
# -e MYSQL_DATABASE=blog:创建一个名为 blog 的数据库。

docker run -dti --name db --restart=always -e MYSQL_ROOT_PASSWORD=redhat -e MYSQL_DATABASE=blog  mysql:5.6

创建启动源容器wordpress

# docker run -dti --name 容器名 --restart=always -v 本地目录:容器内目录 -p 本地端口:容器端口 --link 数据库容器名:数据库容器别名 wordpress镜像

# -dti:指定容器运行在交互模式下,并将其连接到终端。
# --name blog:为容器指定名称 blog,以便在后续操作中引用该容器。
# --restart=always:指定容器在退出时总是自动重启。
# -v /web:/var/www/html:将宿主机上的 /web 目录映射到容器中的 /var/www/html 目录,实现数据持久化。
# -p 80:80:将容器内部的 80 端口映射到宿主机的 80 端口,以便外部网络可以访问容器中的网站。
# --link db:mysql:将容器与另一个名为 db 的容器连接起来,并设置别名为 mysql,以便在后续操作中引用该容器。

docker run -dti --name blog --restart=always -v /web:/var/www/html -p 80:80 --link db:mysql wordpress

当使用–link参数时,docker会自动在共享两个容器的变量。访问数据库的时候,不再是通过IP的方式来访问,而是通过容器名来访问.
在容器中执行: env | grep -i hub_name,会显示容器的的环境变量


实验:tomcat连接mysql

接下来在tomcat容器的webapps中配置msyql连接,数据源输入mysql的容器名即可。
–link 参数可以把两个容器连接为一组容器,一般用于连接mysql,而不用映射mysql的端口到宿主机

例如,tomcat和mysql建立link之后,在tomcat里可以直接ping通mysql的容器名.
在tomcat配置MySQL连接的文件中不需要再写入localhost或者ip地址,直接写入mysql容器名即可连接到mysql数据库


创建启动mysql容器

# -dti:指定容器运行在交互模式下,并将其连接到终端。
# --name mysql:为容器指定名称mysql,以便在后续操作中引用该容器。
# --restart=always:指定容器在退出时总是自动重启。
# -e MYSQL_ROOT_PASSWORD=12345:设置 MySQL的密码
docker run -dti --name mysql --restart=always -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6

创建启动tomcat容器 --link连接mysql容器

# -dti:指定容器运行在交互模式下,并将其连接到终端。
# --name tomcat:为容器指定名称 tomcat
# --restart=always:指定容器在退出时总是自动重启。
# -p 8080:8080:将容器内部的 8080 端口映射到宿主机的 8080 端口
# --link mysql:将容器与另一个名为 mysql 的容器连接起来
# -v /webapps:/usr/local/tomcat/webapps:将宿主机上的 /webapps 目录映射到容器中的 /usr/local/tomcat/webapps 目录

docker run -dti --name tomcat --restart=always -p 8080:8080 --link mysql -v /webapps:/usr/local/tomcat/webapps tomcat

接下来在tomcat容器的webapps中配置msyql连接,数据源输入mysql的容器名即可。
tomcat和mysql建立link之后,在tomcat里可以直接ping通mysql的容器名.
在tomcat配置MySQL连接的文件中不需要再写入localhost或者ip地址,直接写入mysql容器名即可连接到mysql数据库.

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐