虚拟化容器技术,Docker基于镜像,可以秒级启动各种容器,每一种容器都是一个完整的运行环境,容器之间互相隔离。
Docker镜像仓库:Docker Hub Container Image Library | App Containerization
Docker安装文档:Install Docker Engine on CentOS | Docker Docs
卸载系统中已存在docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装Docker-CE
安装必须的依赖
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
设置docker repo的yum位置
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装docker,以及docker-cli
sudo yum install docker-ce docker-ce-cli containerd.io
启动docker
sudo systemctl start docker
设置docker开机自启
sudo systemctl enable docker
测试docker常用命令,注意切换到root用户
https://docs.docker.com/engine/reference/commandline/docker/
配置docker镜像加速
阿里云,容器镜像服务
针对Docker客户端版本大于1.10.0的用户
您可以通过修改daemon 配置文件/etc/docker/daemon.json 来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
下载镜像文件
docker pull mysql:5.7
docker images # 查看当前已存在镜像文件
创建实例并启动
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
参数说明:
docker ps # 查看当前docker容器
docker exec -it mysql /bin/bash # 进入容器文件系统(或者docker exec -it 容器id /bin/bash 其中容器id可由docker ps展示获得,同时id不必写全),-it表示以交互模式
whereis mysql # 查看mysql安装目录位置
exit # 退出容器
docker容器文件挂载与端口映射
修改msyql配置文件
vi /mydata/mysql/conf/my.cnf
文件内容,mysql默认使用拉丁编码,改为utf-8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
重启msyql容器
docker restart mysql
注意:解决MySQL连接慢问题
在配置文件中加入如下内容,并重启mysql
[mysqld]
skip-name-resolve
解释:skip-name-resolve:跳过域名解析
常用命令
通过容器的mysql命令行工具连接
docker exec -it mysql mysql -uroot -proot
设置root远程访问
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;
进入容器文件系统
docker exec -it mysql /bin/bash
下载镜像文件
docker pull redis # 此处视频采用版本为5.0.5,docker pull redis:5.0.5
创建实例并启动
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf # 创建配置文件,否则挂载映射该文件时会报错
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
redis 自描述文件:https://raw.githubusercontent.com/antirez/redis/4.0/redis.conf
使用redis镜像执行redis-cli命令连接
docker exec -it redis redis-cli
测试redis缓存
set a b
get a # 获取到值为b
exit # 退出redis
docker restart redis # 重启redis容器
docker exec -it redis redis-cli # 连接redis客户端
get a # 谷粒学院视频采用redis5.0.5版本,获取不到值b,显示nil,而redis6以上版本默认持久化,可以正常显示
redis5.0.5配置持久化
vi /mydata/redis/conf/redis.conf
添加如下内容
appendonly yes
虚拟机关闭之后,docker容器也会随之关闭,下次重启虚拟机后,mysql和redis容器实际还存在,只是未运行
docker ps -a # 查看所有容器
docker start mysql # 启动mysql容器
docker start redis # 启动redis容器