Docker入门

作为容器的初学者,我们绕不开的第一就是docker。

  • 基础镜像版本+程序代码+启动命令—>打包(docker build)形成应用镜像
  • 运行镜像(docker run)快速启动应用。

镜像打包,拉取,上传

docker build

docker tag

docker pull

公共镜像仓库与本地镜像仓库,我们可以公共镜像仓库拉取镜像,就能实现一件复制启动别人的应用程序。

我们还可以通过docker images 查看本地镜像的详情。

镜像运行

docker run 本地起单个容器应用,就需要用到 docker run

其中关于容器镜像id,容器镜像tag的区别

  • 容器的镜像id是唯一的,但是不同的打包,就会有不同的镜像id,比如我同一份代码,打包两次,得到的镜像id也是不同的

  • 对于同一份镜像 可以打多个tag,tag不同的话,但是镜像id还是相同的

学习使用docker部署应用

部署mysql

部署grafana

以下命令设置了时区,将外部的default.ini文件挂载到容器中,其中能将对邮箱的设置也能映射到容器中(注意时区的设置需要放在docker run 命令靠前的位置

docker run -e TZ=Asia/Shanghai -itd --name=grafana --restart=always -p 3000:3000 -v /grafana-storage:/var/lib/grafana -v /home/apps/grafana/default.ini:/etc/grafana/grafana.ini grafana/grafana

部署loki

docker run -e TZ=Asia/Shanghai --name loki -d -v /home/apps/loki:/mnt/config -p 3100:3100 grafana/loki:2.8.2 -config.file=/mnt/config/loki-config.yaml

部署promtail

注意以下命令中错误的是不能将log-driver放在最后,–log-driver=syslog

docker run -e TZ=Asia/Shanghai --name promtail -d -v /home/apps/promtail:/mnt/config -v /var/log:/var/log -v /etc/localtime:/etc/localtime:ro grafana/promtail:2.8.2 -config.file=/mnt/config/promtail-config.yaml

docker compose

docker compose 是docker的一个工具,可以方便的启动多个容器,并且可以指定容器之间的依赖关系。

version: '3'
services:
  mysql:
    image: mysql:5.7
    container_name: mysql
    environment: