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

相关推荐
不是书本的小明1 小时前
K8S应用优化方向
网络·容器·kubernetes
程序猿编码1 小时前
一个授予普通进程ROOT权限的Linux内核级后门:原理与实现深度解析
linux·运维·服务器·内核·root权限
小夏子_riotous1 小时前
openstack的使用——9. 密钥管理服务Barbican
linux·运维·服务器·系统架构·centos·云计算·openstack
梦想的旅途22 小时前
自动化运营如何防封?解析 API 协议下的拟人化风控算法
运维·自动化
AC赳赳老秦3 小时前
OpenClaw text-translate技能:多语言批量翻译,解决跨境工作沟通难题
大数据·运维·数据库·人工智能·python·deepseek·openclaw
andeyeluguo3 小时前
docker总结
运维·docker·容器
w6100104663 小时前
cka-2026-etcd
运维·服务器·etcd·cka
SuAluvfy3 小时前
从 0 到 1:在 Windows + Docker 环境下搭建 NextChat 并接入多模型 API(踩坑实录)
docker·容器
九英里路3 小时前
cpp容器——string模拟实现
java·前端·数据结构·c++·算法·容器·字符串
航Hang*3 小时前
VMware vSphere 云平台运维与管理基础——第5章:VMware vSphere 5.5 高级特性
运维·服务器·开发语言·windows·学习·虚拟化