首先你要先安装docker,安装教程这里简单概括一下
安装docker
1、检查内核版本,必须是3.10及以上
uname -r
(版本不够)yum update 升级软件包及内核
2、安装docker
yum install docker
3、输入y确认安装
4、查看docker版本:
docker -v
5、启动docker
systemctl start docker
5、开机启动docker
systemctl enable docker
6、停止docker
systemctl stop docker
7、卸载docker(想要重新安装其他版本)
yum remove docker-*
docker常用命令及操作:
检索:docker search 关键字 eg:docker search redis,然而我们更多会去docker hub上检索镜像的详细信息,如镜像的tag。
拉取:docker pull 镜像名:tag eg:docker pull mysql:5.5。 说明下:tag表示标签,多为软件的版本。不写,默认拉取是latest
列表:docker images 查看所有本地镜像
删除:docker rmi image-id 删除指定的本地镜像,说明下image-id可以通过docker images查看
容器(container)
镜像好比我们的安装程序,我们运行镜像会产生的一个容器,类比我们的一个个程序。
1、搜索镜像
docker search tomcat
2、拉取镜像
docker pull tomcat
3、根据镜像启动容器
docker run --name tomcat01 -d tomcat:latest
4、查看运行中的容器
docker ps
5、停止运行中的容器
docker stop 容器的id
6、查看所有的容器
docker ps -a
7、启动容器
docker start 容器id
8、删除一个容器
docker rm 容器id
9、启动一个做了端口映射的tomcat
docker run -d -p 8888:8080 tomcat
-d:后台运行
-p: 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口10、为了演示简单关闭了linux的防火墙
service firewalld status ;查看防火墙状态
service firewalld stop:关闭防火墙
11、查看容器的日志
docker logs 容器名字/容器id
12、重启docker
systemctl restart docker
更多命令参看:docker命令,也可以参考每一个镜像的文档。
安装MySQL
我最近在捣鼓MySQL主从复制,需要在docker中安装MySQL。
直接在docker hub上找到想安装的版本,这里我们拉取标签为5.6的镜像
docker pull mysql:5.6
出现连接超时:
Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
这是因为docker默认的源为国外官方源,下载速度较慢,改为国内源即可。
配置docker国内镜像源:
编辑docker默认的配置文件daemon.json。如果没有新建,有则修改。
vim /etc/docker/daemon.json
添加下面配置,保存退出 ps:我找了好几个源都没速度
{
"registry-mirrors":["http://18817714.m.daocloud.io"]
}
重新加载配置文件:
systemctl daemon-reload
重启docker:
systemctl restart docker
重新拉取镜像:
docker pull mysql:5.6
出现下图说明拉取镜像成功
查看镜像:
docker images | grep mysql
#在宿主机中创建保存mysql配置的目录
mkdir -p /mysql/conf
cd mysql
mkdir data
mkdir logs
#创建my.cnf文件
touch /conf/my.cnf
#my.cnf添加自己的配置
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
运行镜像产生容器:
docker run --name mysql -p 3306:3306 --privileged=true -v /mysql/conf:/etc/mysql/conf.d -v /mysql/logs:/logs -v /mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.6
这里参数说别下:
- --name :给容器起个名字。
- -p :将主机的端口映射到容器的一个端口 (主机端口:容器内部的端口)。
- -v /mysql/conf:/etc/mysql/conf.d :把主机当前目录mysql/conf挂载到容器的/etc/mysql/conf.d文件夹里,改mysql的配置文件只需要把mysql配置文件放在自定义的文件夹(/mysql/conf),data和logs目录同理。
- -e MYSQL_ROOT_PASSWORD=123 :初始化root用户密码。
- -d 后台运行的mysql:tag,并返回容器ID
- --restart always:开机启动,这里不做设置
- --privileged=true:提升容器内权限,使容器内的root真正拥有root权限,否则容器内root只是外部普通用户权限
在容器内默认不支持vim,如果要在docker容器内使用vim,哪个容器要用就需要各自安装vim(yum install vim)。所以对于所有涉及到数据和配置的,都不应该放在容器内部。应该用-v来挂载外部数据目录。
查看运行的容器:
docker ps
我们可以看到容器已经运行成功了。
测试
官网介绍docker exec命令可以允许我们在一个Docker容器内运行命令。
可以通过以下命令进入容器内,运行mysql命令
docker exec -it mysql bash
#连接mysql
mysql -uroot -p
ok,docker内运行mysql没问题。
通过Navicat客户端工具测试链接也成功。
至此,docker安装MySQL,大功告成 !