curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker ${USER}
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://tmjs11dx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
cat > portainer.sh << "EOF"
#!/bin/bash
dir=$(pwd)
name=$(basename -s .sh $0)
docker run -itd \
--name $name \
--restart always \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/local/docker/portainer/data:/data \
portainer/portainer
EOF
-v /var/run/docker.sock:/var/run/docker.sock
不能修改成其他路径cat > backuppc.sh << "EOF"
#!/bin/bash
dir=$(pwd)
name=$(basename -s .sh $0)
docker run -itd \
--name $name \
--restart unless-stopped \
-p 8080:8080 \
-e TZ="Asia/Shanghai" \
--add-host schedule:192.168.99.251 \
--add-host zabbix:192.168.99.254 \
--add-host pve:192.168.88.254 \
--add-host db_server:192.168.99.252 \
--add-host fangke:192.168.99.253 \
-v $dir/$name/etc/backuppc:/etc/backuppc \
-v $dir/$name/home/backuppc:/home/backuppc \
-v $dir/$name/data/backuppc:/data/backuppc \
-v $dir/$name/log:/data/backuppc/log \
adferrand/backuppc
EOF
修改服务器设置--备份设置--客户机查找:PingMaxMsec
ssh-copy-id
上传公钥到客户机的root
用户内,测试cat > syncthing.sh << "EOF"
#!/bin/bash
dir=$(pwd)
name=$(basename -s .sh $0)
docker run -itd \
--name=$name \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-e UMASK_SET=022 \
-p 8008:8384 \
-p 8010:22000 \
-p 21027:21027/udp \
-v $dir/$name/syncthing:/var/syncthing \
--restart unless-stopped \
syncthing/syncthing
EOF
参数 | 说明 |
---|---|
-p 8384 | 应用程序WebUI管理端口 |
-p 22000 | 监听端口 |
-p 21027/udp | 协议发现 |
-e PUID=1000 | 对于UserID - 请参阅下面的解释 |
-e PGID=1000 | 对于GroupID - 请参阅下面的解释 |
-e TZ=Asia/Shanghai | 指定使用亚洲/上海 的时区。 |
-e UMASK_SET=022 | Umask设置 |
-v /config | 配置文件。 |
-v /data1 | 数据1 |
-v /data2 | 数据2 |
unless-stopped | 不管退出状态码是什么始终重启容器,不过当daemon启动时,如果容器之前已经为停止状态,不要尝试启动它 |
命令 | 功能 |
---|---|
docker pull linuxserver/syncthing | 更新镜像 |
start "Syncthing" syncthing.exe -no-console -no-browser
cat > firefox.sh << "EOF"
#!/bin/bash
dir=$(pwd)
name=$(basename -s .sh $0)
docker run -d \
--name=$name \
-e ENABLE_CJK_FONT=1 \
-v $dir/$name:/config:rw \
-p 5800:5800 \
-p 5900:5900 \
--shm-size 2g \
jlesage/firefox
EOF
cat > plex.sh << "EOF"
#!/bin/bash
dir=$(pwd)
name=$(basename -s .sh $0)
docker run -itd \
--name=$name \
--net=host \
-e PUID=1000 \
-e PGID=1000 \
-e VERSION=docker \
-v $dir/$name/config:/config \
-v $dir/$name/tvseries:/data/tvshows \
-v $dir/$name/movies:/data/movies \
-v $dir/$name/transcode:/transcode \
--restart unless-stopped \
linuxserver/plex
EOF
cat > embyserver.sh << "EOF"
#!/bin/bash
dir=$(pwd)
name=$(basename -s .sh $0)
docker run -itd \
--name $name \
--restart unless-stopped \
--volume $dir/$name/config:/config \
--device /dev/dri:/dev/dri \
-p 8096:8096 \
-p 8920:8920 \
--env UID=1000 \
--env GID=100 \
--env GIDLIST=100 \
emby/embyserver:latest
EOF
访问
生成部署脚本
cat > pure-ftpd.sh << "EOF"
#!/bin/bash
dir=$(pwd)
name=$(basename -s .sh $0)
docker run -itd \
--name=$name \
--net=host \
-p 21:21 \
-p 30000-30009:30000-30009 \
-e FTP_USER_NAME=tftp \
-e FTP_USER_PASS=China123 \
-e FTP_USER_HOME=/home/tftp \
-e "PUBLICHOST=localhost" \
-v $dir/$name/tftp:/home/tftp \
--restart=always \
stilliard/pure-ftpd
EOF
变量 | 变量值 |
---|---|
容器名 | ftpd-server |
端口号 | 21;30000-300009 |
FTP用户 | tftp |
tftp用户的密码 | Password123 |
FTP用户的容器目录 | /home/tftp |
FTP用户映射到宿主机的目录 | /home/tftp |
网络模式 | 主机 |
重启模式 | 总是 |
镜像名 | stilliard/pure-ftpd |
访问
创建mysql数据库容器
2. root密码:China123
3. 创建数据库:nextcloud
4. 创建用户:nextcloud 密码:China123
2. 生成部署脚本
cat > mysql.sh << "EOF"
#!/bin/bash
dir=$(pwd)
name=$(basename -s .sh $0)
docker run -itd \
-p 3306:3306 \
--name $name \
--restart=always \
-v $dir/$name/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=China123 \
-e MYSQL_DATABASE=nextcloud \
-e MYSQL_USER=nextcloud \
-e MYSQL_PASSWORD=China123 \
mysql:latest
EOF
创建nextcloud容器
cat > nextcloud.sh << "EOF"
#!/bin/bash
dir=$(pwd)
name=$(basename -s .sh $0)
# 如果没有目录,就先临时创建一个容器,将容器里的apache配置文件和nextcloud文件复制出来,再删除容器
if [ -d $dir/$name ]; then
echo "$dir/$name is exsist"
else
mkdir $dir/$name
#第一次创建容器
docker run -d \
--name=$name \
--restart=always \
-v /tmp/$name/nextcloud:/var/www/html \
nextcloud
#复制出apache2目录
docker cp $name:/etc/apache2 $dir/$name
docker stop nextcloud
docker rm nextcloud
mv /tmp/$name/nextcloud /$dir/$name
fi
# 再次创建容器,映射指定目录,实现数据持久化
docker run -itd \
--name=$name \
--restart=always \
-p 80:80 \
-p 8080:8080 \
-v $dir/$name/nextcloud:/var/www/html \
-v $dir/$name/nextcloud/data:/var/www/html/data \
-v $dir/$name/nextcloud/config:/var/www/html/config \
-v $dir/$name/nextcloud/apps:/var/www/html/apps \
-v $dir/$name/nextcloud/theming:/var/www/html/theming \
-v $dir/$name/nextcloud/custom_apps:/var/www/html/custom_apps \
-v $dir/$name/apache2:/etc/apache2 \
nextcloud
EOF
初始化nextcloud
安装onlyoffice协同办公插件
使用docker部署onlyoffice
生成部署脚本
cat > onlyoffice.sh << "EOF"
#!/bin/bash
dir=$(pwd)
name=$(basename -s .sh $0)
docker run -itd \
-p 8087:80 \
--name $name \
--restart=always \
-v $dir/$name/data:/var/lib/mysql \
-v $dir/$name/DocumentServer/logs:/var/log/onlyoffice \
-v $dir/$name/DocumentServer/data:/var/www/onlyoffice/Data \
onlyoffice/documentserver
EOF
在Nextcloud中安装onlyoffice插件
修改NextCloud的配置文件config/config.php加入一行内容
'allow_local_remote_servers' => true,
设置onlyoffice插件
cat > httpd.sh << "EOF"
#!/bin/bash
dir=$(pwd)
name=$(basename -s .sh $0)
# 如果没有目录,就先临时创建一个容器,将容器里的apache配置文件/usr/local/apache2复制出来,再删除容器
if [ -d $dir/$name ]; then
echo "$dir/$name is exsist"
else
mkdir $dir/$name
#第一次创建容器
docker run -d \
--name=$name \
--restart=always \
httpd
#复制出apache2目录
rm -rf /tmp/apache2
docker cp $name:/usr/local/apache2 /tmp/apache2
docker stop $name
docker rm $name
mv /tmp/apache2/* /$dir/$name
fi
# 再次创建容器,映射指定目录,实现数据持久化
docker run -itd \
--name=$name \
--restart=always \
-p 80:80 \
-v $dir/$name:/usr/local/apache2 \
httpd
EOF
cat - << REALEND > filebrowser.sh
#!/bin/bash
dir=$(pwd)
name=$(basename -s .sh $0)
if [ -f $dir/$name/.filebrowser.json ]; then
echo "$dir/$name/.filebrowser.json is exsist"
else
mkdir -p $dir/$name
cat > $dir/$name/.filebrowser.json << EOF
{
"port": 80,
"baseURL": "",
"address": "",
"log": "stdout",
"database": "/data/database.db",
"root": "/srv"
}
EOF
fi
docker run -itd \
--name=$name \
--restart=always \
-p 8090:80 \
-v $dir/$name/.filebrowser.json:/.filebrowser.json \
-v $dir/$name/data:/data \
-v $dir/$name/download:/srv \
filebrowser/filebrowser
REALEND
cat > hexo.sh << "EOF"
#!/bin/bash
dir=$(pwd)
name=$(basename -s .sh $0)
docker run -itd \
--name=$name \
--restart unless-stopped \
-e HEXO_SERVER_PORT=4000 \
-v $dir/$name:/app \
-v /etc/localtime:/etc/localtime \
-p 4000:4000 \
spurin/hexo
EOF
功能 | 方法 |
---|---|
访问 | http://IP:4000 |
管理 | http://IP:4000/admin(需要在容器内安装插件:npm install hexo-admin --save 并重启docker) |
进入容器 | docker exec -it hexo bash |
克隆主题 | git clone https://github.com/ppoffice/hexo-theme-hueman.git themes/hueman |
在app文件夹中更新_config.yml,并相应地更改主题 | theme: hueman |
启用默认配置 | mv themes/hueman/_config.yml.example themes/hueman/_config.yml |
生成内容 | docker exec -it hexo hexo generate |
部署生成的内容 | docker exec -it hexo hexo deploy |