常用Docker项目合集

2023-05-16

文章目录

      • 使用说明
      • docker官方一键安装脚本
      • 使普通用户可以使用Docker
      • 使用国内加速器
      • Portainer 容器管理
        • Portainer 官方
    • 常用服务器
      • 备份同步
        • 使用docker部署backuppc文件备份
          • adferrand/backuppc
        • 使用docker部署syncthing文件同步
        • 使用docker部署firefox浏览器
        • NAS 影音服务器
          • 使用docker部署plex影音服务器
            • linuxserver/plex
          • 使用docker部署emby影音服务器
            • emby/embyserver
      • FTP服务器
        • 使用Docker部署FTP服务器Pure-ftpd(暂时不能用)
      • WEB 服务器
        • 使用Docker部署NextCloud云盘+mysql数据库+onlyoffice协同办公
        • 使用Docker部署Apache服务器(Web网站)
        • 使用Docker部署filebrowser 文件上传下载
        • Hexo 个人博客
          • spurin/hexo

使用说明

  1. 将脚本保存到指定的目录
  2. 使用bash 文件名,运行脚本,根据需要是否需要使用sudo
  3. 脚本将在当前目录创建一个目录,名字为脚本主文件名
  4. 持久化目录一般为当前目录下的主文件名目录

docker官方一键安装脚本

  1. 官方github脚本安装
    curl -fsSL get.docker.com -o get-docker.sh
    sudo sh get-docker.sh
    sudo systemctl start docker
    sudo systemctl enable docker
    

使普通用户可以使用Docker

  1. 默认Root才可以使用Docker,如果想要使用普通用户可以使用Docker,需要把用户加入到Docker组
  2. 命令
    sudo usermod -aG docker ${USER}
    

使用国内加速器

  1. DaoCloud
    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
    
  2. 阿里云
    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 官方

  1. 官网
  2. Docker
  3. Github
  4. 好像不能自定义目录(好像也没必要)
  5. 访问:http://IP地址:9000,初始化密码
  6. 生成部署脚本
    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
    
  7. 注意事项
    1. -v /var/run/docker.sock:/var/run/docker.sock不能修改成其他路径

常用服务器

备份同步

使用docker部署backuppc文件备份

  1. 官网
  2. Github
adferrand/backuppc
  1. Docker
  2. Github
  3. 访问
    1. http://IP:8080
    2. 用户名:backuppc 密码:password
  4. 生成部署脚本
    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
    
  5. 访问
    1. http://IP:8080
    2. 用户名:backuppc 密码:password
  6. 常用操作
    1. 改中文
      Edit Config – CGI – Language – zh_CN – Save – 刷新浏览器
    2. 增加客户机
      增删客户机–添加–host(能在服务器上ping通的域名或netbios名);user:backuppc–添加–保存
    3. 客户机增加备份
      选择客户机名–客户机名–修改服务器配置–传输–传输设置:XferMethod 以rsyncd为例–Rsyncd设置:RsyncShareName(rsync共享名,可插入多个);RsyncdUserName(rsyncd的用户名);RsyncdPasswd(rsync的密码)–保存
    4. 客户机手动备份
      客户机主页–开始完全备份–开始完全备份–服务器–状态;查看备份状态
      客户机主页–浏览备份
  7. 注意事项
    1. 默认ping值超过20被视为不在线,不进行备份,默认值在修改服务器设置--备份设置--客户机查找:PingMaxMsec
    2. rsync方式备份:进入容器内部,切换成backuppc用户,使用ssh-copy-id上传公钥到客户机的root用户内,测试
    3. rsync方式备份:只能选目录,不知道怎么选文件

使用docker部署syncthing文件同步

  1. Docker
  2. Github
  3. 访问
    1. http://IP:8008
  4. 生成部署脚本
    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
    
  5. 参数说明
    参数说明
    -p 8384应用程序WebUI管理端口
    -p 22000监听端口
    -p 21027/udp协议发现
    -e PUID=1000对于UserID - 请参阅下面的解释
    -e PGID=1000对于GroupID - 请参阅下面的解释
    -e TZ=Asia/Shanghai指定使用亚洲/上海的时区。
    -e UMASK_SET=022Umask设置
    -v /config配置文件。
    -v /data1数据1
    -v /data2数据2
    unless-stopped不管退出状态码是什么始终重启容器,不过当daemon启动时,如果容器之前已经为停止状态,不要尝试启动它
  6. 其他功能
    命令功能
    docker pull linuxserver/syncthing更新镜像
  7. 实例说明
    1. 拓扑图
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCGrrvuh-1660635607770)(images/syncthing在这里插入图片描述
      .png)]
    2. WebUI图
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-idnr7pXn-1660635607781)(ima在这里插入图片描述
      ges/syncthing-2.png)]
    3. A B C通过互相添加设备ID建立联系
    4. 比如A有本地文件,可以选择共享给B和C.
    5. B和C会提示A有共享文件添加,添加的时候选择同步到本地的哪个目录
    6. 最后A B C有一个 目录是共同同步,任意一个修改,全部同步.
  8. Windows端
    1. 无界面启动
      start "Syncthing" syncthing.exe -no-console -no-browser
      

使用docker部署firefox浏览器

  1. hub.docker
  2. github
  3. 访问
    1. http://IP:5800
  4. 解释
    1. ENABLE_CJK_FONT=1 增加多语言支持
  5. 生成部署脚本
    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
  1. hub.docker
  2. github
  3. 访问
    1. http://IP:32400/web
  4. 生成部署脚本
    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
  1. dockerhub
  2. 访问
    1. http://IP:8096
    2. https://IP:8920
  3. 生成部署脚本
    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(暂时不能用)

  1. dockerhub

  2. 访问

    1. 用户名:tftp 密码:China123 端口:21
  3. 生成部署脚本

    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
    
    1. 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协同办公

  1. dockerhub

  2. 访问

    1. http://IP
  3. 创建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
    
  4. 创建nextcloud容器

    1. 如果没有nextcloud目录
      1. 先创建一个临时的nextcloud容器
      2. 复制出数据持久化需要的文件到nextcloud目录
      3. 删除这个容器
      4. 再创建一个最终的nextcloud容器
    2. 如果有nextcloud目录
      1. 请确定nextcloud中有持久化需要的文件
      2. 直接创建一个最终的nextcloud容器
    3. 生成部署脚本
    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
    
  5. 初始化nextcloud

    1. 确定已经有mysql数据库
    2. 确定已经正确创建nextcloud容器
    3. 打开nextcloud的访问页面http://IP
    4. http://IP
      (images/nextcloud.png)] 在这里插入图片描述
  6. 安装onlyoffice协同办公插件

    1. 官网

    2. 社区版

    3. 使用docker部署onlyoffice

    4. 生成部署脚本

      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
      
    5. 在Nextcloud中安装onlyoffice插件

    6. 修改NextCloud的配置文件config/config.php加入一行内容

      'allow_local_remote_servers' => true,
      

      在这里插入图片描述

    7. 设置onlyoffice插件
      在这里插入图片描述

使用Docker部署Apache服务器(Web网站)

  1. dockerhub
  2. 在这里插入图片描述
    部署Docker
    1. 如果没有指定目录
      1. 创建一个临时容器
      2. 将容器内/usr/local/apache2目录复制出来
      3. 删除容器
      4. 重新创建一个永久容器
      5. 将复制出来的目录移动到指定目录
      6. 映射这个目录(实现数据持久化)
    2. 生成部署脚本
      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
      
    3. 访问:http://IP

使用Docker部署filebrowser 文件上传下载

  1. Github
  2. Docker
  3. 生成部署脚本
    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
    
  4. 访问
    1. 地址:http://IP:8090
    2. 用户名:admin
    3. 密码:admin
  5. 修改成中文
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fwsraTuR-1660726226477)(images/filebrowser1.png)]在这里插入图片描述

Hexo 个人博客

spurin/hexo
  1. Github
  2. Dockerhub
  3. 主页
  4. 生成部署脚本,第一次运行容器会从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
    
  5. 使用方法
    功能方法
    访问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(使用前将#替换为@)

常用Docker项目合集 的相关文章

随机推荐

  • Spring 参考资料

    拦截器顺序参考 xff1a http www cnblogs com yjmyzz p how to custom filter provider and token in spring security3 html Spring框架详细参
  • 自定义Spring MVC中的数据绑定

    默认情况下 xff0c spring mvc的数据映射的实现是自动查找请求中的key为参数名的parameter的值 比如有以下方法 xff1a 64 RequestMapping value 61 34 xml 34 method 61
  • 微信分享实现

    本文简单的介绍在微信里打开某个网站 xff0c 希望在点击 分享到朋友圈 或 发送给朋友 时 xff0c 自定义分享的内容 xff0c 即使用 JS SDK 实现分享功能 1 前提 要想分享成功 xff0c 需要申请一个公共号 xff0c
  • Android 使用Headless Fragment 处理Configuration Changes情况

    Android开发中 xff0c AsyncTask是最常用的异步方法 xff0c 功能结构设计的也很丰富 xff0c 给使用者足够的控制 因此对于一些较短的 xff08 1 xff0c 2秒 xff09 xff0c CPU密集计算或读写文
  • PL/SQL 显示行数以及sql窗口列表

    tools gt Preferences gt user Interface gt Editor gt Other gt gt 勾上Display line numbers 如果到这里 xff0c 你地工具地SQL行数还未显示 xff0c
  • JS利用正则替换指定字符

    javaScript如何替换字符 定义和用法 replace 方法用于在字符串中用一些字符替换另一些字符 xff0c 或替换一个与正则表达式匹配的子串 语法 stringObject replace regexp replacement 参
  • myEclipse编辑器大小写转换

    就是在MyEclipse中把选中的一部分代码变成全部大写或小写 MyEclipse中把选中的一部分代码变成全部大写或小写快捷键 xff08 其实就是在编写SQL语句时 xff0c 先输入小写 xff0c 这样看着习惯些 xff0c 也容易读
  • cygwin运行常见问题(cygwin warning:MS-DOS style path detected: )

    cygwin 1 7 release 一月 5th 2010 at 11 27 日新月異 很久沒寫軟體相關的東西 xff0c 不過年前 2009年12月 正式釋出的cygwin 1 7值得一提 cygwin是win32底下最完整的一套pos
  • 人与人之间的差距,从大学拉大。(30条建议)

    1 一个年轻人 xff0c 如果在这四年的时间里 xff0c 没有任何想法 xff0c 他这一生 xff0c 就基本这个样子 xff0c 没有多大改变了 2 成功者就是胆识加魄力 xff0c 曾经在火车上听人谈起过温州人的成功 xff0c
  • Numpy库的下载及安装(吐血总结)

    Python很火 xff0c 我也下了个来耍耍一阵子 可是渐渐地 xff0c 我已经不满足于它的基本库了 xff0c 我把目光转到了Numpy 然而想法总是比现实容易 xff0c 因为我之前下的是Python3 3 x xff0c 所有没有
  • cygwin connection closed by ::1

    Cygwin 1 7 1版本ssh问题 解决办法一 在安装 好Cygwin 1 7 1后 xff0c 进入Cygwin会遇到mkpasswd和mkgroup提示 xff0c 强行做ssh 配置 xff0c 执行sshlocalhost 会报
  • Hadoop错误汇总(更新中)

    2012 05 24 13 40 727人阅读 评论 0 收藏 举报 1 ERROR org apache hadoop hdfs server datanode DataNode java io IOException Incompati
  • 在VMWare Workstation8.0上使用ubuntu11安装和配置Hadoop群集环境03_hadoop的安装

    将hadoop 0 21 0 tar gz通过SSH Secure File Transfer Client上传到usr目录下 1 修改 usr hadoop 0 21 0 conf 目录下的master文件 xff0c 内容如下 xff1
  • 在VMWare Workstation8.0上使用ubuntu11安装和配置Hadoop群集环境04_WordCount示例

    运行框架自带的wordcount示例 在192 168 1 61虚拟机中建立两个输入文件input1和input2 HDFS中建立一个目录input 拷贝input1和input2两个文件到HDFS的input目录中 运行wordcount
  • EVE-NG模拟器教程(四)——常用镜像导入和使用

    网络模拟器的镜像文件是指一个模拟真实设备功能和特性的操作系统 xff0c 我们可以通过在模拟器上导入并启动一个镜像系统 xff0c 来体验真实网络设备的部分功能和特性 这些镜像文件有些是由设备厂商 官方 开发和发布 xff0c 有些则是有一
  • 关于函数strtok和strtok_r的使用要点和实现原理(一)

    strtok函数的使用是一个老生常谈的问题了 该函数的作用很大 xff0c 争议也很大 以下的表述可能与一些资料有区别或者说与你原来的认识有差异 xff0c 因此 xff0c 我尽量以实验为证 交代一下实验环境是必要的 xff0c winx
  • vncserver too many security failures

    在服务器上开了几个虚拟机 xff0c 装了VNC之后 xff0c 经常遇到报错too many security failures 查了下相关资料 xff0c 原来是有人在暴力破解 xff0c 触发了VNC的黑名单机制 重置黑名单 xff0
  • Centos7 官方安装方法(略有修改),nextcloud-20.0.1版本亲测

    Centos7 官方安装方法 略有修改 nextcloud 20 0 1版本亲测 执行第一个脚本文件 文件内容如下 bin bash systemctl stop firewalld systemctl disable firewalld
  • SecureCRT_Python笔记

    文章目录 说明常用语法python脚本开头格式Sleep睡眠发送命令或文本弹出消息框 常用对象操作Application 应用程序对象属性ActivePrinter 活动打印机ScriptFullName 脚本名称Version 版本 方法
  • 常用Docker项目合集

    文章目录 使用说明docker官方一键安装脚本使普通用户可以使用Docker使用国内加速器Portainer 容器管理Portainer 官方 常用服务器备份同步使用docker部署backuppc文件备份adferrand backupp