文章目录
- 使用说明
- docker官方一键安装脚本
- 使普通用户可以使用Docker
- 使用国内加速器
- Portainer 容器管理
-
- 常用服务器
- 备份同步
- 使用docker部署backuppc文件备份
-
- 使用docker部署syncthing文件同步
- 使用docker部署firefox浏览器
- NAS 影音服务器
- 使用docker部署plex影音服务器
-
- 使用docker部署emby影音服务器
-
- FTP服务器
- 使用Docker部署FTP服务器Pure-ftpd(暂时不能用)
- WEB 服务器
- 使用Docker部署NextCloud云盘+mysql数据库+onlyoffice协同办公
- 使用Docker部署Apache服务器(Web网站)
- 使用Docker部署filebrowser 文件上传下载
- Hexo 个人博客
-
使用说明
- 将脚本保存到指定的目录
- 使用bash 文件名,运行脚本,根据需要是否需要使用sudo
- 脚本将在当前目录创建一个目录,名字为脚本主文件名
- 持久化目录一般为当前目录下的主文件名目录
docker官方一键安装脚本
- 官方github脚本安装
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl start docker
sudo systemctl enable docker
使普通用户可以使用Docker
- 默认Root才可以使用Docker,如果想要使用普通用户可以使用Docker,需要把用户加入到Docker组
- 命令
sudo usermod -aG docker ${USER}
使用国内加速器
- DaoCloud
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
Portainer 容器管理
Portainer 官方
- 官网
- Docker
- Github
- 好像不能自定义目录(好像也没必要)
- 访问:http://IP地址:9000,初始化密码
- 生成部署脚本
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
不能修改成其他路径
常用服务器
备份同步
使用docker部署backuppc文件备份
- 官网
- Github
adferrand/backuppc
- Docker
- Github
- 访问
- http://IP:8080
- 用户名:backuppc 密码:password
- 生成部署脚本
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
- 访问
- http://IP:8080
- 用户名:backuppc 密码:password
- 常用操作
- 改中文
Edit Config – CGI – Language – zh_CN – Save – 刷新浏览器 - 增加客户机
增删客户机–添加–host(能在服务器上ping通的域名或netbios名);user:backuppc–添加–保存 - 客户机增加备份
选择客户机名–客户机名–修改服务器配置–传输–传输设置:XferMethod 以rsyncd为例–Rsyncd设置:RsyncShareName(rsync共享名,可插入多个);RsyncdUserName(rsyncd的用户名);RsyncdPasswd(rsync的密码)–保存 - 客户机手动备份
客户机主页–开始完全备份–开始完全备份–服务器–状态;查看备份状态
客户机主页–浏览备份
- 注意事项
- 默认ping值超过20被视为不在线,不进行备份,默认值在
修改服务器设置--备份设置--客户机查找:PingMaxMsec
- rsync方式备份:进入容器内部,切换成backuppc用户,使用
ssh-copy-id
上传公钥到客户机的root
用户内,测试 - rsync方式备份:只能选目录,不知道怎么选文件
使用docker部署syncthing文件同步
- Docker
- Github
- 访问
- http://IP:8008
- 生成部署脚本
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 | 更新镜像 |
- 实例说明
- 拓扑图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCGrrvuh-1660635607770)(images/syncthing
.png)] - WebUI图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-idnr7pXn-1660635607781)(ima
ges/syncthing-2.png)] - A B C通过互相添加设备ID建立联系
- 比如A有本地文件,可以选择共享给B和C.
- B和C会提示A有共享文件添加,添加的时候选择同步到本地的哪个目录
- 最后A B C有一个 目录是共同同步,任意一个修改,全部同步.
- Windows端
- 无界面启动
start "Syncthing" syncthing.exe -no-console -no-browser
使用docker部署firefox浏览器
- hub.docker
- github
- 访问
- http://IP:5800
- 解释
- ENABLE_CJK_FONT=1 增加多语言支持
- 生成部署脚本
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
NAS 影音服务器
使用docker部署plex影音服务器
linuxserver/plex
- hub.docker
- github
- 访问
- http://IP:32400/web
- 生成部署脚本
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
使用docker部署emby影音服务器
emby/embyserver
- dockerhub
- 访问
- http://IP:8096
- https://IP:8920
- 生成部署脚本
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
FTP服务器
使用Docker部署FTP服务器Pure-ftpd(暂时不能用)
-
dockerhub
-
访问
- 用户名:tftp 密码:China123 端口:21
-
生成部署脚本
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
- Docker hub 位置
1.以上安装的变量
变量 | 变量值 |
---|
容器名 | ftpd-server |
端口号 | 21;30000-300009 |
FTP用户 | tftp |
tftp用户的密码 | Password123 |
FTP用户的容器目录 | /home/tftp |
FTP用户映射到宿主机的目录 | /home/tftp |
网络模式 | 主机 |
重启模式 | 总是 |
镜像名 | stilliard/pure-ftpd |
WEB 服务器
使用Docker部署NextCloud云盘+mysql数据库+onlyoffice协同办公
-
dockerhub
-
访问
- http://IP
-
创建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容器
- 如果没有nextcloud目录
- 先创建一个临时的nextcloud容器
- 复制出数据持久化需要的文件到nextcloud目录
- 删除这个容器
- 再创建一个最终的nextcloud容器
- 如果有nextcloud目录
- 请确定nextcloud中有持久化需要的文件
- 直接创建一个最终的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
- 确定已经有mysql数据库
- 确定已经正确创建nextcloud容器
- 打开nextcloud的访问页面http://IP
- http://IP
(images/nextcloud.png)]
-
安装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插件
使用Docker部署Apache服务器(Web网站)
- dockerhub
部署Docker
- 如果没有指定目录
- 创建一个临时容器
- 将容器内/usr/local/apache2目录复制出来
- 删除容器
- 重新创建一个永久容器
- 将复制出来的目录移动到指定目录
- 映射这个目录(实现数据持久化)
- 生成部署脚本
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
- 访问:http://IP
使用Docker部署filebrowser 文件上传下载
- Github
- Docker
- 生成部署脚本
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
- 访问
- 地址:http://IP:8090
- 用户名:admin
- 密码:admin
- 修改成中文
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fwsraTuR-1660726226477)(images/filebrowser1.png)]
Hexo 个人博客
spurin/hexo
- Github
- Dockerhub
- 主页
- 生成部署脚本,第一次运行容器会从github下载东西,看日志,成功后重启docker,方可打开访问页面
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 |
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)