使用dockerfile制作mysql镜像部署到docker、k8s
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用dockerfile制作mysql镜像部署到docker、k8s,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3287字,纯文字阅读大概需要5分钟。
内容图文
![使用dockerfile制作mysql镜像部署到docker、k8s](/upload/InfoBanner/zyjiaocheng/526/b4672c66773b4b23be4e0da7f81590e7.jpg)
废话不多说~~
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 ‘root‘@‘%‘ identified by ‘password‘ with grant option;
使用dockerfile制作mysql镜像部署到docker、k8s
标签:protocol 上传 启动 sock template container 自定义 ada socket
本文系统来源:https://www.cnblogs.com/zhaobowen/p/13282160.html
内容总结
以上是互联网集市为您收集整理的使用dockerfile制作mysql镜像部署到docker、k8s全部内容,希望文章能够帮你解决使用dockerfile制作mysql镜像部署到docker、k8s所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。