• 常用Docker项目合集


    使用说明

    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
      
      • 1
      • 2
      • 3
      • 4

    使普通用户可以使用Docker

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

    使用国内加速器

    1. DaoCloud
      curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
      
      • 1
    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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

    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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
    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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
    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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
    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
        
        • 1

    使用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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13

    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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
    使用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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16

    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
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
    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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
    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
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
      5. 在Nextcloud中安装onlyoffice插件

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

        'allow_local_remote_servers' => true,
        
        • 1

        在这里插入图片描述

      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
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25
        • 26
        • 27
        • 28
        • 29
      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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
    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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
    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
  • 相关阅读:
    【算法随笔:HDU 3333 Turing tree】(线段树 | 离线 | 离散化 | 贪心)
    在外SSH远程连接macOS服务器【cpolar内网穿透】
    基础矩阵F的计算(2D-2D)
    MySQL针对数据库-基本操作
    AIE流程
    Java Number & Math 类
    用 Pyinstaller 模块将 Python 程序打包成 exe 文件(全网最全面最详细)
    内容平台加码旅游:谁是下一个网红城市
    格式化字符串走过的坑 pwn109
    Top 15 开源3D分子蛋白质建模与渲染软件
  • 原文地址:https://blog.csdn.net/liujinbao8000/article/details/126367610