docker部署服务之docker部署mysql服务

我的一点点docker部署服务习惯,喜欢使用官方的镜像,如果没有官方的镜像或者官方的镜像不好用,我会找第三方使用量比较多的镜像。这个习惯是基于安全的考虑,毕竟官方做得稍微安全点,有漏洞也更新最快。

一、mysql的image准备

1、docker search 搜索mysql

docker部署服务之docker部署mysql服务_第1张图片

如图所示,STARS 第一为13491是官方的mysql镜像。第三方bitnami/mysql的STARS为79。

2、https://hub.docker.com镜像站搜索mysql

docker部署服务之docker部署mysql服务_第2张图片

如图所示,第一个是mysql的官方镜像。

二、mysql官方部署mysql方法

1、docker 启动一个简单的mysql 实例

docker run \
--name some-mysql \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-d \
mysql:tag

docker run:是启动一个docker 容器的命令。完整书写方法应该是docker container run。

-name some-mysql: 给mysql容器起个名字,为some-mysql。

-e MYSQL_ROOT_PASSWORD=my-secret-pw:e是environment的首字母,是环境的意思。这里是给root用户配置一个密码my-secret-pw,这个my-secret-pw可以改成自己需要的。

-d: d是detach的首字母,可以理解为后台运行这个mysql容器。

mysql:tag:指的mysql的镜像名。tag是给一个版本mysql打个标签,如果不加:tag默认为mysql:latest。mysql最新镜像。

大家应该会发现一个问题,没绑定端口,所以这个启动的mysql没法通过端口访问,于是我就查看一下dockerfile,

docker部署服务之docker部署mysql服务_第3张图片

 

如图所示,mysql镜像向外暴露的端口是3306 和33060,

所以启动容器想被外面访问就要加上-p 3306:3306 -p 33060:33060

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

-p 3306:3306: 映射端口,前一个3306是宿主机上的端口要,可以改成自己想要的端口,后面的3306是docker容器里mysql启动的端口。

-p 33060:33060:映射端口,前一个33060是宿主机上的端口要,可以改成自己想要的端口,后面的33060是docker容器里mysql启动的端口。33060是管理员用的端口,目的是为了在3306连接数被耗尽了没法通过3306端口连上mysql操作,而为管理员特意准备的。

2、docker-compose 启动一个简单的mysql 实例

#mysql的docker-compose.yml

# Use root/example as user/password credentials
version: '3.1'

services:

  db:
    image: mysql
    # NOTE: use of "mysql_native_password" is not recommended: https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password
    # (this is just an example, not intended to be a production configuration)
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
    ports:
      - 3306:3306
      - 33060:33060
  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

这个docker-compose启动两个实例,一个是mysql,一个是adminer这个mysql管理工具。可以通过浏览器打开,如果你机器IP是192.168.0.22 ,那访问地址是http://192.168.0.22:8080

docker部署服务之docker部署mysql服务_第4张图片

mysql管理工具adminer我就不介绍了,大家自行网上查找。

#mysql的docker-compose部署实例

  docker-compose   -f  /path/docker-compose.yml  up -d

-f:f是file的首字母,在这指docker-compose.yml实在路径。

3、用定制mysql配置file启动mysql服务

官方介绍,镜像的默认配置文件是/etc/mysql/my.cnf,扩展配置文件可能在/etc/mysql/conf.d 或者 /etc/mysql/mysql.conf.d这个两个目录中一个下。需要通过创建的实际mysql镜像查看扩展配置文件路径实际是上面哪一个,命令方法是(docker image inspect mysql:latest)。

假设你看见 扩展配置文件路径是/etc/mysql/conf.d。而你把配置好扩展配置放在宿主机上的/data/mysql/custom/config-file.cnf,那docker启动的语句就是:

docker run \
--name some-mysql \
-v /data/mysql/custom:/etc/mysql/conf.d  \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-d \
-p 3306:3306  \
-p 33060:33060 \
mysql:tag

4、msyql数据文件目录映射到宿主机

如果不在宿主机绑定mysql的数据文件路径,想要检查数据文件就很不方便。假设我在宿主机上建了一个存放mysql数据文件的路径为/data/mysql/data,那docker启动语句就是

docker run \
--name some-mysql \
-v /data/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-d \
-p 3306:3306  \
-p 33060:33060 \
mysql:tag

5、加上映射配置文件路径和数据文件路径,docker启动语句就是

docker run \
--name some-mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/custom:/etc/mysql/conf.d  \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-d \
-p 3306:3306  \
-p 33060:33060 \
mysql:tag

6、加上映射配置文件路径和数据文件路径的docker-compose.yml文件,内容如下

# Use root/example as user/password credentials
version: '3.1'

services:

  db:
    image: mysql
    # NOTE: use of "mysql_native_password" is not recommended: https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password
    # (this is just an example, not intended to be a production configuration)
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
    ports:
      - 3306:3306
      - 33060:33060
    volumes:
      - /data/mysql/data:/var/lib/mysql
      - /data/mysql/custom:/etc/mysql/conf.d

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

7、重启一下docker-compose部署的服务

docker-compose   -f  /path/docker-compose.yml  down && docker-compose   -f  /path/docker-compose.yml  up -d

三、登录mysql 容器

docker exec -it some-mysql bash

四、查看mysql容器输出日志

1、简单用法

docker logs some-mysql

2、向后翻滚地查看日志

docker logs -f  some-mysql

3、从最后一行向后翻滚地查看日志

docker logs -f --tail 1 some-mysql

注.最后说一下,看了第三方mysql镜像和部署方法,没有比官方更好,所以建议使用官方的image和部署方法。

你可能感兴趣的:(docker,mysql,容器,运维,linux)