# docker 下安装宝塔面板酷酷哒

- Link: https://yjyj.net/learn/centos/5872.html
- Published: 2017-09-14T20:09:46+08:00
- Author: 小 虾

⚡ 生猛大蝦编辑部 · 30 秒核心看点

 * 用 Docker 起 Ubuntu 16.04 容器，映射 80、3306、8888、888 与 wwwroot/data 目录。
 * 容器内先更新并安装 wget、sudo，再执行宝塔面板安装脚本完成部署。
 * 测试后可停容器并 commit 成镜像；作者明确提醒，这只是本地偷懒方案，不建议当正经
   虚拟机用。

认真学docker的同学请关掉这个页面，本页面将使用docker当做虚拟机，并且乐此不彼哈哈
哈哈。

第一步当然是新建一个docker容器，这里使用到了Ubuntu16.04，小弟热爱的centos7.2有问题。

    ```decode:true
    docker run -dit -p 80:80 -p 3306:3306 -p 8888:8888 -p 888:888 -v /Users/bender/bt-www:/www/wwwroot/ -v /Users/bender/bt-data:/www/server/data --name bt-server ubuntu:16.04 /bin/bash
    ```

这里把宝塔常用的3个端口给映射好，然后还有wwwroot与data目录也映射起来

2. 之后进入容器，首要一点当然是执行update命令，宝塔的安装需要用到sudo，这个也是要
安装的

    ```decode:true
    apt-get update
    apt-get install wget sudo
    ```

3. 现在可以开始安装宝塔面板了，官网上有最新的安装命令，复制下来就成

    ```decode:true
    wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && sudo bash install.sh
    ```

4. 测试完成后需要把docker容器停止便于打包镜像

    ```decode:true
    docker stop bt-server
    ```

    ```decode:true
    docker commit  [CONTAINER ID]  yourname
    ```

5. 一番折腾后就ok拉，大家愉快的把docker当做虚拟机玩吧哈哈哈哈哈

当然了，把docker当做虚拟机用这是**邪路**，请认真的同学不要模仿，这只是小弟用来偷懒
做本地环境的歪招。

❓ 延伸问答与排错指南（FAQ）

Docker 里装宝塔面板要先准备什么？

先创建一个 Ubuntu 16.04 容器，并把宝塔常用端口和网站、数据目录映射出来。进入容器
后执行更新，再安装 wget 和 sudo，后续安装脚本才跑得起来。

为什么文章不用 CentOS 7.2？

原文明确提到 CentOS 7.2 在这套操作里有问题，所以改用 Ubuntu 16.04。也就是说，这篇文章
的重点不是系统偏好，而是为了让宝塔安装流程顺利跑通。

装完宝塔后怎么保存成可复用镜像？

测试完成后先停止容器，再用 docker commit 把当前容器状态提交成新镜像。这样下次可以
直接基于这个镜像启动，省去重复安装和配置的步骤。

📚 【[CentOS 学习](https://yjyj.net/category/learn/centos)】专栏延伸阅读与热门精选（
[全站文章归档](https://yjyj.net/archive)）：

 * [解决centos yum安装”No package nginx available.”问题](https://yjyj.net/learn/centos/5868.html)
 * [常用docker命令记录](https://yjyj.net/learn/centos/5855.html)
 * [给EC2设置并启用root账户](https://yjyj.net/learn/centos/5971.html)
 * [ec2-enable-epel](https://yjyj.net/learn/centos/5974.html)
 * 热门必读[重置 Mac 的 SMC](https://yjyj.net/learn/7596.html)
 * 热门必读[CSS 盒模型边界重叠 (Margin Collapse) 原理与解决方案](https://yjyj.net/css/3536.html)
