用Docker搭建图床

第一步,安装 docker :

1
yum install docker

第二步,启动 docker:

1
systemctl start docker

也可以设置开机自启:

1
systemctl enable docker

第三步,把别人已经做好的镜像拉下来

在 docker 中拉镜像跟 Git 拉仓库差不多,命令是:

1
docker imgae pull

这里需要拉的是 kdelfour/lychee-docker,所以完整命令:

1
docker image pull kdelfour/lychee-docker

镜像拉下来后,你可以用 ls 看一下是不是有这个镜像了(docker image ls)。

第四步,启动这个镜像

需要说明的是端口映射的问题。由于我的服务器已经搭了个人网站,也用的浏览器默认的 80 端口,所以图床就不能用 80,我改用 5120,完整命令:

1
docker run -it -d -p 5120:80 kdelfour/lychee-docker

访问 5120 端口,映射到 docker 容器里边的 80 端口)。

命令 docker container ls 是查看正在运行的容器。可以看到第一次用这个命令的时候,没有容器在跑;启动之后就有了。

第五步,访问http://你的域名:5120

由于我是在本地的虚拟机里搭建,所以访问的是 http://ip:5120

进入到初始化阶段。可以看到 Database Host 、Data Name 和 Table predix 是选填,那我们就不管它。而 Username 和 Password 默认都是 lychee 。输入后点击 connect,你会看到它要你新建一个用户名和密码,这是你之后登录图床要用到的。

第六步,创建 ablum,上传图片

右上角 + –> Upload Photo,然后就可以愉快的上传图片了。lychee 还提供了其他导入图片方式,点击符号 + 可自行按需选择。更多用法请自己探索。

所以我们上传的图片到底去哪儿了呢。这时候我们需要先进入这个容器。命令

1
docker container ls 

会显示容器的 CONTAINER ID,拿到这个 ID 后,键入

1
docker container exec -it 9a8e6f34294a /bin/bash

就进入容器了。

现在可以 ls 一下,是不是感觉进入了一个 linux 终端,其实这就是 docker 想做的。然后关注 uploads 目录,可以看到图片就在 big 目录下。

肯定会有人说卧槽,那我怎么把图片取出来呢?事实上,lychee 提供了网页的下载方式,想在服务器上操作也 OK 呀。把图片名复制下来(这个经过 hash 处理,基本是独一无二了),在你的服务器上用 find 命令搜索,不就找到它的绝对路径了嘛!

最后附上卸载方式:

  • 先停止运行的容器:docker container stop [container-id]
  • 然后删除容器:docker container rm [container-id]
  • 最后删除镜像:docker image rmi [image-id]

获取对应的 id 可以通过命令:docker container ls docker image ls