Docker安装
1.卸载旧版
首先如果系统中已经存在旧的Docker,则先卸载:
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine \ docker-selinux

2.配置Docker的yum库
首先要安装一个yum工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
安装成功后,执行命令,配置Docker的yum源(已更新为阿里云源):
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
更新yum,建立缓存
sudo yum makecache fast
安装Docker
最后,执行命令,安装Docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动和校验

配置镜像加速
镜像地址可能会变更,如果失效可以百度找最新的docker镜像。
配置镜像步骤如下:
# 创建目录
rm -f /etc/docker/daemon.json
# 复制内容
tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "http://hub-mirror.c.163.com", "https://mirrors.tuna.tsinghua.edu.cn", "http://mirrors.sohu.com", "https://ustc-edu-cn.mirror.aliyuncs.com", "https://ccr.ccs.tencentyun.com", "https://docker.m.daocloud.io", "https://docker.awsl9527.cn" ] } EOF
# 重新加载配置
systemctl daemon-reload
# 重启
Docker systemctl restart docker

安装mysql

停掉MySQL


这里下载的其实是MySQL的镜像

镜像和容器


当我们利用Docker 安装应用的时候他会搜索相关的应用下载镜像,
镜像不仅还有本身还有他所
运行的环境
配置文件
系统函数库,
这些构成一个完整的镜像,他是一个独立的软件运行单元,因为它里面包含系统函数库,这个镜像并不依赖操作系统同一个镜像既可以在linux不同的发行版本当中使用
他下载的镜像是从镜像仓库当中下载他具体的流程是当我们安装和下载好Docker的时候系统当中就会
有一个Docker Server 也就是他的服务端他当中就会启动一个守护进程
就是来处理客户端发过来的一些请求任务,
例如当我们执行这个命令docker run这个守护进程就会监听到这个操作然后就会从镜像仓库
当中,找到对应的镜像,然后就会从仓库中下载到本地然后本地就会有这个镜像,
可以通过docker images 查看下载了哪些镜像
他会由镜像来构建一个docker的容器这是他在运行镜像当中创造出来的一个隔离环境,
我们称为容器

一个镜像可以创建多个容器 而且这多个容器,互不打扰的可以充分利用服务器的资源,
下载软件的时候他先会在本地去寻找如果本地有他就不会再去下载了可以直接创建容器
我们可以通过命令来查看正在运行的容器docker ps 可以看见哪些容器
命令解析

"在后台运行一个叫 mysql 的容器,
用 MySQL 8,
宿主机 3307 映射容器 3306,
设置时区为上海,
root 密码是 123。"


容器当中有独立的文件系统
也有独立的网络环境甚至有独立的ip地址
通过这个命令docker inspect mysql我们可以看到ip地址
但是我们外部的网络时不能连接他外部里面的I p地址因为他们不在一个网络环境当中,
如果想在外部访问他 我们可以继于端映射来操作将宿主机的端口与容器建立映射关系
我们在访问这个容器的时候前访问宿主机3307这个端口如果访问是个端口就将他交给这个
3306端口来进行处理
📌 MySQL 在容器里永远监听 3306
-e TZ=Asia/Shanghai设置容器的时区
-e TZ=Asia/Shanghai
-e = environment(环境变量)
作用是:
• 容器里的 Linux
• MySQL
• 日志时间
• NOW()、CURRENT_TIMESTAMP
都会使用 中国时区
👉 不设置会怎样?
• 默认 UTC
• 比北京时间 慢 8 小时
• 数据库时间全乱 ❌
👉 生产环境强烈建议设置
-e MYSQL_ROOT_PASSWORD=123(必须)设置 MySQL root 用户密码
-e MYSQL_ROOT_PASSWORD=123
这是 MySQL 官方镜像的强制要求:
❌ 不设置 → 容器直接启动失败
含义:
项目 值
用户名 root
密码 123
👉 实际生产中请换成复杂密码
mysql:8指定使用的镜像
mysql:8
拆开看:
部分 含义
mysql 镜像名
8 版本(tag)
等价于:
docker pull mysql:8
docker run mysql:8
👉 不写版本会怎样?
mysql:latest
• 版本可能变化
• 容易踩坑
• 强烈建议写死版本
Docker:帮我在后台启动一个 MySQL 8 数据库,
容器名字叫 mysql,
容器内部用 3306 端口,
对外暴露成 3307,
时区用上海,
root 密码是 123
常见易错点(你以后一定会遇到)❌ 1. 连不上数据库
• 连了 3306
• 实际应该连 3307
⸻
❌ 2. 时间不对
• 忘了 TZ=Asia/Shanghai
• 数据库时间慢 8 小时
⸻
❌ 3. 容器启动失败
• 忘了设置 MYSQL_ROOT_PASSWORD