通过容器IP的方式访问
运行MySQL的容器
- 创建容器
docker pull hub.c.163.com/library/mysql
docker run -d --name=db --restart=always -e MYSQL_ROOT_PASSWORD=db1 -e MYSQL_DATABASE=blog hub.c.163.com/library/mysql

- 测试容器
mysql -uroot -pdb1 -h172.17.0.2
show databases;

创建wordpress容器
WORDPRESS_DB_HOST:mysql服务器地址
WORDPRESS_DB_USER:登录mysql的用户名
WORDPRESS_DB_PASSWORD:登录mysql的密码
WORDPRESS_DB_NAME:数据库名称
docker run -dit --name blog --restart=always -e WORDPRESS_DB_HOST=172.17.0.2 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=db1 -e WORDPRESS_DB_NAME=blog -p 80:80 hub.c.163.com/library/wordpress

在浏览器访问,并不需要输入数据库信息(已经自动连接):


弊端:当容器出现问题重新生成时,IP可能会发生变化,导致数据库连接失败。
使用link的方式
link的用法
--link 容器名:别名
docker run -dit --name blog --restart=always --link db:mysqlxx -e WORDPRESS_DB_HOST=mysqlxx -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=db1 -e WORDPRESS_DB_NAME=blog -p 80:80 hub.c.163.com/library/wordpress
docker rm -f db
docker rm -f blog
docker ps
使用link后,连接此容器,直接使用别名即可。在上述命令中,WORDPRESSS_DB_HOST这个变量直接使用别名,而不需要写db的IP了。

简化用法
wordpress镜像使用的默认值为:
WORDPRESS_DB_HOST:默认为link所连接的容器,且别名为mysql。
WORDPRESS_DB_USER:默认为root。
WORDPRESS_DB_PASSWORD:默认为登录mysql的root所使用的密码。
WORDPRESS_DB_NAME:默认为wordpress。
所以当使用的数据库为wordpress时,可以简化命令。
docker run -d --name db --restart=always -e MYSQL_ROOT_PASSWORD=db1 -e MYSQL_DATABASE=wordpress hub.c.163.com/library/mysql
docker run -dit --name blog --restart=always --link db:mysql -p 80:80 hub.c.163.com/library/wordpress
在浏览器访问,数据库正确连接:


639

被折叠的 条评论
为什么被折叠?



