Docker 学习笔记

91 阅读2分钟

基础入门

入门教程-阮一峰

几个概念

repository(仓库)

repository主要就是存放镜像的地方。有docker官方的公共仓库,也可以搭建自己的私有仓库,私有仓库搭建可使用 Registry。

相关命令

docker login
docker image pull/push
image(镜像)

image 就是一个镜像,可以理解为一个可执行程序。举个例子,比如:

  • nginx 镜像
  • node 镜像
  • mysql 镜像
  • app 镜像(自己的应用镜像)

可以简单的分类一下,像nginx,node,mysql这些可以理解为基础镜像,通常,我们自己的app镜像是基于这些基础镜像来运行的。FROM nginx 命令意思就是基于nginx这个基础镜像来构建一个新的镜像。这些基础镜像的制作方式跟我们自己的app的制作方式是一样的,并没有什么特别。不过他们的基础镜像是基于操作系统,比如:FROM quay.io/centos/centos:steam9。镜像构建好之后就可以发布到repository仓库,别人就可以使用了。

相关命令

docker image ls/build/tag
container(容器)

container 容器可以理解为一个image镜像的运行环境。可以设置这个运行环境参数(比如:对外的映射端口,CPU,内存等),可以在这个容器里面执行相应的shell命令(包括执行命令,操作文件等),查看容器运行日志等。简单的理解类似于一个小型的虚拟机。

相关命令

docker run/start/stop/kill/ls/logs/cp

Dockerfile

Dockerfile 文件的一个小示例

FROM node:8.4 
COPY . /app 
WORKDIR /app 
RUN npm install --registry=https://registry.npm.taobao.org 
EXPOSE 3000

Docker Compose

Docker 编排管理的一个工具。可以同时管理多个Docker Container, 比如:如果需要同时启动多个Docker Container,那么就可以使用Docker Compose来统一编排管理。这个主要目的是提高管理效率,统一管理多个容器之间的启动依赖等。

安装

见官网:docs.docker.com/compose/ins…

配置

配置主要是编写 docker-compose.yml,配置结构主要节点 services 下面包含多个 container,例如:

services:
  app:
    image: node:18-alpine
    command: sh -c "yarn install && yarn run dev"
    ports:
      - 3000:3000
    working_dir: /app
    volumes:
      - ./:/app
    environment:
      MYSQL_HOST: mysql
      MYSQL_USER: root
      MYSQL_PASSWORD: secret
      MYSQL_DB: todos

  mysql:
    image: mysql:8.0
    volumes:
      - todo-mysql-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: todos
运行
docker compose up -d