期末考试前一天把机器玩炸了,趁机换成docker+宝塔,结果弄了通宵踩了不少坑

就先说完整的步骤吧(我CentOS7主机)

准备步骤

docker run -i -t -d -p 20:20 -p 21:21 -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 -v $PWD/www:/www centos
docker ps //然后这里要记下容器ID,后面要用
screen -S docker
docker exec -it <上面记下的容器ID> bash

接下来安装面板(这个是进入容器内安装)

yum install -y initscripts
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh
# 最新的安装地址请看宝塔的文档 http://docs.bt.cn/443922

然后根据提示进行安装(按y),最后装完(大概花费3分钟)就能看到相关信息like
当然实际上是随机的(((((

Bt-Panel: http://192.168.1.256:8888/114514
username: LiTiansuo
password: 1919810

然后停止宝塔服务,添加启动脚本,把容器commit成镜像

/etc/init.d/bt stop
# sleep设尽可能大,让容器 keep alive
echo '/etc/init.d/bt start && /etc/init.d/httpd start && sleep 10000000000000000000000000000000' > /bootstrap.sh
chmod +x /bootstrap.sh
# 键盘按下Ctrl+A+D,退出screen
docker commit <容器ID> baota:<密码>

添加docker-compose.yml,方便启动,内容如下:

baotamiaban:
  image: baota:<密码>
  ports:
    - 20:20
    - 21:21
    - 80:80
    - 443:443
    - 888:888
    - 8888:8888
  volumes:
    - ./www:/www
  privileged: true
  command: bash /bootstrap.sh

保存,然后启动的时候就只需要 docker-compose up 就可以了


接下来说说我做的时候踩的坑。

其实我一开始是找到了这个repo,我根据这个repo的步骤做,做好之后网站出现了 HTTP 403 权限问题。
实际上这个不用像他所说的又 chmod 766 又 docker copy。
一开始第一条的指令就已经映射进去了,所以不用做这条。

第二,启动的时候提示 Failed to get D-Bus connection: Operation not permitted
这个好像是因为启动容器的时候没给能用systemctl的权限,
所以在docker里面不能systemctl也不能service,
其实这个是可以通过给权限来解决的,但是这样操作比较麻烦,就换成init.d来规避这个问题(啧 真是懒

第三,最坑爹的问题
我兴奋地把一切工作做好之后,重启一下docker,,,
然后网站就挂了,爆 Didn't sent any data. WTF??
后来一检查,用/etc/init.d/bt start启动的宝塔 居 然 没 有 启 动 Apache
而且php72开关显示正在运行但是实际上是没有运行。。。。。。。
好吧,在宝塔的文档上找到了手动启动的方法,一起写在启动脚本上,问题解决

就这几个坑爹问题折腾了我一个通宵……哎第二天还有期末考试
不过这次是我第一次正经折腾docker吧
不得不说docker真的是好文明


20190810 update:
刚装好的机器,第一次运行出现

docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.

解决: systemctl start docker

标签: none