Docker安装MySQL与Redis
前言
如果你是云服务器,直接按步骤执行下面每一步的代码即可,如果你是虚拟机,还需要提前配置网络环境。
安装步骤
前置条件
为避免不必要的错误,请切换到root用户下执行命令
su - root
安装docker
1. 删除旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2. 安装工具包并设置存储库
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3. 安装docker引擎
sudo yum install docker-ce docker-ce-cli containerd.io
使用docker
1. 启动docker
sudo systemctl start docker
2. 常用命令
- 检测docker版本
docker -v
- 查看docker已有镜像
sudo docker images
3. 设置开机自启
sudo systemctl enable docker
4. 设置国内镜像加速
# 创建文件
sudo mkdir -p /etc/docker
# 修改配置, 设置镜像
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://t6w9cblo.mirror.aliyuncs.com"]
}
EOF
# 重启后台线程
sudo systemctl daemon-reload
# 重启docker
sudo systemctl restart docker
安装MySQL
1. 拉取MySQL镜像
# 不指定版本则默认拉取最新版本
sudo docker pull mysql:5.7
2. 启动MySQL
sudo 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
参数:
- -p 3306:3306:将容器的3306端口映射到主机的3306端口
- –name:给容器命名
- -v /mydata/mysql/log:/var/log/mysql:将配置文件挂载到主机/mydata/…
- -e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码为root
3. 查看docker启动的容器
docker ps
4. 配置MySQL
- 进入挂载的MySQL配置目录
cd /mydata/mysql/conf
- 修改配置文件
vi my.cnf
拷贝以下内容保存:
[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
# Esc
# :wq
- docker重启MySQL使配置生效
docker restart mysql
- 容器随docker启动自动运行
docker update mysql --restart=always
安装Redis
- docker拉取redis镜像
docker pull redis
- docker启动redis
- 创建redis配置文件目录
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
- 启动redis容器
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持久化
echo "appendonly yes" >> /mydata/redis/conf/redis.conf
# 重启生效
docker restart redis
- 容器随docker启动自动运行
docker update redis --restart=always
解释
Docker中每一个容器都是独立运行的,相当于一个独立的linux系统,如果想便捷地修改容器内的文件,我们就需要把容器目录挂载到主机的目录上。容器端口类似,外界无法直接访问容器内部的端口,需要先将容器端口映射到linux主机端口上才能访问。