合 使用docker --link选项快速搭建WordPress博客平台
简介
--link
可以通过容器名互相通信,容器间共享环境变量,主要用来解决两个容器通过ip地址连接时容器ip地址会变的问题。
--link
可以使新生成的容器链接到已在运行的容器,其原理就是在/etc/hosts里面添加了一个alias的名称。
需要注意以下几点:
- 使用link选项建立的容器所链接的主机需要在运行状态
- 使用link选项建立的容器运行时需要所链接的容器也必须是运行状态
- 使用link选项链接的主机ip不需要固定,因为每次新建容器都会检查所链接容器的ip,在/etc/hosts里生成新的alias 名称对应的ip
使用容器互联搭建WordPress博客
先创建启动mysql容器
1 | docker run -itd --name db --restart=always -e MYSQL_ROOT_PASSWORD=lhr -e MYSQL_DATABASE=blog mysql:5.7.36 |
创建启动源容器wordpress
docker run -dti --name 容器名 --restart=always -v 本地目录:容器内目录 -p 本地端口:容器端口 --link 数据库容器名:数据库容器别名 wordpress镜像
https://hub.docker.com/_/wordpress
1 2 3 | docker rm -f blog rm -rf /web/* docker run -itd --name blog --restart=always -v /web:/var/www/html -p 88:80 --link db:mysql wordpress:6.0 |
当使用–link参数时,docker会自动共享两个容器的变量。访问数据库的时候,不再是通过IP的方式来访问,而是通过容器名来访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | [root@docker35 ~]# docker exec -it blog bash root@6d6c01e146b7:/var/www/html# cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.8 mysql 53cf6dbe365c db 172.17.0.9 6d6c01e146b7 root@6d6c01e146b7:/var/www/html# env | grep -i 172.17.0.8 MYSQL_PORT_33060_TCP_ADDR=172.17.0.8 MYSQL_PORT=tcp://172.17.0.8:3306 MYSQL_PORT_3306_TCP_ADDR=172.17.0.8 MYSQL_PORT_3306_TCP=tcp://172.17.0.8:3306 MYSQL_PORT_33060_TCP=tcp://172.17.0.8:33060 root@6d6c01e146b7:/var/www/html# env MYSQL_PORT_33060_TCP_ADDR=172.17.0.8 MYSQL_PORT=tcp://172.17.0.8:3306 MYSQL_PORT_3306_TCP_ADDR=172.17.0.8 MYSQL_NAME=/blog/mysql MYSQL_ENV_MYSQL_ROOT_PASSWORD=lhr MYSQL_PORT_3306_TCP_PORT=3306 HOSTNAME=6d6c01e146b7 PHP_VERSION=7.4.29 APACHE_CONFDIR=/etc/apache2 PHP_INI_DIR=/usr/local/etc/php GPG_KEYS=42670A7FE4D0441C8E4632349E4FDC074A4EF02D 5A52880781F755608BF815FC910DEB46F53EA312 MYSQL_ENV_MYSQL_MAJOR=5.7 PHP_LDFLAGS=-Wl,-O1 -pie MYSQL_PORT_3306_TCP=tcp://172.17.0.8:3306 PWD=/var/www/html HOME=/root MYSQL_ENV_GOSU_VERSION=1.12 MYSQL_PORT_33060_TCP_PROTO=tcp PHP_SHA256=7d0f07869f33311ff3fe1138dc0d6c0d673c37fcb737eaed2c6c10a949f1aed6 PHPIZE_DEPS=autoconf dpkg-dev file g++ gcc libc-dev make pkg-config re2c TERM=xterm PHP_URL=https://www.php.net/distributions/php-7.4.29.tar.xz MYSQL_PORT_33060_TCP_PORT=33060 MYSQL_PORT_3306_TCP_PROTO=tcp SHLVL=1 PHP_CFLAGS=-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 MYSQL_PORT_33060_TCP=tcp://172.17.0.8:33060 APACHE_ENVVARS=/etc/apache2/envvars MYSQL_ENV_MYSQL_DATABASE=blog PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PHP_ASC_URL=https://www.php.net/distributions/php-7.4.29.tar.xz.asc PHP_CPPFLAGS=-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 MYSQL_ENV_MYSQL_VERSION=5.7.36-1debian10 _=/usr/bin/env |