ubuntu 18.04 docker 學習經歷(三)Docker mysql 及 phpmyadmin

20181231 假期閒來無事,整理一下 docker mysql 及 phpmyadmin 學習經歷php

1 、下載安裝 docker-ce

官網

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

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

二、Docker 理解

1)、每個 Docker container (容器)就是一個特定應用程序,啓動後就是一個特定進程
2)、一個容器就是一項服務,每個 mysql 容器就能夠提供一個 mysql 服務和若干實例
3)、這裏特地安裝 2 個不一樣版本,宿主機本身也已經安裝過 LNMP ,用於對比學習

三、下載、安裝、運行 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)

五、進入容器測試

** 這裏只列出容器 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)

六、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/80897309linux

七、接下來

從以上部署 phpmyadmin 能夠看出
1)、phpmyadmin 其實就是一個 php 網站
2)、前一步部署的其實就是別人作好的網站鏡像
3)、若是擁有了鏡像,使用 Docker 部署起來真的很快捷!
4)、到如今爲止,php 開發環境所須要的元素都已經學習過了,怎麼給他們組合起來?

接下來該學習
Dockerfile,docker-compose

20190106 複習 Docker mysql

一、 以上 mysql 容器的 數據庫 data 存在那裏?不該該在容器裏面保存動態數據!

二、若是同一套數據,使用不一樣版本 mysql 創建容器,會是怎樣?

相關文章
相關標籤/搜索