Docker(安装软件)

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

相关推荐
Leinwin31 分钟前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
2401_8653825035 分钟前
信息化项目运维与运营的区别
运维·运营·信息化项目·政务信息化
漠北的哈士奇39 分钟前
VMware Workstation导入ova文件时出现闪退但是没有报错信息
运维·vmware·虚拟机·闪退·ova
如意.7591 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
运维小欣1 小时前
智能体选型实战指南
运维·人工智能
yy55271 小时前
Nginx 性能优化与监控
运维·nginx·性能优化
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ2 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
05大叔4 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密4 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
dashizhi20154 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑