Docker入门指南(一):极速安装与常用服务部署
Docker简明指南 Docker是一个应用容器平台,核心概念包括: 镜像(Image):应用的安装包 容器(Container):运行中的实例 仓库(Repository):镜像存储中心 安装步骤(CentOS): 卸载旧版本 配置阿里云yum源 安装docker-ce 启动并设置开机自启 配置镜像加速 常用命令: docker pull下载镜像 docker run启动容器 docker ps
一、先搞懂:Docker 到底是什么?
简单说,Docker 是一个 “装应用的盒子”。
镜像(Image):就像手机里的 “安装包”,包含了应用和它运行需要的所有环境(比如 MySQL 镜像里有 MySQL 程序和必要的配置)。
容器(Container):就像 “运行中的 APP”,是镜像启动后的实例。多个容器之间互相隔离,比如你可以同时跑一个 MySQL 容器和一个 Redis 容器,互不干扰。
仓库(Repository):就像 “应用商店”,存放各种镜像(比如 Docker Hub 是官方仓库,国内有阿里云镜像仓库)。
用一句话总结:用 Docker 可以把应用和环境打包成镜像,然后在任何装了 Docker 的机器上,一键启动成容器,解决 “在我电脑上能跑,在你那不行” 的问题。
Docker简介与优势
Docker三大核心价值:
- 🚀 环境一致性:开发、测试、生产环境完全一致
- 📦 快速部署:秒级启动服务,告别"在我机器上是好的"问题
- 资源高效:轻量级容器,比虚拟机节省50%以上资源
Docker安装
Docker分为 CE(社区版,免费,支持周期七个月) 和 EE(企业版,安全,付费使用,支持周期24个月) 两大版本
极简安装指南(CentOS)
以 CentOS 为例,安装 Docker CE(社区版,免费):
步骤 1:卸载旧版本(如果之前装过)
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
或
sudo yum remove docker*
步骤 2:配置国内 yum 源(加速下载)
Docker 默认源在国外,下载慢,用阿里云镜像源:
# 安装yum工具
yum install -y yum-utils
安装成功后,执行命令,配置Docker的yum源,yum的默认地址
yum-config-manager --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 配置阿里云Docker源
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
步骤 3:安装 Docker(社区版
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
tip:
Docker应用需要用到各种端口,挨个修改防火墙设置很麻烦,建议直接关闭防火墙
##关闭
systemctl stop firewalld
##禁止开机启动防火墙
systemctl disable firewalld
注意:生产环境请配置防火墙规则,开发环境可临时关闭防火墙:
步骤 4:启动 Docker 并设置开机自启
# 启动Docker
systemctl start docker
# 设置开机自启(下次开机自动启动Docker)
systemctl enable docker
# 验证是否安装成功(显示版本号即成功)
docker -v # 输出:Docker version 24.0.5, build ced0996
# 执行docker ps 命令,如果不报错,说明安装启动成功
docker ps
步骤 5:配置镜像加速(必做!否则下载镜像巨慢)
参考阿里云镜像加速
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
- 注册阿里云账号
- 开通镜像服务
- 配置镜像加速
# 创建配置目录
sudo mkdir -p /etc/docker
# 写入加速配置
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://你的专属加速地址.mirror.aliyuncs.com"]
}
EOF
# 重启Docker使配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker
二、实战:用 Docker 跑起常用软件
Docker核心命令
| 命令 | 作用 | 例子 |
|---|---|---|
| docker pull 镜像名 | 从仓库下载镜像 | docker pull mysql(下载 MySQL 镜像) |
| docker run 镜像名 | 用镜像启动容器 | docker run mysql(启动 MySQL 容器) |
| docker ps | 查看正在运行的容器 | - |
| docker ps -a | 查看所有容器(包括停止的) | - |
| docker stop 容器名 | 停止容器 | docker stop mysql |
| docker start 容器名 | 启动已停止的容器 | docker start mysql |
| docker rm 容器名 | 删除容器(需先停止) | docker rm mysql |
| docker rmi 镜像名 | 删除镜像 | docker rmi mysql |
1. 启动 MySQL
# 下载MySQL镜像(默认最新版)
docker pull mysql
# 启动MySQL容器
docker run -d \
--name mysql \ # 给容器起个名字叫mysql
-p 3306:3306 \ # 端口映射:宿主机3306端口 → 容器3306端口
-e MYSQL_ROOT_PASSWORD=123456 \ # 设置root密码为123456
mysql # 镜像名
参数解读
- docker run:创建并运行一个容器
- -d :后台运行容器(不占用当前终端)。
- –name mysql:给容器命名(必须唯一),方便后续操作(比如停止、删除)。
- -p 3306:3306:设置端口映射。
宿主机端口:容器内端口,,没有这一步,外部访问不到容器里的服务。 - -e KEY=VALUE:设置环境变量,不同镜像环境变量值也不一样
- mysql:指定运行镜像的名字
- –start=always 开机启动
验证:用 Navicat 连接 宿主机IP:3306,用户名 root,密码 123456,能连上就成功了。
2.docker安装nacos
docker pull nacos/nacos-server:1.2.0
# 运行方式一
docker run --env MODE=standalone --name nacos --restart=always -d -p 8848:8848 nacos/nacos-server:1.2.0
# 运行方式二:
docker run -d \
--name nacos \
--env-file ./nacos/custom.env \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--restart=always \
nacos/nacos-server:v2.1.0-slim
其中的nacos/custom.env文件中
PREFER_HOST_MODE=hostname
MODE=standalone
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_HOST=192.168.200.101
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3307
MYSQL_SERVICE_USER=root
MYSQL_SERVICE_PASSWORD=123
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
访问地址:ip:8848/nacos (默认账号:nacos/nacos)
- –env MODE=standalone:单机启动
- 8848 是用于客户端与服务通信的主要端口。
9848 是 gRPC 端口,用于与 Nacos 的 gRPC 通信(如果需要)。
9849 是 Raft 端口,用于 Nacos 集群中节点之间的通信(如果运行集群模式)。
3. docker安装MinIO
docker pull minio/minio
docker run -p 9000:9000 -p 9001:9001 --name minio -d --restart=always \
-e "MINIO_ROOT_USER=minio" -e "MINIO_ROOT_PASSWORD=minio123" \
-v /home/data:/data -v /home/config:/root/.minio minio/minio server /data --console-address ":9001"
访问地址:ip:9001
- 9000是minio的api端口映射;9001是minio管理员界面窗口的端口映射
4. Docker安装Redis
docker pull redis # 下载Redis镜像
# Redis默认端口6379
docker run -d --name redis --restart=always \
-p 6379:6379 redis redis-server --appendonly yes
用redis客户端连接测试
- –requirepass “leadnews” 设置redis的登录密码,也可以不设置此参数,不要密码
5. Docker安装 Nginx
docker pull nginx # 下载Nginx镜像
# Nginx默认端口80
docker run --name nginx -p 80:80 -d nginx
- 访问:
服务器ip:80
6. Docker安装RabbitMQ
docker pull rabbitmq:3-management # 带管理界面的版本
docker run \
-e RABBITMQ_DEFAULT_USER=rapden \
-e RABBITMQ_DEFAULT_PASS=123321 \
-v mq-plugins:/plugins \
--name mq \
--hostname mq \
-p 15672:15672 \
-p 5672:5672 \
--network hm-net\
-d \
rabbitmq:3.8-management
- 浏览器访问:
服务器ip:15672,输入指定的用户名和密码(admin/123456) tip: 15672是ui管理台的端口,5672是消息通信的端口
7. Docker安装kafka
#kafaka对于zookeeper是强依赖,要先安装zookeeper
docker pull zookeeper:3.4.14
docker run -d --name zookeeper -p 2181:2181 zookeeper:3.4.14
docker pull wurstmeister/kafka:2.12-2.3.1
docker run -d --name kafka \
--env KAFKA_ADVERTISED_HOST_NAME=192.168.200.129 \
--env KAFKA_ZOOKEEPER_CONNECT=192.168.200.129:2181 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.200.129:9092 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
--env KAFKA_HEAP_OPTS="-Xmx256M -Xms256M" \
--net=host wurstmeister/kafka:2.12-2.3.1
- –net=host 直接使用容器宿主机的网络命名空间,既没有独立的网络环境。它使用宿主机的ip和端口。
8. Docker安装es
docker pull elasticsearch:7.12.1
docker run -d --name es \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v es-data:/usr/share/elasticsearch/data \
-v es-plugins:/usr/share/elasticsearch/plugins \
--privileged --network es-net \
-p 9200:9200 -p 9300:9300 elasticsearch:7.12.1
- 访问http的端口:
ip:9200 - 9200暴露在http协议的端口,给用户访问;9300是es容器各个节点互相访问使用的
- discovery.type=single-node是单机启动
- –privileged 授予逻辑卷访问权
- ES_JAVA_OPTS JVM运行的最大最小内存,默认1GB
- discovery.type 是docker运行模式,可以是单点,也可以是集群
9. Docker安装kibana(es的可视化界面)
docker pull kibana:7.12.1
docker run -d --name kibana -e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net -p 5601:5601 kibana:7.12.1
- 访问:
ip:5601 注意:加入的网络要和es在同一个网络下,下载的版本要和es版本保持一致--network es-net加入一个名为es-net的网络中
10. Docker安装MongoDB
docker pull mongo
docker run -di --name mongo-service --restart=always -p 27017:27017 -v ~/data/mongodata:/data mongo
11. Docker安装 xxl-job
docker pull xuxueli/xxl-job-admin:2.3.0
docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://192.168.200.129:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8 \
--spring.datasource.username=root \
--spring.datasource.password=abc123" \
-p 8888:8080 -v /tmp:/data/applogs \
--name xxl-job-admin --restart=always -d xuxueli/xxl-job-admin:2.3.0
- 访问:
ip:8888/xxl-job-admin - 账号密码:admin 123456
12. Docker安装seata
需要注意,要确保nacos、mysql都在hm-net网络中。如果某个容器不再hm-net网络,可以参考下面的命令将某容器加入指定网络:
docker network connect [网络名] [容器名]
在虚拟机的**/root**目录执行下面的命令:
docker run --name seata \
-p 8099:8099 \
-p 7099:7099 \
-e SEATA_IP=192.168.200.101 \
-v ./seata:/seata-server/resources \
--privileged=true \
--network hm-net \
-d \
seataio/seata-server:1.5.2
端口映射
- 默认情况下,容器是隔离环境,我们直接访问宿主机的3306端口,肯定访问不到容器中的mysql。
- 将宿主机端口与容器端口映射,当我们访问宿主机的3306端口时,会被映射到容器的3306端口,这样就能访问到mysql了。
镜像命名规范
镜像名称一般由两部分组成:[repository]:[tag],如mysql:5.7
- repository是镜像名
- tag是 镜像的版本
若不指定tag,默认是latest,代表最新版本的镜像
更多推荐


所有评论(0)