Docker创建MySQL5.7及常用命令

149 阅读1分钟

Docker创建MySQL5.7

  1. 下载镜像
$ docker pull mysql:5.7.23
  1. 对mysql数据进行挂载
mkdir /opt/mysql
mkdir /opt/mysql/conf
mkdir /opt/mysql/data
 
创建并修改my.cnf配置文件
vim /opt/mysql/conf/my.cnf
 
my.cnf添加如下内容:
[mysqld]
user=mysql
lower_case_table_names=1
character-set-server=utf8
default_authentication_plugin=mysql_native_password

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8
  1. 创建容器并启动
启动命令:
$ docker run -d -p 3306:3306 --privileged=true --name mysql-5.7.23 \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7.23
------------------------------------------------------------------------------
参数说明:
--privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-v /opt/mysql/conf/my.cnf:/etc/mysql/my.cnf:映射配置文件
-v /opt/mysql/data:/var/lib/mysql:映射数据目录
  1. 启动报错信息以及解决
Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "write parent: broken pipe"
原因:
linux与docker版本的兼容性问题
使用 root 权限登录 Centos。确保 yum 包更新到最新。
$ sudo yum update
  1. 配置mysql挂载问题
  • 5.1. 为啥要映射配置文件? 容器内改变配置文件,重启后,会还原,他只是一个容器,你不能改变容器内的东西。所以需要映射进去。
  • 5.2. 为啥要把 数据库的文件 映射到 服务器上? 一样的原因,重启会还原。所以要把保存的数据放到 不还原的地方。

Docker常用命令

镜像操作

  • 检索
$ docker search 关键字 
eg: docker search redis
我们经常去docker hub上检索镜像的详细信息,如镜像的TAG
  • 拉取
$ docker pull 镜像名:tag
eg: docker pull mysql:5.7.23
:tag是可选的,tag表示标签,多为软件的版本,默认是latest
  • 列表
$ docker images 
查看所有本地镜像
  • 删除
docker rmi image-id 
删除指定的本地镜像

容器操作

  1. 搜索镜像
$ docker search tomcat
  1. 拉取镜像
$ docker pull tomcat
  1. 根据镜像启动容器
$ docker run ‐‐name mytomcat ‐d tomcat:latest
  1. 查看运行中的容器
$ docker ps
  1. 停止运行中的容器
$ docker stop 容器的id
  1. 查看所有的容器
$ docker ps ‐a
  1. 启动容器
$ docker start 容器id
  1. 删除一个容器
$ docker rm 容器id
  1. 启动一个做了端口映射的tomcat
$ docker rundp 8888:8080 tomcatd:后台运行
‐p: 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口
  1. 为了演示简单关闭了linux的防火墙
$ service firewalld status ;查看防火墙状态
$ service firewalld stop:关闭防火墙
  1. 查看容器的日志
$ docker logs container‐name/container‐id

docker更多命令