Docker 使用
-
安装 Docker、Docker Compose 及 Colima
Terminal window $ brew install docker docker-compose colima$ brew services start colima -
创建 CLI 插件目录并符号链接该插件
Terminal window $ mkdir -p ~/.docker/cli-plugins$ ln -sfn $(brew --prefix)/opt/docker-compose/bin/docker-compose ~/.docker/cli-plugins/docker-compose -
配置 Docker Context 指向 Colima
Terminal window $ docker context use colima -
配置
COMPOSE_FILECOMPOSE_FILE是 Docker Compose 内建环境变量;未设置时只在当前目录查找compose.yaml/docker-compose.yml;指向固定路径后,任意目录执行docker compose都会自动加载,无需每次-f。Terminal window $ mkdir -p ~/.docker && touch ~/.docker/compose.yml$ echo 'export COMPOSE_FILE=$HOME/.docker/compose.yml' >> ~/.zshrc && source ~/.zshrc -
验证安装
Terminal window $ docker version$ docker compose version
$ docker ps # 运行中容器(≈ docker container ls)$ docker ps -a # 所有容器$ docker images # 本地镜像(≈ docker image ls)$ docker pull <name>[:tag] # 拉取镜像$ docker run -d <image> # 后台运行(≈ docker container run -d)$ docker exec -it <container> <cmd> # 进入容器$ docker logs -f <container> # 跟踪日志$ docker init # 生成 Dockerfile、compose.yaml 等 starter 文件docker init 在项目目录交互式创建 starter 文件;生成后通常 docker compose up --build 启动。
$ docker builder prune # 清理构建缓存$ docker builder prune -a # 清理全部构建缓存$ docker builder prune --keep-storage 2GB # 保留 2GB 缓存$ docker compose config # 解析、渲染 compose 文件$ docker compose up # 创建并启动服务$ docker compose up -d # 后台启动$ docker compose down # 停止并删除容器、网络$ docker compose down -v # 同上,并删除卷$ docker compose ps # 列出容器$ docker compose logs # 查看日志$ docker compose logs -f <service> # 跟踪指定服务日志$ docker compose exec <service> <cmd> # 在运行中容器执行命令$ docker compose run --rm <service> <cmd> # 一次性命令$ docker compose build # 构建服务镜像$ docker compose pull # 拉取服务镜像$ docker compose push # 推送服务镜像$ docker compose restart <service> # 重启服务$ docker compose stop # 停止服务$ docker compose start # 启动已创建服务$ docker compose cp <service>:<path> <local> # 从容器复制到本地$ docker compose ls # 列出 compose 项目$ docker compose watch # 监听构建上下文并重建/刷新$ docker container ls # 列出运行中容器$ docker container ls -a # 列出所有容器$ docker container run <image> # 创建并启动$ docker container run -d <image> # 后台运行$ docker container run -it <image> <cmd> # 交互模式$ docker container run -p 8080:80 <image> # 端口映射$ docker container run -v /host:/container <image> # 挂载卷$ docker container run --name <name> <image> # 指定容器名$ docker container start <container> # 启动$ docker container stop <container> # 停止$ docker container restart <container> # 重启$ docker container rm <container>… # 删除$ docker container prune # 清理已停止容器$ docker container logs <container> # 查看日志$ docker container logs -f --tail 100 <container> # 跟踪最后 100 行$ docker container exec -it <container> <cmd> # 进入/执行命令$ docker container cp <src> <container>:<dest> # 复制到容器$ docker container cp <container>:<src> <dest> # 从容器复制$ docker container inspect <container> # 详细信息$ docker container stats # 资源占用$ docker container diff <container> # 文件系统变更$ docker container port <container> # 端口映射$ docker container commit <container> <name>[:tag] # 保存为新镜像$ docker container export -o output.tar <container> # 导出文件系统$ docker image ls # 列出镜像$ docker image pull <name>[:tag] # 拉取镜像$ docker image push <name>[:tag] # 推送镜像$ docker image rm <image>… # 删除镜像$ docker image build -t <name> . # 从 Dockerfile 构建$ docker image tag <source> <target> # 打标签$ docker image history <image> # 查看分层历史$ docker image prune # 清理悬空镜像$ docker image prune -a # 清理未使用镜像$ docker image save -o output.tar <image>… # 导出为 tar$ docker image load -i output.tar # 从 tar 导入$ docker image import <file> <name>[:tag] # 从归档导入$ docker search <term> # 搜索镜像(顶层命令)$ docker network ls # 列出网络$ docker network create <name> # 创建网络$ docker network rm <name> # 删除网络$ docker network connect <net> <container> # 接入网络$ docker network disconnect <net> <container> # 断开网络$ docker network inspect <name> # 查看详情$ docker version # 客户端/引擎版本$ docker info # 系统信息$ docker system df # 磁盘占用$ docker system prune # 清理未使用资源$ docker system prune -a # 含未使用镜像$ docker system prune --volumes # 含未使用卷$ docker system events # 实时事件流$ docker system events --since 1h # 过去 1 小时事件$ docker volume ls # 列出卷$ docker volume create <name> # 创建卷$ docker volume rm <name> # 删除卷$ docker volume prune # 清理未使用卷$ docker volume inspect <name> # 查看详情# 备份卷到宿主机$ docker container run --rm -v <volume>:/data -v $(pwd):/backup alpine tar czf /backup/vol-backup.tar.gz -C /data .# 从宿主机恢复卷$ docker container run --rm -v <volume>:/data -v $(pwd):/backup alpine tar xzf /backup/vol-backup.tar.gz -C /data# 跨主机迁移卷$ docker container run --rm -v <volume>:/data alpine tar czf - -C /data . | ssh user@host "docker container run --rm -i -v <volume>:/data alpine tar xzf - -C /data"Colima 常用命令
Section titled “Colima 常用命令”$ colima status # 查看状态$ colima start # 启动$ colima stop # 停止$ colima ssh # SSH 进入虚拟机,exit 或 Ctrl-D 退出$ colima list # 列出实例$ colima delete # 删除虚拟机$ colima version # 查看版本$ colima nerdctl install # 安装 nerdctl 别名Colima 的 CPU、内存、磁盘等配置通过 ~/.colima/default/colima.yaml 管理。