Linux环境下基于docker安装服务

docker 环境安装
## 安装所需的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2

#删除异常源
## rm -f /etc/yum.repos.d/docker-ce.repo
#使用官方源
## 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
## docker 阿里云加速控制台
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

## 更新yum缓存
yum makecache fast
yum -y install docker-ce

## 启动 Docker
systemctl start docker

## 设置开机启动
systemctl enable docker.service  

## 检查服务是否开机启动
systemctl is-enabled docker.service  
docker 常用命令
## 使用 history 命令查看镜像历史 --no-trunc 不省略显示
docker history --no-trunc docker.io/mysql:5.7


## 删除所有没有引用的镜像
docker rmi `docker images | grep none | awk '{print $3}'`
### 强制删除所有镜像
docker rmi -f $(docker images)

## 查询出容器的pid:
docker inspect --format "{{.State.Pid}}" $ContainerName(或者$ContainerId)

## 按名称删除容器
docker rm `docker ps -a | grep mall-* | awk '{print $1}'`

## 强制删除所有容器
docker rm -f $(docker ps -a -q)

## 修改容器的启动方式(例如:修改docker配置文件
## 重启docker时,docker 容器自动重启)
docker container update --restart=always $ContainerName

## 同步宿主机时间到容器
docker cp /etc/localtime $ContainerName(或者$ContainerId):/etc/

## 在宿主机查看docker使用cpu、内存、网络、io情况
docker stats $ContainerName(或者$ContainerId)

## 查看Docker磁盘使用情况
docker system df -v
- 最后一列RECLAIMABLE,是指可清理的

## 使用root帐号进入Docker容器内部
docker exec -it --user root $ContainerName /bin/bash

## 停止
systemctl stop docker

## 重新加载某个服务的配置文件
systemctl daemon-reload 
## 重启
systemctl restart docker

国内加速地址有:
Docker中国区官方镜像
https://registry.docker-cn.com
网易
http://hub-mirror.c.163.com
ustc
https://docker.mirrors.ustc.edu.cn
中国科技大学
https://docker.mirrors.ustc.edu.cn
阿里云容器 服务
https://cr.console.aliyun.com/
首页点击“创建我的容器镜像” 得到一个专属的镜像加速地址,类似于“https://xx.mirror.aliyuncs.com”

docker daemon.json 文件

{
	"registry-mirrors": ["https://t03zofco.mirror.aliyuncs.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com"],
	"debug": true,
	"experimental": false
}
mysql
## 下载
docker pull mysql:5.7

## 启动
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root  \
-d mysql:5.7

## 进入运行MySQL的docker容器:
docker exec -it mysql /bin/bash
## 使用MySQL命令打开客户端
mysql -uroot -proot --default-character-set=utf8
  • 参数说明
  • -p 3306:3306:将容器的3306端口映射到主机的3306端口
  • -v /mydata/mysql/conf:/etc/mysql:将配置文件夹/etc/mysql挂在到主机/mydata/mysql/conf
  • -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
  • -v /mydata/mysql/data:/var/lib/mysql/:将数据文件夹挂载到主机
  • -e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码

其他命令

## 启动已经被停止的容器 mysql
docker start mysql
## 重启容器mysql
docker restart mysql
## 删除容器
docker rm mysql
## 进入容器
docker exec -it mysql /bin/bash

## 列出正在运行的容器
docker ps 
## 显示所有的容器,包括未运行的
docker ps -a
## 查看日志
docker logs mysql
## 跟踪日志输出
docker logs -f mysql

## 显示容器使用的系统资源
 docker stats --no-stream
## 查看mysql容器的详细信息
docker inspect mysql

## 删除镜像
docker rmi redis:latest
redis
## 下载
docker pull redis
## 更改 redis tag
docker tag redis:latest redis:6
## 启动
docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-d redis:6  redis-server --appendonly yes
  • appendonly yes #redis持久化(可选)
nginx
## 下载
docker pull nginx:1.10

## 启动 先运行一次容器(为了拷贝配置文件)
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx  \
-d nginx:1.10

## 将容器内的配置文件拷贝到指定目录:
docker container cp nginx:/etc/nginx /mydata/nginx/

## 进入目录
cd /mydata/nginx/

## 重名名
mv nginx conf

## 终止并删除容器
docker stop nginx
docker rm nginx

## 启动nginx
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx  \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10

## 创建文件,并访问
cd /mydata/nginx/html
touch index.html
echo "zhang hello" >> index.html
http://192.168.111.131/index.html
RabbitMQ
## 下载
docker pull rabbitmq:3.7.15

## 启动RabbitMQ服务
docker run -p 5672:5672 -p 15672:15672 --name rabbitmq \
-d rabbitmq:3.7.15

## 进入容器并开启管理功能
docker exec -it rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_management

## 访问地址
http://192.168.111.131:15672/
账号:guest
密码:guest
Elasticsearch
## 下载
docker pull elasticsearch:7.6.2

## 修改虚拟内存区域大小,否则会因为过小而无法启动
sysctl -w vm.max_map_count=262144

## 启动Elasticsearch服务
docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
-e "discovery.type=single-node" \
-e "cluster.name=elasticsearch" \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-d elasticsearch:7.6.2

## /usr/share/elasticsearch/data目录没有访问权限,只需要修改/mydata/elasticsearch/data目录的权限,再重新启动即可
chmod 777 /mydata/elasticsearch/data/
docker restart elasticsearch

## 安装中文分词器IKAnalyzer,并重新启动:
docker exec -it elasticsearch /bin/bash
#此命令需要在容器中运行
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
## 重新启动
docker restart elasticsearch

## 访问地址
http://192.168.111.131:9200/
ES Head
# 下载
git clone https://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head/
npm install -g grunt-cli
npm install
npm run start

# elasticsearch.yml配置文件修改
http.cors.enabled: true
http.cors.allow-origin: "*"
Logstash
## 下载
docker pull logstash:7.6.2

## 修改配置
修改Logstash的配置文件logstash.conf中output节点下的Elasticsearch连接地址为es:9200,
配置文件地址:https://github.com/macrozheng/mall/blob/master/document/elk/logstash.conf

output {
  elasticsearch {
    hosts => "es:9200"
    index => "mall-%{type}-%{+YYYY.MM.dd}"
  }
}

## 创建/mydata/logstash目录,并将Logstash的配置文件logstash.conf拷贝到该目录
mkdir /mydata/logstash
## 上传 logstash.conf文件

## 启动
docker run --name logstash -p 4560:4560 -p 4561:4561 -p 4562:4562 -p 4563:4563 \
--link elasticsearch:es \
-v /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
-d logstash:7.6.2

## 进入容器内部,安装json_lines插件
logstash-plugin install logstash-codec-json_lines
  • 把logstash容器和名为elasticsearch的容器链接起来,其中 elasticsearch:es ,es是elasticsearch容器在link下的别名(alias)

    • --link elasticsearch:es

    测试容器是否相同

    docker exec -it logstash  /bin/bash
    ping es
    

    容器相互通信时,docker通过DNS自动解析,可以查看容器的 /etc/hosts,有别名es对应的ip地址

    --link 参考文章:https://www.jianshu.com/p/21d66ca6115e

  • Logstash 插件地址

    插件获取地址:
    https://github.com/logstash-plugins 
    
    在线安装:
    /plugin install  logstash-input-jdbc
    
    升级插件:
    /plugin update logstash-input-jdbc
    
    卸载插件:
    /plugin uninstall  logstash-input-jdbc
    
    淘宝源地址: https://ruby.taobao.org
    

    参考地址:https://www.cnblogs.com/chadiandianwenrou/p/6478940.html

  • 如果你的json文件比较长,需要换行的话,那么久得用到json_lines插件了

Kibana
## 下载
docker pull kibana:7.6.2

## 启动
docker run --name kibana -p 5601:5601 \
--link elasticsearch:es \
-e "elasticsearch.hosts=http://es:9200" \
-d kibana:7.6.2

## 访问地址
http://192.168.111.131:5601/
MongoDB
## 下载
docker pull mongo:4.2.5

## 启动
docker run -p 27017:27017 --name mongo \
-v /mydata/mongo/db:/data/db \
-d mongo:4.2.5
Docker Registry
## 下载
docker pull registry:2

## 启动
docker run -d -p 5000:5000 --restart=always --name registry2 -v /mydata/docker-registry:/var/lib/registry -e REGISTRY_STORAGE_DELETE_ENABLED=true registry:2

## 访问:
http://192.168.111.131:5000/v2/
Docker开启远程API
## 修改docker.service文件
vi /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
让Docker支持http上传镜像
###  192.168.111.131:5000 指:私有镜像仓库Docker Registry
echo '{ "insecure-registries":["192.168.111.131:5000"] }' > /etc/docker/daemon.json

## 修改配置后需要使用如下命令使配置生效
systemctl daemon-reload

开启防火墙的Docker构建端口

firewall-cmd --zone=public --add-port=2375/tcp --permanent
firewall-cmd --reload
docker mall-start.sh
docker stop mysql
docker start mysql

docker stop redis
docker start redis

docker stop nginx
docker start nginx


docker stop rabbitmq
docker start rabbitmq

docker stop elasticsearch
docker start elasticsearch

docker stop logstash
docker start logstash


docker stop kibana
docker start kibana


docker stop mongo
docker start mongo
参考

linux-docker

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值