Docker是一个开源的应用容器引擎,可让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,而后发布到任何流行的 Linux 机器上,也能够实现虚拟化。mysql
若是内核版本太低,能够参考此连接进行升级。linux
安装dockersql
$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
$ sudo yum makecache fast
$ sudo yum -y install docker-ce
$ sudo systemctl start docker
因为本地没有hello-world镜像,因此从仓库中下载该镜像并在容器中运行。 - 镜像加速 在`/etc/docker/daemon.json`文件(若是没有,自行建立)中添加: ```json { "registry-mirrors": ["http://hub-mirror.c.163.com"] } ```
$ docker images
$ docker ps
,若是想要查看已经关闭的镜像能够加上-a
参数$ docker rmi <image-name/id>
,强行删除加上-f
参数$ docker rm <container-name/id>
,强行删除加上-f
参数$ docker build -t <image-name> .
,.
表示当前路径,可使用具体路径代替$ docker run -p <本机端口>:<docker容器内部端口> --name <container-name> -d <image-name>
;-d参数表示在后台运行容器,并返回容器ID$ docker exec -it <container-name> /bin/bash
;-i
以交互模式运行容器、-t
为容器从新分配一个伪输入终端$ docker tag <image-name[:tag]> <registryhost/username/image-name[:tag]>
$ docker logs <container-name>
-- init.sql -- drop database if exists starwars; create DATABASE starwars; use starwars; create table if not exists people ( _id INT NOT NULL AUTO_INCREMENT, ID char(100), Name char(100), Heigth char(100), Mass char(100), Hair_color char(100), Skin_color char(100), Eye_color char(100), Birth_year char(100), Gender char(100), Homeworld char(100), Films char(200), Species char(200), Vehicles char(200), Starships char(200), primary key(_id) ); …… ……
Dockerfile
文件以mysql5.7为基础镜像构建咱们所须要的镜像,首先设置MYSQL_ALLOW_EMPTY_PASSWORD
便于咱们对数据库进行数据导入的操做,而后将文件(相对/绝对路径)拷贝到容器中,最后执行脚本写入数据。docker
FROM mysql:5.7 # no password ENV MYSQL_ALLOW_EMPTY_PASSWORD yes # put the file to container COPY setup.sh /mysql/setup.sh COPY data/mysql/priviledges.sql /mysql/priviledges.sql COPY sql/init.sql /mysql/init.sql # command CMD ["sh", "/mysql/setup.sh"]
具体Dockerfile语法参见连接数据库
#!/bin/bash set -e #查看mysql服务的状态,方便调试,这条语句能够删除 echo `service mysql status` echo '1.启动mysql....' #启动mysql service mysql start sleep 3 echo `service mysql status` echo '2.开始导入数据....' #导入数据 mysql < /mysql/init.sql echo '3.导入数据完毕....' sleep 3 echo `service mysql status` #从新设置mysql密码 echo '4.开始修改密码....' mysql < /mysql/priviledges.sql echo '5.修改密码完毕....' #sleep 3 echo `service mysql status` echo 'mysql容器启动完毕,且数据导入成功' tail -f /dev/null
use mysql; select host, user from user; -- 由于mysql版本是5.7,所以新建用户为以下命令: create user starwars identified by 'starwars'; -- 将starwars数据库的权限受权给建立的starwars用户,密码为starwars: grant all on starwars.* to starwars@'%' identified by 'starwars' with grant option; -- 这一条命令必定要有: flush privileges;
因为未使用--name
参数指定容器名称,因此随机生成了一个名字brave_agnesi
json
使用docker logs
命令查看日志:centos
1.进入容器
2.登陆mysql,使用咱们在priviledges.sql
文件中的用户名密码
尝试查询数据:select * from film;
由上图可知,咱们成功插入了数据。缓存