一键离线部署Docker和Docker-compose、ELK(ik分词)、Nginx

一键离线部署Docker和Docker-compose、ELK、Nginx

一键部署Docker和Docker-compose的文件结构

复制docker-shell								#文件目录
│  start.sh									#一键启动脚本,依次运行docker安装、镜像导入脚本等
│
├─docker-images								#所有需要导入的镜像
│      elk.tar								#ELK镜像
│      load-images.sh						#一键导入所有镜像的脚本
│      nginx.tar							#nginx镜像
│
└─docker-install							#docker docker-compose 一键安装文件夹(安装包+脚本)
        daemon.json
        docker-18.06.3-ce.tgz				#docker离线安装包
        docker-compose-Linux-x86_64			#docker-compose离线安装包
        docker.service
        install.sh							#一键安装docker docker-compose的脚本
        LinuxAndUbuntu.jpg					#Ubuntu无法正常安装的命令替代方案截图
        uninstall.sh						#一键卸载docker的脚本
        update.sh							#一键更新docker更新的脚本
        安装说明文档.txt

一键安装docker和docker-compose的脚本

install.sh

#!/bin/sh
echo "################################################################"
echo "欢迎安装***系统"
echo "################################################################"
echo "即将执行初始化任务"
echo '创建docker相关目录'
mkdir -p /etc/docker
cp daemon.json /etc/docker
echo '解压tar包...'
tar -xvf ./docker-18.06.3-ce.tgz
echo '将docker目录移到/usr/bin目录下...'
cp -f ./docker/* /usr/bin
echo '将docker.service 移到/etc/systemd/system/ 目录...'
cp -f ./docker.service /etc/systemd/system
echo '添加文件权限...'
chmod +x /etc/systemd/system/docker.service
echo '重新加载配置文件...'
systemctl daemon-reload
echo '启动docker...'
systemctl start docker
echo '设置开机自启...'
systemctl enable docker.service
if ! docker -v; then
echo "docker 安装失败..."
exit -1
fi
echo 'docker安装成功...'
#============ make docker-compose ===========
echo '安装docker-compose...'
cp -f docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
echo '添加文件执行权限...'
chmod +x /usr/local/bin/docker-compose
if ! docker-compose -v; then
echo "docker-compose 安装失败..."
exit -1
fi
echo 'docker-compose 安装成功...'

uninstall.sh

#!/bin/sh
echo '删除docker所有容器'
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
echo '删除docker所有镜像'
docker rmi -f $(docker images -q)
echo '删除docker.service...'
rm -rf /etc/systemd/system/docker.service
echo '删除docker文件...'
rm -rf /usr/bin/docker*
echo '重新加载配置文件'
systemctl daemon-reload
echo '卸载成功...'

load-images.sh

#!/bin/sh
echo "################################################################"
echo "欢迎安装采集系统"
echo "################################################################"
echo "即将执行初始化任务"
echo '创建docker相关目录'

# 导入docker镜像
echo "开始加载基础docker镜像..."
docker load -i ./nginx.tar
echo "开始加载基础elk镜像..."
docker load -i ./elk_ik.tar
command docker rmi $(docker images -aq -f dangling=true)
echo "docker基础镜像加载完毕"
echo "基础服务安装完成"

run-docker-compose.sh

#一键运行docker-compose
echo "****************开始运行docker-compose*********"
echo "==============================================="
echo "****************开始运行nginx******************"
docker-compose -f nginx.yml up -d
echo "****************nginx启动成功*******************"
echo "****************开始安装elk*********************"
echo "临时调整系统最大存储······"
sysctl -w vm.max_map_count=262144
echo "调整成功······"
echo "开始运行elk······"
docker-compose -f elk.yml up -d
echo "*****************elk启动成功********************"

start.sh

#!/bin/bash
echo "################################################################"
echo "欢迎使用一键启动脚本"
echo "################################################################"
echo "即将执行初始化任务"
echo "**********开始安装docker、docker-compose基础环境****************"
cd ./docker-install
sh install.sh
cd ..
echo "**********开始导入基础镜像***************************************"
cd ./docker-images
sh load-images.sh
echo "**********开始执行基础docker-compose******************************"
cd ..
cd ./run-docker-compose
sh run-docker-compose.sh

其他相关命令

导出镜像/容器

docker save #ID or #Name
docker export #ID or #Name
  1. 对于Docker Save方法,会保存该镜像的所有历史记录
  2. 对于Docker Export 方法,不会保留历史记录,即没有commit历史
  3. docker save保存的是镜像(image),docker export保存的是容器(container)
  4. docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像
  5. docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称

导出镜像

docker save -o <保存路径> <镜像名称:标签>
docker save -o ./ubuntu18.tar ubuntu:18.04  #示例
docker save -o nginx.tar nginx:latest	#示例
#其中-o和>表示输出到文件,nginx.tar为目标文件,nginx:latest是源镜像名(name:tag)

导入镜像

docker load [options]
docker load -i nginx.tar	#示例
docker load < nginx.tar		#示例
#其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息

导出容器

docker export [options] container
docker export -o nginx-test.tar nginx-test	#示例
docker export #ID or #Name > /home/export.tar	示例
#其中-o表示输出到文件,nginx-test.tar为目标文件,nginx-test是源容器名(name)

导入容器

docker import [options] file|URL|- [REPOSITORY[:TAG]]
docker import nginx-test.tar nginx:imp	#示例
cat nginx-test.tar | docker import – nginx:imp

将容器打包成镜像

命令

docker commit [-m="提交的描述信息"] [-a="创建者"] 容器名称|容器ID 生成的镜像名[:标签名]

解释

-m= : 为镜像添加描述信息
-a= : 为镜像添加创建者信息
容器名称|容器ID : 当前要被打包的容器名称或容器ID
生成的镜像名[:标签名] : 指定镜像名称或标签名称

示例

docker commit -m "配置了ik分词器的elk镜像" cfea65a4331b elk_ik:1.0

gitee项目地址

https://gitee.com/ajun816/docker-script.git

posted @   AJun816  阅读(633)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示