使用Docker安装开发常用服务

概要

Docker 是一个开源的容器化平台,它允许开发者将应用程序及其所有依赖项打包到一个标准化的单元(称为容器)中。这使得应用能够在任何支持Docker 的环境中快速、可靠地运行,保证了环境的一致性。简单来说,Docker 提供了一个“构建一次,到处运行”的解决方案,解决了“在我机器上能跑,其他地方却不行”的难题。

整体架构流程

  1. 拉取软件服务镜像包
  2. 通过镜像包创建容器
  3. 启动动容器

技术名词解释

查询xxx镜像
docker search xxx
拉取xxx镜像
docker pull xxx
打印当前docker服务拥有的镜像包
docker images
打印正在运行的容器
docker ps
显示当前docker服务的所有容器
docker ps -a
停止
docker stop 【容器名称】
启动
docker start 【容器名称】
查看容器状态
docker status 【容器名称】

技术细节

创建容器

docker run -itd -p port:port -v /data:/var/data --name 【容器名称】 --restart=always 【镜像名称】

-d 后台启动
-it 启动
-p 端口号
-v 目录映射

进入容器内部环境

docker exec -it 【容器名称】 /bin/bash

容器添加启动策略

docker container update --restart=【容器策略】 容器名称

no 容器退出时不重启容器
on-failure 只有在非零状态退出时才重新启动容器
–restart=on-failure:【重启次数】
always 无论退出状态如何都重启容器

Linux系统服务安装

docker服务

  1. yum 包更新到最新
    yum update
  2. 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
    yum install -y yum-utils device-mapper-persistent-data lvm2
  3. 设置yum源为阿里云
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  4. 安装docker
    yum install docker-ce
  5. 安装后查看docker版本
    docker -v
  6. 设置ustc的镜像
    6.1 创建docker配置文件的目录
    mkdir /etc/docker
    cd /etc/docker/
    6.2 创建文件并添加镜像地址
    vim daemon.json
    {
    “registry-mirrors”: [“https://docker.mirrors.ustc.edu.cn”]
    }

MySQL服务

docker search mysql
docker pull mysql
docker run -di --name=mysqld -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --restart=always mysql
docker ps

Redis服务

docker pull redis
docker run -di --name=myredis -p 6379:6379 --restart=always redis --requirepass tengxunyunredis@001
# redis设置密码
## 方式一
docker run -di --name=myredis -p 6379:6379 --restart=always redis --requirepass 123456
## 方式二
#1.进入redis的容器
docker exec -it 容器ID /bin/bash
#2.进入redis目录
cd /usr/local/bin
#3.运行命令:
redis-cli
#4.查看现有的redis密码:
config get requirepass
#5.设置redis密码
config set requirepass 密码
## 方式三
1.找到redis.config配置文件
2.902行,设置requirpass 密码
3.重启redis

FastDFS服务

docker search fastdfs
docker pull delron/fastdfs
## 构建tracker
docker run -di --name=tracker --network=host -v /mydata/fastdfs/tracker:/var/fdfs --restart=always delron/fastdfs tracker
## 构建storage
docker run -di --name=storage --network=host -e TRACKER_SERVER=43.138.180.95:22122 -v /mydata/fastdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
## 默认情况下在Storage服务中是帮我们安装了Nginx服务的,相关的端口为:
## 服务 默认端口
## tracker 22122
## storage 23000
## Nginx 8888

## 方式二:(不同镜像)
【tracker】
docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh
修改两个端口号: 8080 22122
/etc/nginx/conf/nginx.conf
/etc/fdfs/client.conf
/etc/fdfs/tracker.conf
##修改文件,上传文件的端口后默认8080(可改可不改)
vim /etc/nginx/conf/nginx.conf
##修改文件,tracker服务器端口后默认22122(可改可不改)
vim /etc/fdfs/client.conf
tracker_server=192.168.200.11:22122
http.tracker_server_port=8080
##tracker服务器配置文件
vim /etc/fdfs/tracker.conf
【storage】
docker run -d --name storage --net=host -e TRACKER_IP=192.168.200.11:22122 -v /mydata/fastdfs/storage/image:/data/fast_data -e GROUP_NAME=group1 morunchang/fastdfs sh storage.sh
docker exec -it storage /bin/bash
vim /etc/nginx/conf/nginx.conf
vim /etc/fdfs/client.conf
vim /etc/fdfs/storage.conf
#防止用户删除照片后再次出现
docker exec -it storage /bin/bash
vim /etc/nginx/conf/nginx.conf
add_header Cache-Control no-store;
exit
docker restart storage

RabbitMQ服务

docker search rabbitmq
docker pull rabbitmq
docker run -d --hostname rabbitmq --name rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -e RABBITMQ_DEFAULT_VHOST=my_vhost -p 15672:15672 -p 5672:5672 rabbitmq
docker exec -it yl_rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_management
docker update 23365f7f39b2 --restart=always
备注:23365f7f39b2 为RabbitMq容器ID
修改配置文件:
vim /usr/lib/sysctl.d/00-system.conf
追加:
net.ipv4.ip_forward=1
接着重启网络:
systemctl restart network

ElasticSearch服务

docker search elasticsearch
docker pull elasticsearch
docker run --name es-01 -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch
# -name  定义容器名称
# -d  以后台方式运行
# -p  端口号映射  -p 主机端口号:容器端口号(ES端口号)
# -e  ES的配置,命令表示以单节点方式启动

docker run --name es-01 -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch
# -Xms 表示最小内存
# -Xmx 表示最大内存

Kibana服务

docker pull kibana:7.6.2
#运行kibana 注意IP一定不要写错
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://自己的elasticsearchIP地址:9200 -p 5601:5601 -d kibana:7.6.2
#进入容器
docker exec -it 容器ID /bin/sh
#使用vi 修改文件内容
vi /usr/share/kibana/config/kibana.yml 
server.name: kibana
server.host: "0"
#elasticsearch.hosts: [ "http://elasticsearch:9200" ]
elasticsearch.hosts: [ "http://自己的elasticsearch的IP:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
#设置kibana中文显示
i18n.locale: zh-CN

MongDB服务

#查看mongo本版
docker search mongo
#拉取镜像
docker pull mongodb:latest
#查看镜像
docker image
#运行容器
docker run -d -p 27017:27017 -v mongo_configdb:/data/configdb -v mongo_db:/data/db --name mongo docker.io/mongo --auth
#参数说明:
-p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过宿主机 ip:27017 访问到 mongo 的服务。
--auth:需要密码才能访问容器服务。
#使用以下命令添加用户和设置密码,并且尝试连接
docker exec -it mongo mongo admin
# 创建一个名为 admin,密码为 123456 的用户。
>db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
# 尝试使用上面创建的用户信息进行连接
> db.auth('admin', '123456')
#注意
MongoDB 6.0 及以上版本使用以下命令
docker exec -it mongo mongosh admin
#创建库
use test
#创建test库下的用户
db.createUser({ user: 'test', pwd: '123456', roles: [{ role: "readWrite", db: "test" }] });

小结

Docker 的核心优势可以精简总结为以下几点:
环境一致性
消除了“在我这能跑,为啥线上不行”的问题。容器确保了从开发、测试到生产环境的绝对一致。

高效轻量
容器共享主机系统内核,无需像虚拟机一样运行完整操作系统,因此启动秒级、资源占用极低、性能更优。

持续部署与迁移
一次构建,随处运行。打包好的镜像可以在任何支持 Docker 的平台上(物理机、云)快速部署和扩展。

简单说就是:环境标准化、资源利用高、部署流程快

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图个吉利儿

欢迎大家一起学习!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值