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

相关推荐
liux35282 分钟前
基于kubeadm构建K8S高可用集群:从理论到实践
云原生·容器·kubernetes
岁岁种桃花儿3 分钟前
构建SpringBoot项目Docker镜像并发布到k8s集群中进行运行
spring boot·docker·kubernetes
海兰4 分钟前
Docker单节点部署Elasticsearch 9.0+(开发环境)
运维·docker·容器
Riu_Peter4 分钟前
【记录】Ubuntu 安装 Docker
ubuntu·docker·eureka
人间打气筒(Ada)8 分钟前
Docker主机集群化方案 Docker Swarm
运维·docker·容器·docker swarm·docker stack
white-persist9 分钟前
【内网运维 联合解析】Docker 全体系详解(功能原理 + 命令参数 + 实战攻防)
运维·docker·容器
程序 代码狂人1 小时前
帆软-服务器器数据集权限配置
运维·服务器
代码游侠8 小时前
ARM开发——阶段问题综述(二)
运维·arm开发·笔记·单片机·嵌入式硬件·学习
Mr.朱鹏10 小时前
Nginx路由转发案例实战
java·运维·spring boot·nginx·spring·intellij-idea·jetty
java_logo10 小时前
OpenCode 企业级 Docker 部署完整指南
运维·docker·容器·opencode·opencode本地化部署·opencode部署手册·opencode部署方案