当我们的mysql 容器启动后,想要登陆mysql 的数据库怎么办。以下介绍几种方法, 其他容器的登陆也可以仿效。
第一: 启动容器后用link 链接, 官方的mysql 容器有以下几个环境变量。
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d daocloud.io/mysql docker run -it --link some-mysql:mysql daocloud.io/mysql sh -c \'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"\'
第二种方法:已经有compose 启动的容器用link链接, 比如我的docker image 为pythondjangocdsample_mysql_1,可以用如下命令链接
docker run -ti --link pythondjangocdsample_mysql_1:mysql daocloud.io/mysql sh -c \'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"\'
或者用busybox 链接mysql 容器查看环境变量, 以下为myblog_mysql_1 中的环境变量。
docker run -ti --link myblog_mysql_1:mysql busybox
/ # env HOSTNAME=2f0ab0a2e9c5 SHLVL=1 HOME=/root MYSQL_ENV_MYSQL_DATABASE=myblog MYSQL_ENV_MYSQL_MAJOR=5.7 TERM=xterm MYSQL_PORT_3306_TCP_ADDR=172.17.0.3 MYSQL_ENV_MYSQL_ROOT_PASSWORD=mysql PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin MYSQL_PORT_3306_TCP_PORT=3306 MYSQL_PORT_3306_TCP_PROTO=tcp MYSQL_PORT=tcp://172.17.0.3:3306 MYSQL_ENV_MYSQL_VERSION=5.7.11-1debian8 MYSQL_PORT_3306_TCP=tcp://172.17.0.3:3306 PWD=/ MYSQL_NAME=/pensive_morse/mysql
以下为myblog_myblog_1链接到myblog_mysql_1 中的环境变量。
docker run -ti --link myblog_myblog_1:myblog busybox / # env MYBLOG_ENV_PYTHON_VERSION=2.7.11 MYBLOG_ENV_MYSQL_PORT_3306_TCP_ADDR=mysql MYBLOG_ENV_MYSQL_PASSWORD=mysql MYBLOG_PORT=tcp://172.17.0.4:80 HOSTNAME=5ae02b948c2c SHLVL=1 HOME=/root MYBLOG_ENV_MYSQL_PORT_3306_TCP_PORT=3306 MYBLOG_ENV_MYSQL_INSTANCE_NAME=myblog MYBLOG_NAME=/nostalgic_darwin/myblog MYBLOG_PORT_80_TCP_ADDR=172.17.0.4 MYBLOG_ENV_GPG_KEY=C01E1CAD5EA2C4F0B8E3571504C367C218ADD4FF MYBLOG_PORT_80_TCP_PORT=80 MYBLOG_PORT_80_TCP_PROTO=tcp TERM=xterm MYBLOG_ENV_PYTHON_PIP_VERSION=8.1.1 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin MYBLOG_PORT_80_TCP=tcp://172.17.0.4:80 MYBLOG_ENV_LANG=C.UTF-8 MYBLOG_ENV_MYSQL_USERNAME=root PWD=/
第三种方法:直接以client 端登陆mysql
sudo apt-get install mysql-client mysql -h172.17.0.3 -P3306 -uroot -pmysql
第四种: 在容器里面添加ssh-server
[supervisord]
nodaemon=true
[program:sshd]
command=/usr/sbin/sshd -D
[program:httpd]
command=/bin/bash -c "exec /usr/sbin/httpd -DFOREGROUND"
第五种:pull 一个phpmyadmin 的容器。
此处就不讲了。
顺便说一下,官方的mysql docker镜像实际也是通过volume 来实现数据的持久化。比如我的mysql 的volume 在如下地方可以找到,只有容器没有删除,数据就还在。
sudo ls /var/lib/docker/volumes/a36db263fc2c19121faed794a8b1ca184863c1ad3270c715df623ee267fccb0d/_data/django