基础入门
几个概念
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