Shell脚本一键部署Docker(包含内网环境)

在线环境最新版Docker部署脚本

#!/bin/bash
#需要在线环境


yum install -y yum-utils >/dev/null 2>&1
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo >/dev/null 2>&1
yum install -y docker-ce >/dev/null 2>&1
systemctl enable docker
systemctl start docker
mkdir -p /etc/docker

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://0tzubha7.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
systemctl status docker >/dev/null 2>&1
return_code=$?

if [ $return_code -eq 0 ]; then
    echo "恭喜!Docker部署完成。"
else
    echo "Docker部署出错,请手动排查。"
fi


内网离线环境部署脚本 

内网部署脚本,需要在tar包所在目录下执行改脚本

#!/bin/bash
#tar包需要在相对路径下
#Docker tar包下载地址:https://download.docker.com/linux/static/stable/x86_64/

tar -zxvf docker*.tgz -C /usr/local
cd /usr/local
cp docker/* /usr/bin	
touch /etc/systemd/system/docker.socke
touch /etc/systemd/system/docker.service
touch /etc/systemd/system/containerd.service

tee /etc/systemd/system/docker.socket >/dev/null <<EOF
[Unit]
Description=Docker Socket for the API
PartOf=docker.service

[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target
EOF


tee /etc/systemd/system/docker.service >/dev/null <<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target

[Service]
Type=notify

ExecStart=/usr/bin/dockerd --registry-mirror=http://3cda3ca9.m.daocloud.io -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375

ExecReload=/bin/kill -s HUP $MAINPID

LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity


TimeoutStartSec=0

Delegate=yes

KillMode=process

[Install]
WantedBy=multi-user.target
EOF


#这里换了个方法,用tee会报错
cat << EOF | sudo tee /etc/systemd/system/containerd.service > /dev/null
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd

Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload 
groupadd docker
systemctl start docker
systemctl enable docker.service

systemctl status docker >/dev/null 2>&1
return_code=$?

if [ $return_code -eq 0 ]; then
    echo "恭喜!Docker部署完成。"
	rm -rf /root/docker*.tgz
else
    echo "Docker部署出错,请手动排查。"
fi
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用docker-compose.yml文件和shell脚本可以实现一键部署应用的思路如下: 首先,我们需要编写docker-compose.yml文件。这个文件是用来定义应用的服务的配置和依赖关系的。我们可以在该文件中指定要运行的容器,每个容器的配置以及它们之间的网络和依赖关系。比如,我们可以定义一个web服务容器,一个数据库容器和一个缓存容器等等。在每个服务的配置中,我们可以指定容器镜像、端口映射、环境变量等。 接下来,我们可以编写一个shell脚本来自动化部署过程。脚本可以先检查是否已安装dockerdocker-compose工具,如果没有安装则自动安装它们。然后,脚本可以调用docker-compose命令来启动、停止或重启我们在docker-compose.yml文件中定义的服务。我们还可以在脚本中添加一些其他的命令,如清理旧的容器或镜像、查看容器状态等。 最后,我们可以将docker-compose.yml文件和shell脚本打包成一个压缩文件,方便在其他环境中使用。当我们想要在另一台机器或另一个环境部署应用时,只需将该压缩文件传输到目标机器,并解压缩。然后,在目标机器上运行shell脚本,它将自动安装dockerdocker-compose,并根据docker-compose.yml文件中的配置启动应用的容器。 使用docker-compose.yml文件和shell脚本可以大大简化应用的部署过程。它们提供了一种可重复、可扩展的方式来部署应用,减少了手动操作的错误和时间。同时,它们也提供了一种标准化的部署方式,方便团队协作和维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值