安装docker
-
配置yum源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
-
刷新yum源
yum clean all && yum repolist
-
安装
yum -y install docker-ce
这里提供备份的组件,在/var/cache/yum/x86_64/7/下找到对应的文件进行覆盖后再次安装即可
-
查看版本
docker -v
查看docker信息
docker info
-
配置镜像代理源
vim /etc/docker/daemon.json
内容
{
"registry-mirrors": [
"https://docker.1panel.live",
"https://docker.fxxk.dedyn.io",
"https://hub.rat.dev",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu",
"https://mirror.aliyuncs.com",
"https://mirror.baidubce.com",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker..ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc",
"https://atomhub.openatom.cn",
"https://dockerpull.com"
]
}
或者(阿里云自动化安装docker时设置的配置文件):
{
"registry-mirrors": [
"https://0vmzj3q6.mirror.aliyuncs.com",
"https://docker.m.daocloud.io",
"https://mirror.baidubce.com",
"https://dockerproxy.com",
"https://mirror.iscas.ac.cn",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://noohub.ru",
"https://vlgh0kqj.mirror.aliyuncs.com"
]
}
上述镜像代理可能失效,可以搜索关键词“docker国内镜像库地址”,找一些较新的进行替换
-
重载配置
systemctl daemon-reload
-
启动docker
systemctl start docker
设置自启动
systemctl enable docker
-
相关命令
查看当前镜像列表
docker images
搜索仓库内的镜像(官方仓库经常超时)
docker search [镜像名]
拉取镜像到本地(版本号可以不加,默认版本为latest)
docker pull [镜像名]:[版本号]
删除本地镜像
docker rmi [镜像名]:[版本号]
导出镜像
docker save [镜像名]:[版本号] -o [存放路径]/[镜像文件名].tar
导入镜像
docker load < [镜像文件路径]
复制一个本地镜像(改版本号)
docker tag [镜像名]:[版本号] [镜像名]:[新版本号]
连接远程docker
-
docker所在服务器修改配置文件
vim /usr/lib/systemd/system/docker.service
将
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
修改为
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
-
重载配置
systemctl daemon-reload
-
重启docker服务
systemctl restart docker
-
另一台服务器进行远程连接
docker -H [docker宿主机IP] [version]
-
注:不建议远程
安装容器编排工具
-
物料准备
-
加入命令解释
mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
给予执行权限
chmod +x /usr/local/bin/docker-compose
阿里云镜像仓库
# 阿里云镜像仓库个人版
# 登录
docker login --username=7********@qq.com crpi-5cstvhk3kva41idi.cn-qingdao.personal.cr.aliyuncs.com
# 编辑版本
docker tag [ImageId] crpi-5cstvhk3kva41idi.cn-qingdao.personal.cr.aliyuncs.com/[命名空间]/[镜像名]:[镜像版本号]
# 推送
docker push crpi-5cstvhk3kva41idi.cn-qingdao.personal.cr.aliyuncs.com/[命名空间]/[镜像名]:[镜像版本号]
# 拉取
docker pull crpi-5cstvhk3kva41idi.cn-qingdao.personal.cr.aliyuncs.com/[命名空间]/[镜像名]:[镜像版本号]
# 退出登录
docker logout crpi-5cstvhk3kva41idi.cn-qingdao.personal.cr.aliyuncs.com
# 我的推送脚本,私有镜像需要先登录
wget https://mengruo.top/htmls/container/sh/pushmirrors.sh
# 用法
sh pushmirrors.sh [本地镜像名] [远程镜像名,若忽略则与本地镜像名保持一致]
# 实例
sh pushmirrors.sh nginx:1.22.1# 我的拉取脚本,私有镜像需要先登录
wget https://mengruo.top/htmls/container/sh/pullmirrors.sh
# 用法
sh pullmirrors.sh [远程镜像名]
# 实例
sh pullmirrors.sh nginx:1.22.1
搭建私有镜像仓库
除了开通阿里云镜像仓库外,还可以在自己服务器搭建一个私有的镜像仓库,存放自己整理好的镜像,不仅更安全,拉取使用时也更快
-
物料准备
-
解压harbor包
tar -xzvf harbor-offline-installer-v2.12.2.tgz -C /usr/local/
-
复制一份配置文件
cp /usr/local/harbor/harbor.yml.tmpl /usr/local/harbor/harbor.yml
编辑配置文件
vim /usr/local/harbor/harbor.yml
编辑内容:
- 第5行,hostname改为自己的主机名(域名或IP地址)
- 第12行,如果有ssl证书,可以配置443端口,否侧将该端口注释
- 第47行,harbor_admin_password表示admin账户的默认密码
-
执行安装脚本
sh /usr/local/harbor/install.sh
安装完成后就可以访问网页了
停止harbor服务
docker-compose down
开启harbor服务
docker-compose up -d
-
如果是https访问,追加registry-mirrors属性值;如果是http访问,可以配置在insecure-registries属性里
vim /etc/docker/daemon.json
内容
{
"registry-mirrors": [
"https://docker.1panel.live",
"https://docker.fxxk.dedyn.io",
"https://hub.rat.dev",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu",
"https://mirror.aliyuncs.com",
"https://mirror.baidubce.com",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker..ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc",
"https://atomhub.openatom.cn",
"https://dockerpull.com",
"https地址"
],
"insecure-registries": ["http地址"]
}
-
重载配置
systemctl daemon-reload
-
重启docker服务
systemctl restart docker
-
上传本地镜像
-
登录到仓库
docker login [仓库服务器IP]
Username: admin
Password:
-
编辑镜像版本号
docker tag [镜像名称:版本号] [仓库服务器IP/项目/仓库:版本号]
-
上传镜像
docker push [仓库服务器IP/项目/仓库:版本号]
-
退出登录
docker logout [仓库服务器IP]
docker常用命令
如果映射端口后不生效,请开启数据包转发
vim /etc/sysctl.conf
添加
net.ipv4.ip_forward = 1
加载内核参数
sysctl -p
docker管理平台-dockerui
-
拉取镜像
docker pull uifd/ui-for-docker
运行一个容器
docker run -d -p 9000:9000 --name=dockerui --restart=unless-stopped -v /var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker
浏览器访问http://[服务器IP]:9000
docker管理平台-portainer
-
拉取镜像
docker pull portainer/portainer
运行一个容器
docker run -d -p 9000:9000 --name=portainer --restart=unless-stopped -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
浏览器访问http://[服务器IP]:9000
docker容器监控
-
常用命令
容器的动态进程
docker top [容器id或名称]
列出每个容器使用的内存、cpu等资源
docker stats
查看容器日志
docker logs -f [容器id或名称]
-
部署cAdvisor(采集所有容器资源利用率)(官方镜像google/cadvisor)(视图193)
docker run -d -p 8080:8080 --name=cadvisor
--restart=unless-stopped
-v /:/rootfs:ro
-v /var/run:/var/run:ro
-v /sys:/sys:ro
-v /var/lib/docker/:/var/lib/docker:ro
-v /dev/disk/:/dev/disk:ro
cadvisor
-
部署Prometheus(存储数据并提供搜索)
首次运行Prometheus,复制一份配置文件出来
docker run -d -p 9090:9090 --name=prometheus -v /srv/prometheus/:/etc/prometheus/ prometheus
docker cp prometheus:/etc/prometheus/prometheus.yml /srv/prometheus/
docker stop prometheus && docker rm prometheus
修改配置,主要修改scrape_configs部分
vim /srv/prometheus/prometheus.yml
scrape_configs:
- job_name: "cadvisor"
static_configs:
- targets: ["[IP地址]:8080"]
再次运行Prometheus
docker run -d -p 9090:9090 --name=prometheus --restart=unless-stopped -v /srv/prometheus/:/etc/prometheus/ prometheus
-
部署Grafana(数据可视化)
docker run -d -p 3000:3000 --name=grafana --restart=unless-stopped grafana
-
浏览器访问http://[IP地址]:3000
默认账号:admin,默认密码:admin
配置数据源connections>data sources,选中Prometheus
添加dashboards,导入193即可
-
其他监控
镜像列表
-
busybox
作用:简单shell盒子,集成了一部分常用的shell命令,通常用于测试服务连通性和启动容器前需要执行的简单工作
-
cadvisor
端口:8080
作用:采集容器数据,服务监控系列组件
-
centos
端口:无
作用:centos系统镜像,centos7
-
dockerui
端口:9000
作用:容器的可视化管理,官方镜像名是uifd/ui-for-docker
-
elasticsearch
端口:9200、9300
作用:日志存储及搜索。ELK统一日志平台架构的组成部分
使用示例
-
修改内存参数,内存过小可能无法启动
sysctl -w vm.max_map_count=262144
-
提前创建数据存放目录并授权
mkdir -p /srv/elasticsearch/data
chmod 777 /srv/elasticsearch/data
-
启动容器
docker run -d -p 9200:9200 -p 9300:9300 --name=elasticsearch
--restart=unless-stopped
-e discovery.type="single-node"
-e cluster.name="elasticsearch"
-e ES_JAVA_OPTS="-Xms512m -Xmx1024m"
-v /srv/elasticsearch/plugins:/usr/share/elasticsearch/plugins
-v /srv/elasticsearch/data:/usr/share/elasticsearch/data
elasticsearch:7.17.3
-
docker cp elasticsearch-analysis-ik-7.17.3.zip elasticsearch:/
docker exec -it elasticsearch /bin/bash
elasticsearch-plugin install file:///elasticsearch-analysis-ik-7.17.3.zip
exit
-
重启服务
docker restart elasticsearch
-
gitlab
端口:22、80
作用:代码远程仓库,版本控制
使用示例
-
更改ssh端口
vim /etc/ssh/sshd_config
Port 另选一个端口号
systemctl restart sshd
-
创建存储数据目录并配置环境变量
mkdir -p /srv/gitlab/{data,logs,config}
echo "export GITLAB_HOME=/srv/gitlab" >> /etc/profile
source /etc/profile
-
编辑容器编排文件
vim gitlab_compose.yml
-
启动gitlab服务
docker-compose -f gitlab_compose.yaml up -d
停止gitlab服务
docker-compose -f gitlab_compose.yaml down
查看日志
docker logs -f gitlab
-
浏览器访问http://192.168.112.163
默认用户名为root
查看默认密码
cat /srv/gitlab/config/initial_root_password | grep -i ^password
修改密码User settings > Password
-
grafana
端口:3000
作用:服务监控的可视化
-
kibana
端口:5601
作用:日志可视化。ELK统一日志平台架构的组成部分
使用示例
-
运行容器
docker run -d -p 5601:5601 --name=kibana
--restart=unless-stopped
--link elasticsearch:es
-e elasticsearch.hosts="http://es:9200"
kibana:7.17.3
-
浏览器访问http://[IP地址]:5601
-
kuboard
端口:80、443、10081
作用:k8s集群的可视化管理平台
使用示例
-
运行容器
docker run -d -p 80:80/tcp 443:443/tcp -p 10081:10081/tcp
--name=kuboard
--restart=unless-stopped
-e KUBOARD_ENDPOINT="http://[主机IP]:80"
-e KUBOARD_AGENT_SERVER_TCP_PORT="10081"
-v /srv/kuboard-data:/data
kuboard:v3.5.2.9
-
浏览器访问http://[主机IP]
用户名:admin
密码:Kuboard123
-
logstash
端口:9600
作用:日志中转、过滤。ELK统一日志平台架构的组成部分
使用示例
-
logstash.conf配置文件示例
mkdir -p /srv/logstash
vim /srv/logstash/logstash.conf
-
运行容器
docker run -d --name=logstash
--restart=unless-stopped
--link elasticsearch:es
-v /srv/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
logstash:7.17.3
-
如果需要,安装json_lines插件
docker exec -it logstash /bin/bash
logstash-plugin install logstash-codec-json_lines
exit
-
mall-admin
描述:开源电商项目mall的后端服务镜像
-
mall-auth
描述:开源电商项目mall的后端服务镜像
-
mall-gateway
描述:开源电商项目mall的后端服务镜像
-
mall-monitor
描述:开源电商项目mall的后端服务镜像
-
mall-portal
描述:开源电商项目mall的后端服务镜像
-
mall-search
描述:开源电商项目mall的后端服务镜像
-
minio(minio/minio)
已有版本
- RELEASE.2025-04-22T22-12-26Z
- RELEASE.2025-09-07T16-13-09Z
端口:9000、9001
作用:文件存储,相当于云oss
注:RELEASE.2025-05-24T17-08-30Z版本及之后的版本移除了web控制台的管理操作,仅保留桶的操作和文件的基础操作
使用示例
-
准备ssl证书,选择Apache类型,crt/key格式(需要改两个文件名)
- private.key
- public.crt
- server.name_chain.crt
将证书放到/srv/minio/cert文件夹下
-
运行容器
docker run -d -p 9000:9000 -p 9001:9001 --name=minio
--restart=always
-v /etc/localtime:/etc/localtime:ro
-v /srv/minio/data:/data
-v /srv/minio/cert:/root/.minio/certs
-e MINIO_ROOT_USER=minioadmin
-e MINIO_ROOT_PASSWORD=minioadmin
-e MINIO_DOMAIN="[server.name]"
-e MINIO_SERVER_URL="https://[server.name]:9000"
-e MINIO_BROWSER_REDIRECT_URL="https://[server.name]:9001"
minio:RELEASE.2025-04-22T22-12-26Z
server /data
--address ":9000" --console-address ":9001"
-
浏览器访问https://[server.name]:9001
初始用户名:minioadmin
初始密码:minioadmin
注:仅上述配置还不能用https对接api接口,目前未找到解决办法
-
mongo
端口:27017
作用:文档型数据库
使用示例
-
运行容器
docker run -d -p 27017:27017 --name=mongo
--restart=always
-v /srv/mongo/db:/data/db
mongo:4.4.29
-
mysql
端口:3306
作用:关系型数据库
使用示例
-
运行容器
docker run -d -p 3306:3306 --name=mysql
--restart=always
-v /srv/mysql/log:/var/log/mysql
-v /srv/mysql/data:/var/lib/mysql
-v /srv/mysql/conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=root
mysql:8.0.25
-
nacos(nacos/nacos-server)
端口:8848、9848
作用:分布式、微服务、模块化开发使用的服务注册中心
-
nginx
端口:80、443
作用:web网站,反向代理,负载均衡
使用示例
-
运行容器
docker run -d -p 80:80 --name=nginx
--restart=always
-v /var/www/html:/usr/share/nginx/html
-v /var/log/nginx:/var/log/nginx
nginx:1.22.1
-
复制配置文件
mkdir /usr/local/nginx
docker cp nginx:/etc/nginx /usr/local/nginx/conf/
-
移除容器
docker stop nginx && docker rm nginx
-
再次运行容器
docker run -d -p 80:80 -p 443:443 --name=nginx
--restart=always
-v /etc/localtime:/etc/localtime:ro
-v /var/www/html:/usr/share/nginx/html
-v /var/log/nginx:/var/log/nginx
-v /usr/local/nginx/conf:/etc/nginx
nginx:1.22.1
-
node-exporter
端口:9100
作用:采集主机数据,服务监控系列组件
-
openjdk
作用:java环境,一般用于制作java程序镜像时的底座
-
portainer
端口:9000
作用:容器的可视化管理
-
prometheus
端口:9090
作用:服务监控的数据存储
-
rabbitmq
端口:4369、5671、5672、15672、25672
作用:消息队列
使用示例
-
运行容器
docker run -d -p 5672:5672 -p 15672:15672 --name=rabbitmq
--restart=always
-v /srv/rabbitmq/data:/var/lib/rabbitmq
rabbitmq:3.7.15
-
启动管理控制台
docker exec -it rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_management
exit
-
浏览器访问http://[IP地址]:15672
初始用户名:guest
初始密码:guest
创建自己的账号并设置为管理员
创建项目用到的虚拟host
为账号配置该虚拟host的权限
-
redis
端口:6379
作用:非关系型数据库,内存缓存
使用示例
-
运行容器
docker run -d -p 6379:6379 --name=redis
--restart=always
-v /srv/redis/data:/data
redis:7.4.5 redis-server --appendonly yes
-
tomcat
端口:8080
作用:Java web应用服务