2-使用daocloud部署mysql+phpmyadmin容器

创建于20170211

本章小目标

  • 下载mysql镜像
  • 熟悉mysql 容器化配置
  • 部署mysql镜像
  • 下载phpmyadmin镜像
  • 熟悉phpmyadmin 容器化配置
  • 部署phpmyadmin镜像
  • 使用phpmyadmin来管理mysql

我习惯使用daocloud来对容器进行管理,我的云服务器也是用daocloud管理的,好处是镜像下载比较快,图形界面也比较友好。
daocloud链接:https://dashboard.daocloud.io/

当然,直接在服务器上写用docker命令操作也是可以的

1,mysql镜像地址

daocloud上mysql的镜像源地址如下:
https://dashboard.daocloud.io/packages/fa51c1d6-9dc2-49d9-91ac-4bbfc24a1bda
镜像地址: daocloud.io/library/mysql
个人猜测,daocloud.io/library前缀开头的镜像应该是和docker hub官方保持同步的版本。

2,mysql镜像官方文档解读

docker hub官网地址:
https://hub.docker.com/_/mysql/
在这里可以看到mysql镜像构建的Dockerfile文件,也是从一个linux镜像开始的。

FROM debian:jessie

从官方文档需要明确:

  • mysql镜像启动的参数(环境变量)
  • 从其他容器link时,需要指定的名称(/etc/hosts中的主机名)。如:

$ docker run --name some-app --link some-mysql:mysql -d application-that-uses-mysql

some-mysql:mysql 别名是否叫mysql,根据使用者容器的需要来定

  • 数据库配置文件
  • 数据库数据存放路径,这个很重要,不然容器关闭,数据就没了。

最后,文档中提到,如果用一个已经包含数据库的目录(有mysql子目录),那么原有数据保持不变。也就是说可以从现有的数据库来启动容器。

If you start your mysql container instance with a data directory that already contains a database (specifically, a mysql subdirectory), the $MYSQL_ROOT_PASSWORD variable should be omitted from the run command line; it will in any case be ignored, and the pre-existing database will not be changed in any way.

3,daocloud部署mysql

直接在daocloud镜像网页上点击部署最新版本,选择自己的自有主机(云服务器)。

  • 应用名称:BIT1DB
  • 端口映射:主机端口固定3306,与容器端口保持一致。以后作为本机的固定数据库服务。
  • volume:/data10g/bit1db/mysql 映射数据盘地址到容器地址:/var/lib/mysql (为什么是这个地址,之前的文档里面都说了)
  • 环境变量:MYSQL_ROOT_PASSWORD 设置mysql root用户密码

然后点击立即部署。
此时可以切换标签页,看到当前YAML文件的配置如下:

BIT1DB:
  image: daocloud.io/library/mysql:5.7.4
  privileged: false
  restart: always
  ports:
  - 3306:3306
  volumes:
  - /data10g/bit1db/mysql:/var/lib/mysql
  environment:
  - MYSQL_ROOT_PASSWORD=*****

4,检查mysql启动情况

大概1~2分钟就从无到有启动了一个mysql,容器化真的很方便。

4.1 首先查看主机

# docker images    查看下载的镜像
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
daocloud.io/library/mysql               5.7.4               aa5364eb3d85        2 years ago         252.3 MB

# docker ps   查看启动的容器
CONTAINER ID        IMAGE                                    COMMAND                  CREATED              STATUS              PORTS                    NAMES
a595a1091750        daocloud.io/library/mysql:5.7.4          "/entrypoint.sh mysql"   About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp   dao_BIT1DB_1

# netstat -an | grep 3306  查看主机固定端口
tcp6       0      0 :::3306                 :::*                    LISTEN

/data10g/bit1db/mysql# ls -l   查看数据卷保存的数据
total 123032
-rw-rw---- 1 999 docker        2 Feb 12 09:07 a595a1091750.pid
-rw-rw---- 1 999 docker       56 Feb 12 09:07 auto.cnf
-rw-rw---- 1 999 docker 12582912 Feb 12 09:07 ibdata1
-rw-rw---- 1 999 docker 50331648 Feb 12 09:07 ib_logfile0
-rw-rw---- 1 999 docker 50331648 Feb 12 09:07 ib_logfile1
-rw-rw---- 1 999 docker 12582912 Feb 12 09:07 ibtmp1
drwx------ 2 999 docker     4096 Feb 12 09:07 mysql
drwx------ 2 999 docker     4096 Feb 12 09:07 performance_schema

4.2 然后查看容器

root@a595a1091750:/usr/local/mysql# 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.6      a595a1091750     #主机名就是容器ID,并且有一个内网IP,后续从其他容器link时也可以用这个IP指定主机名

4.3 启动一个容器连接mysql试一下

密码输错了是会报错的,也说明我们连接的确实是之前创建的数据库。

# docker run -it --link dao_BIT1DB_1:mysql --rm mysql sh -c 'exec mysql -h"172.17.0.6" -P"3306" -uroot -p"******"'

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

大功告成。

5,phpmyadmin镜像地址

使用mysql的人都习惯用phpmyadmin,所以有必要再启动一个容器。
在镜像市场里面搜索,还是采用daocloud国内源镜像。看其版本应该是与官方保持同步的,而且下载速度比较快。
https://dashboard.daocloud.io/packages/06196480-43ec-4cb9-8325-1d77287dabad
镜像地址: daocloud.io/daocloud/phpmyadmin

6,phpmyadmin镜像官方文档解读

官方文档:https://hub.docker.com/r/phpmyadmin/phpmyadmin/

  • 找到其link语句:

docker run --name myadmin -d --link mysql_db_server:db -p 8080:80 phpmyadmin/phpmyadmin

可以看到:

  • mysql_db_server:db,说明需要把已有的mysql容器映射为别名:db,稍后可以看到db将存在于phpmyadmin的/etc/hosts中。

  • 8080:80,说明容器内部的端口是80

  • 环境变量
    PMA_HOST - define address/host name of the MySQL server
    PMA_PORT - define port of the MySQL server

7,部署phpmyadmin

-应用名称:BIT1DB_ADMIN
-端口映射:phpmyadmin的网页访问端口可以不固定,这不像mysql,将来需要在程序中配置,因此使用固定端口。
然后点击立即部署
查看YAML文件:

BIT1DB_ADMIN:
  image: daocloud.io/daocloud/phpmyadmin:edge
  privileged: false
  restart: always
  ports:
  - '80'
  environment:
  - PMA_PORT=3306
  - PMA_HOST=172.17.0.6   #这里用的是内网IP,因此端口对应映射前的端口

8,验证phpmyadmin安装结果

访问网页:http://外网服务IP:32807
32807是动态端口,根据之前的设置映射到phpmyadmin容器的80端口。每次重启容器,端口号自动+1

2-使用daocloud部署mysql+phpmyadmin容器_第1张图片
Paste_Image.png

新建数据库,发现大多数也用的是utf8_general_ci,所以新建数据 这里也选用utf8_general_ci就可以了。

后续会研究一下django容器,开发一个小demo,并使用这里创建的mysql容器。

你可能感兴趣的:(2-使用daocloud部署mysql+phpmyadmin容器)