ubuntu 18.04 docker 学习经历(三)Docker mysql 及 phpmyadmin

20181231 假期闲来无事,整理一下 docker mysql 及 phpmyadmin 学习经历

1 、下载安装 docker-ce

官网

https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-docker-ce-1

安装 docker-ce
sudo apt-get install docker-ce

2、Docker 理解

1)、每一个 Docker container (容器)就是一个特定应用程序,启动后就是一个特定进程
2)、一个容器就是一项服务,每一个 mysql 容器就可以提供一个 mysql 服务和若干实例
3)、这里特意安装 2 个不同版本,宿主机自己也已经安装过 LNMP ,用于对比学习

3、下载、安装、运行 mysql 容器

1)、查找 mysql 镜像 
docker search mysql
	NAME                                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
	mysql                                                  MySQL is a widely used, open-source relation…   7585                [OK]                
	mariadb                                                MariaDB is a community-developed fork of MyS…   2460                [OK]                
	mysql/mysql-server                                     Optimized MySQL Server Docker images. Create…   569                                     [OK]
	zabbix/zabbix-server-mysql                             Zabbix Server with MySQL database support       155                                     [OK]
	hypriot/rpi-mysql                                      RPi-compatible Docker Image with Mysql          102                                     
	zabbix/zabbix-web-nginx-mysql                          Zabbix frontend based on Nginx web-server wi…   82                                      [OK]
	centurylink/mysql                                      Image containing mysql. Optimized to be link…   59                                      [OK]

	....

2)、下载安装 mysql 最新版
sudo docker pull mysql

3)、下载安装 mysql 5.6
sudo docker pull mysql:5.6

4)、docker images
	REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
mysql                5.6                 27e29668a08a        47 hours ago        256MB
mysql/mysql-server   latest              a02eab9e2434        2 months ago        276MB
hello-world          latest              4ab4c602aa5e        3 months ago        1.84kB

5)、运行 mysql/mysql-server 容器
sudo docker run --name mysql56 -e MYSQL_ROOT_PASSWORD=123456 -p 3309:3306 -d mysql:5.6
参数说明:
--name mysql
-e MYSQL_ROOT_PASSWORD=123456
-p 3308:3306

6)、运行 mysql 5.6 容器
	sudo docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3309:3306 -d mysql/mysql-server
参数说明:
	同上

7)、查看容器是否启动、 docker ps
	CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS                   PORTS                               NAMES
	88c2aaa078d9        mysql:5.6            "docker-entrypoint.s…"   6 seconds ago       Up 4 seconds             0.0.0.0:3309->3306/tcp              mysql56
	f53d369601e4        mysql/mysql-server   "/entrypoint.sh mysq…"   3 minutes ago       Up 3 minutes (healthy)   33060/tcp, 0.0.0.0:3308->3306/tcp   mysql

8)、查看容器端口
	 docker port mysql
		3306/tcp -> 0.0.0.0:3308
		容器的 3306 端口映射到宿主机的 3308 端口
		
	docker port mysql56
		3306/tcp -> 0.0.0.0:3309

9)、查看容器 IP
	docker inspect mysql56
		...
		"IPAddress": "172.17.0.2",
		...
	
	docker inspect mysql
		...
		"IPAddress": "172.17.0.3",
		...
	
	** 以下连接测试 h 也可以使用容器的 IP
	** 容器 IP 是动态的,每一次不一定一样

4 、连接 容器的 mysql 测试

浏览器测试放到下一步:安装 phpmyadmin 的时候在进行
这里直接在命令行测试
** 注意端口号是大写 P ,小写p指的是密码

1)、连接宿主机自己的的 mysql(以下指令是等效的)
	mysql -uroot -p123456
	mysql -P3306 -uroot -p123456
	mysql -h127.0.0.1 -P3306 -uroot -p123456
	mysql -hlocalhost -P3306 -uroot -p123456

查看版本号
mysql> select version();
	+-------------------------+
	| version()               |
	+-------------------------+
	| 5.7.24-0ubuntu0.18.04.1 |
	+-------------------------+
	1 row in set (0.00 sec)
退出
mysql> quit

2)、连接容器 mysql 的 mysql (容器名字没有取好,应该也带上一个版本号,例如:mysql57)
	mysql -P3308 -u root -p123456 (这个不对!还是连接的宿主机的mysql)
	mysql -h127.0.0.1 -P3308 -uroot -p123456
	mysql -hlocalhost -P3308 -uroot -p123456 (这个不对!还是连接的宿主机的mysql)
	
	查看版本号
	mysql> select version();
	+-------------------------+
	| version()               |
	+-------------------------+
	| 5.7.24-0ubuntu0.18.04.1 |
	+-------------------------+
	1 row in set (0.00 sec)

3)、连接容器 mysql56 的 mysql
	mysql -P3309 -u root -p123456(这个不对!还是连接的宿主机的mysql)
	mysql -h127.0.0.1 -P3309 -uroot -p123456
	mysql -hlocalhost -P3309 -uroot -p123456 (这个不对!还是连接的宿主机的mysql)

	mysql> select version();
		+-----------+
		| version() |
		+-----------+
		| 5.6.42    |
		+-----------+
		1 row in set (0.00 sec)

5、进入容器测试

** 这里只列出容器 mysql56 
docker exec -it mysql56 bash

root@88c2aaa078d9:/# ls
	bin  boot  dev	docker-entrypoint-initdb.d  entrypoint.sh  etc	home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

root@88c2aaa078d9:/# mysql -V      
	mysql  Ver 14.14 Distrib 5.6.42, for Linux (x86_64) using  EditLine wrapper

root@88c2aaa078d9:/# apt update

进入 mysql
root@88c2aaa078d9:/# mysql -uroot -p123456
	Warning: Using a password on the command line interface can be insecure.
	Welcome to the MySQL monitor.  Commands end with ; or \g.
	Your MySQL connection id is 2
	Server version: 5.6.42 MySQL Community Server (GPL)

查询版本号
mysql> select version();
	+-----------+
	| version() |
	+-----------+
	| 5.6.42    |
	+-----------+
	1 row in set (0.00 sec)

6、phpmyadmin 部署、测试

1)查找 phpmyadmin 镜像
sudo docker search phpmyadmin
		NAME                                                      DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
		phpmyadmin/phpmyadmin                                     A web interface for MySQL and MariaDB.          697                                     [OK]
		nazarpc/phpmyadmin                                        phpMyAdmin as Docker container, based on off…   60                                      [OK]
		1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5      ubuntu-16-nginx-php-phpmyadmin-mysql-5          48                                      [OK]
	...

2)、安装 phpmyadmin 镜像
sudo docker pull phpmyadmin
出错了!
	Using default tag: latest
	Error response from daemon: pull access denied for phpmyadmin, repository does not exist or may require 'docker login'

docker pull phpmyadmin/phpmyadmin

3)、确认 phpmyadmin 镜像
docker images
	REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
	php                     5.6-fpm             3c6963d39c34        46 hours ago        344MB
	mysql                   5.6                 27e29668a08a        2 days ago          256MB
	phpmyadmin/phpmyadmin   latest              15ca549393be        2 weeks ago         166MB
	...

4)、先运行 mysql 容器
	a).前面已经创建过 2 个 mysql 容器,这里直接 start 即可
	b).如果没有创建过mysql 容器,先去 docker run 建立
	c).为了对比学习,这里将 2 个 mysql 容器都运行起来,分别 Link ,分别建立 phpmyadmin ro容器

	docker start mysql
	docker start mysql56

5)、建立 2 个 phpmyadmin 容器
	sudo docker run --name phpmyadmin72 --link mysql:db -p 9998:80 -d phpmyadmin/phpmyadmin
参数说明:
--link mysql:db 连接到 容器mysql ,给这个 link 一个别名为db

sudo docker run --name phpmyadmin56 --link mysql56:db -p 9997:80 -d phpmyadmin/phpmyadmin
参数说明:同上

6)、确认容器已经运行
docker ps
	CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS                    PORTS                               NAMES
	52fcab4ddbdc        phpmyadmin/phpmyadmin   "/run.sh supervisord…"   4 seconds ago       Up 3 seconds              9000/tcp, 0.0.0.0:9997->80/tcp      phpmyadmin56
	6d8013dd8267        phpmyadmin/phpmyadmin   "/run.sh supervisord…"   18 seconds ago      Up 17 seconds             9000/tcp, 0.0.0.0:9998->80/tcp      phpmyadmin72
	88c2aaa078d9        mysql:5.6               "docker-entrypoint.s…"   4 hours ago         Up 7 minutes              0.0.0.0:3309->3306/tcp              mysql56
	f53d369601e4        mysql/mysql-server      "/entrypoint.sh mysq…"   4 hours ago         Up 21 minutes (healthy)   33060/tcp, 0.0.0.0:3308->3306/tcp   mysql

7)、浏览器测试:
	** 2个数据库容器的 mysql 都是: 用户名: root 密码:123456
	
连接容器 mysql总是登录不上?
http://192.168.1.192:9998/index.php

连接容器 mysql56 是正确的
http://192.168.1.192:9997/index.php

8)、部署 phpmyadmin 有3种方法,我这里只是最简单的一种
详细学习请参考

https://blog.csdn.net/Gekkoou/article/details/80897309

7、接下来

从以上部署 phpmyadmin 可以看出
1)、phpmyadmin 其实就是一个 php 网站
2)、前一步部署的其实就是别人做好的网站镜像
3)、如果拥有了镜像,使用 Docker 部署起来真的很快捷!
4)、到现在为止,php 开发环境所需要的元素都已经学习过了,怎么给他们组合起来?

接下来该学习
Dockerfile,docker-compose

20190106 复习 Docker mysql

1、 以上 mysql 容器的 数据库 data 存在那里?不应该在容器里面保存动态数据!

2、如果同一套数据,使用不同版本 mysql 建立容器,会是怎样?

转载于:https://my.oschina.net/u/1440971/blog/2995514

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值