废话不多说~~

1、拉取一个现成的镜像,当然也可以拉取centos镜像,自己安装

docker pull mysql:5.7

https://hub.docker.com/从这里巴拉,有说明看。

2、测试镜像

docker拉取的镜像都是别人上传的,人家的环境能用,不一定你的环境也能用。所以测试一下,修改成自己想要的。

docker run --name tempMysql -p 33307:3306 -e MYSQL_ROOT_PASSWORD=password -e LANG=C.UTF-8 -d mysql:5.7

--name 后面是指定的容器名

-p 代表端口映射,格式为 宿主机映射端口:容器运行端口

-e 代表添加环境变量

MYSQL_ROOT_PASSWORD是root用户的登陆密码

mysql:5.7 是下载的镜像+版本(若不指定版本,该命令会重新下载mysql最新的镜像)

-d 后台启动

客户端执行:

mysql -h192.168.2.22 -P 33307 -uroot -p

ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2)

如果客户端是docker的宿主机的话,也需要指定-h,不然就练到127.0.0.1 然后报错。

3、定制自己的镜像

vim dockerfile

FROM mysql:5.7

WORKDIR /docker-entrypoint-initdb.d

ENV LANG=C.UTF-8

ENV MYSQL_ROOT_PASSWORD=password

docker build -t mysql:my

注意:这里设置了两个ENV,相当于把mysql的密码和字符集写死了。

不想写死的话docker run的时候就要加上-e 设置这两个变量。同理在k8s上运行也是一样的,不想写死就的设置环境变量,如果不想费心找密码的话。

我们的数据库在生产环境中基本不用(没那个精钢钻呀),所以我没配置存储,有需要的自行参考https://hub.docker.com/_/mysql

4、推送到私有镜像库

docker push hub.ict.ac.cn/dev/mysql:my

5、在docker上运行

docker run --name tempMysql -p 33307:3306 -d mysql:my

docker run --name tempMysql -p 33307:3306 -e LANG=C.UTF-8 -e MYSQL_ROOT_PASSWORD=password -d mysql:my

6、k8s运行mysql

kubectl apply -f mysql.yaml

使用原装镜像的:

apiVersion: apps/v1beta1

kind: Deployment

metadata:

name: mysql

namespace: wde

spec:

selector:

matchLabels:

app: mysql-wde

template:

metadata:

labels:

app: mysql-wde

spec:

containers:

- name: mysql-wde

image: mysql:5.7

ports:

- containerPort: 3306

env:

- name: LANG

value: ‘C.UTF-8‘

- name: MYSQL_ROOT_PASSWORD

value: ‘password‘

---

apiVersion: v1

kind: Service

metadata:

name: mysql-svc

namespace: test

labels:

name: mysql-svc

spec:

type: NodePort

ports:

- port: 3306

protocol: TCP

targetPort: 3306

name: http

nodePort: 31106

selector:

app: mysql-wde

使用自定义镜像的:

apiVersion: apps/v1beta1

kind: Deployment

metadata:

name: mysql

namespace: wde

spec:

selector:

matchLabels:

app: mysql-wde

template:

metadata:

labels:

app: mysql-wde

spec:

containers:

- name: mysql-wde

image: hub.ict.ac.cn/dev/mysql:my

ports:

- containerPort: 3306

---

apiVersion: v1

kind: Service

metadata:

name: mysql-svc

namespace: test

labels:

name: mysql-svc

spec:

type: NodePort

ports:

- port: 3306

protocol: TCP

targetPort: 3306

name: http

nodePort: 31106

selector:

app: mysql-wde

如果出现报错:

ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘192.168.2.22‘ (111) 单纯查这个错是因为拒绝远程连接,以为是mysql配置bind_address的问题。

其实也有可能dp没有起来,仔细检查一下。

7、测试连接

mysql -h 192.168.2.22 -uroot -P31106 -p

use mysql

创建用户(生产环境千万别. 根据自己需求改,密码不能弱口令)

grant all privileges on . to [email protected]%‘ identified by ‘password‘ with grant option;

原文:https://www.cnblogs.com/zhaobowen/p/13282160.html

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐