您的位置:首页 > 运维架构 > Docker

docker 安装mysql

2018-03-19 17:35 281 查看

阿里云服务器

Docker 安装 MySQL
查找Docker Hub上的mysql镜像runoob@runoob:/mysql$ docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relati... 2529 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Crea... 161 [OK]
centurylink/mysql Image containing mysql. Optimized to be li... 45 [OK]
sameersbn/mysql 36 [OK]
google/mysql MySQL server for Google Compute Engine 16 [OK]
appcontainers/mysql Centos/Debian Based Customizable MySQL Con... 8 [OK]
marvambass/mysql MySQL Server based on Ubuntu 14.04 6 [OK]
drupaldocker/mysql MySQL for Drupal 2 [OK]
azukiapp/mysql Docker image to run MySQL by Azuki - http:... 2 [OK]
...这里我们拉取官方的镜像,标签为5.7runoob@runoob:~/mysql$ docker pull mysql:5.7等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为mysql,标签为5.7的镜像。

使用mysql镜像

运行容器

runoob@runoob:~/mysql$ docker run -p 3306:3306 --name mymysql -v $PWD/conf/my.cnf:/etc/mysql/my.cnf -v $PWD/logs:/logs -v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
21cb89213c93d805c5bacf1028a0da7b5c5852761ba81327e6b99bb3ea89930e
runoob@runoob:~/mysql$
 docker run --name mysql5.7 -p 3306:3306 -v /usr/mysql/conf/my.cnf:/conf/mysql/my.cnf -v /usr/mysql/logs:/logs/mysql -v  /usr/mysql/data:/data/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

命令说明:-p 3306:3306:将容器的3306端口映射到主机的3306端口
-v $PWD/conf/my.cnf:/etc/mysql/my.cnf:将主机当前目录下的conf/my.cnf挂载到容器的/etc/mysql/my.cnf
-v $PWD/logs:/logs:将主机当前目录下的logs目录挂载到容器的/logs
-v $PWD/data:/mysql_data:将主机当前目录下的data目录挂载到容器的/mysql_data
-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码

查看容器启动情况

runoob@runoob:~/mysql$ docker ps
CONTAINER ID    IMAGE         COMMAND                  ...  PORTS                    NAMES
21cb89213c93    mysql:5.7    "docker-entrypoint.sh"    ...  0.0.0.0:3306->3306/tcp   mymysql


Docker 删除镜像

1. 查询镜像 docker images


现在想删除第一个,ID为 99f85991949f 的镜像。




从上面看出,需要先停到ID为 67*** 的容器。
2. 查询容器 docker ps -a


删除前先停止容器docker stop 4b3e40cba75f

3. 先删除容器 docker rm 4b3e40cba75f


上面可以看出,容器已经删除。
4. 删除镜像  docker  rmi  bd397dc46369


5. 强制删除镜像  docker  rmi -f bd397dc46369 不建议使用
注意点:1. 删除前需要保证容器是停止的  stop2. 需要注意删除镜像和容器的命令不一样。 docker rmi ID  ,其中 容器(rm)  和 镜像(rmi)3. 顺序需要先删除容器

 启动mysql实例

docker run --name some-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest

连接到本地mysql

docker run -it --link some-mysql:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'

连接其他地方的mysql

docker run -it --rm mysql mysql -hsome.mysql.host -usome-mysql-user -p

切换到容器shell中

docker exec -it
some-mysql  bash;

docker exec 进入容器

局域网访问不到的情况解决方法:

为了安全,首先需要设置root帐号的密码,如下
update user set authentication_string = password('root') where user = 'root';
mysql> grant all privileges on *.* to root@"%" identified by "password" with grant option; 
Query OK, 0 rows affected, 1 warning (0.04 sec)
mysql> flush privileges; 
Query OK, 0 rows affected (0.00 sec

进入以后use mysql数据库:
mysql> use mysql;

添加root用户可以远程访问:
mysql> grant all privileges on *.* to 'root'@'%' identified by 'password123';
mysql> update `mysql`.`user` set `Grant_priv` = 'Y' where `user` = 'root';
mysql> update user set host='%' where user='root';
mysql> flush privileges;

执行完毕后,再通过工具去连接,就可以连上了。



端口映射

docker指令:
docker run -p ip:hostPort:containerPort redis
使用-p参数会分配宿主机的端口映射到虚拟机。 
IP表示主机的IP地址。 
hostPort表示宿主机的端口。 
containerPort表示虚拟机的端口。支持的格式有三种:ip:hostPort:containerPort:映射指定地址的指定端口到虚拟机的指定端口(不常用) 
如:127.0.0.1:3306:3306,映射本机的3306端口到虚拟机的3306端口。 
ip::containerPort:映射指定地址的任意端口到虚拟机的指定端口。(不常用) 
如:127.0.0.1::3306,映射本机的3306端口到虚拟机的3306端口。 
hostPort:containerPort:映射本机的指定端口到虚拟机的指定端口。(常用) 
如:3306:3306,映射本机的3306端口到虚拟机的3306端口。
docker port NAME
查看端口映射情况。

qq技术交流群 110408216
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: