上篇文章回顾 利用github+docker+hexo搭建个人博客(一)
Docker使用 生成docker镜像 Dockerfile
1 docker build hexo:latest .
docker build
构建镜像指令hexo:latest
镜像名和tag.
是在当前路径下作为根路径查找Dockerfile文件,生成docker镜像
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 Sending build context to Docker daemon 117.8 kB Step 1 /17 : FROM alpine:latest --- > 961769676411 Step 2 /17 : LABEL maintainer="chobon <[email protected] >" --- > Using cache --- > 2033655 adf1e Step 3 /17 : ARG UID=1000 --- > Using cache --- > fb0ed31a6f82 Step 4 /17 : ARG GID=1000 --- > Using cache --- > 6 c34b75672d7 Step 5 /17 : ARG PORT=4000 --- > Using cache --- > effb42900db2 Step 6 /17 : EXPOSE $ {PORT} --- > Using cache --- > 8 b6d4a5aec57 Step 7 /17 : RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories --- > Using cache --- > 389 a3d191c40 Step 8 /17 : RUN apk add --no-cache shadow sudo && if [ -z "`getent group $GID `" ]; then addgroup -S -g $GID hexo; else groupmod -n hexo `getent group $GID | cut -d: -f1`; fi && if [ -z " `getent passwd $UID `" ]; then adduser -S -u $UID -G hexo -s /bin/sh hexo; else usermod -l hexo -g $GID -d /home/hexo -m `getent passwd $UID | cut -d : -f1 `; fi && echo "hexo ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/hexo && chmod 0440 /etc/sudoers.d/hexo --- > Using cache --- > faeb2f247493 Step 9 /17 : RUN apk --update --no-progress add git nodejs npm openssh && rm -rf /var/cache/apk/* && npm install -g hexo-cli --- > Using cache --- > cd14f3c867ef Step 10 /17 : WORKDIR /home/hexo --- > Using cache --- > e63b9f65e6f1 Step 11 /17 : RUN hexo init . && npm install --save hexo-deployer-git --- > Using cache --- > 148818695354 Step 12 /17 : VOLUME ["/home/hexo/source" ,"/home/hexo/themes" ,"/home/hexo/.ssh" ] --- > Using cache --- > 95132 d8d84ee Step 13 /17 : RUN chown -R hexo . --- > Using cache --- > 8 e4e876d3013 Step 14 /17 : USER hexo --- > Using cache --- > bd85dad4c30a Step 15 /17 : COPY entrypoint.sh /entrypoint.sh --- > d859e32e3a1a Step 16 /17 : ENTRYPOINT [ "/entrypoint.sh" ] --- > Running in 91217964 b7e3 Removing intermediate container 91217964 b7e3 --- > bc499c026da6 Step 17 /17 : CMD ["/bin/sh" ] --- > Running in ee43d3deae3b Removing intermediate container ee43d3deae3b --- > 038588 b225ed Successfully built 038588 b225ed Successfully tagged hexo:latest
查看docker镜像 镜像构建好了可以用docker images
查看下
1 2 3 λ docker images REPOSITORY TAG IMAGE ID CREATED SIZE hexo latest 038588 b225ed 5 minutes ago 144 MB
启动docker容器 docker run
启动容器指令 -d
后台运行 -p 80:4000
把容器端口4000映射到宿主端口80上 -v
参数是把宿主的数据卷挂载载容器里 --name hexo
为容器创建个名字hexo hexo:latest
选择镜像名字和tag
1 2 λ docker run -d -p 80:4000 -v /d/docker/hexo/source:/home/hexo/source -v /d/docker/hexo/themes:/home/hexo/themes -v /d/docker/hexo/_config.yml:/home/hexo/_config.yml -v /d/docker/hexo/ssh:/home/hexo/.ssh --name hexo hexo:latest s b6f814686c5066ac71b427d0a6768658a0609641113b4dcdcc9e40e01aedc13d
查看docker容器 docker ps
查看当前运行的容器,加上-a
后可以查看所有容器docker stop $CONTAINER ID
或者 docker stop $CONTAINER NAME
停止容器docker rm $CONTAINER ID
或者 docker stop $CONTAINER NAME
删除容器
1 2 3 λ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 956474737 f35 b3028476e4d5 "/entrypoint.sh serv…" 5 minutes ago Up 5 minutes 0.0 .0.0 :80 ->4000 /tcp hexo
Docker进阶 采用docker-compose编排 docker-compose优势
每次操作都要输入指令和一堆参数,经常容易输错
启动容器只能一个一个启动,不能快速简单的启动
Docker-Compose 项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)这里简单介绍下docker-compose的语法,想了解更多的可以戳这里
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 docker-compose 命令: 介绍: 1 、docker-compose 命令的执行都必须指定或者在当前目录下存在 compose 文件, 且输出的内容都是这个 compose.yml 文件定义的集群内的信息 2 、每个集群中可以拥有多个 services, services 由 compose.yml 的 services 定义 选项: -f 指定 compose 文件路径(可以指定多个) 子命令: create 创建 compose 集群, 但不启动(已废弃, 使用 up --no-start 代替) down 停止或删除容器, 网络, 镜像和数据卷 exec 运行容器中的命令或者连接容器 help 查看帮助信息 images 列出 compose 集群所用的镜像 kill kill 掉 compose 集群 logs 获取 compose 集群日志 pause 暂停 compose 集群 ps 列出正在运行的容器 pull 拉取 compose.yml 文件中定义的所有 docker 镜像 push 上传 compose.yml 文件中定义的所有 docker 镜像 restart 重启 compose 集群 rm 删除一个停止的容器或者 compose 集群 run 和 exec 相同 scale 更改 compose 集群内指定的 services 的副本数量 start 启动 compose 集群 stop 停止 compose 集群 top 显示 compose 集群中运行的进程及其状态 unpause 恢复被暂停的 compose 集群 up 创建并启动一个 compose 集群 version 输出 compose 版本
用于server
的docker-compose
1 2 3 4 5 6 7 8 9 10 11 12 13 14 version: "3.7" services: hexo-server : build: ../. image: hexo:latest container_name: hexo-server ports: - "80:4000" volumes: - "/d/docker/hexo/source:/home/hexo/source" - "/d/docker/hexo/themes:/home/hexo/themes" - "/d/docker/hexo/_config.yml:/home/hexo/_config.yml" - "/d/docker/hexo/ssh:/home/hexo/.ssh" command: server
用于deploy
的docker-compose
1 2 3 4 5 6 7 8 9 10 11 12 version: "3.7" services: hexo-server : build: ../. image: hexo:latest container_name: hexo-deploy volumes: - "/d/docker/hexo/source:/home/hexo/source" - "/d/docker/hexo/themes:/home/hexo/themes" - "/d/docker/hexo/_config.yml:/home/hexo/_config.yml" - "/d/docker/hexo/ssh:/home/hexo/.ssh" command: deploy
1 2 docker-compose up -d docker-compose down
结语 整个基于github和docker的个人博客大致讲完了,以上都是亲测可操作。