常用命令笔记
# Docker安装命令
官方文档地址:https://docs.docker.com/engine/
# CentOS
可选:卸载已安装的 Docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装 yum 工具包,添加 Docker 源地址
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
下载安装 Docker
$ yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Ubuntu
可选-卸载已安装的 Docekr
$ for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
更新并下载工具包
$ sudo apt update
$ sudo apt -y install ca-certificates curl gnupg
添加 Docker 的官方 GPG 密钥
$ install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg
设置存储库
$ echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
再次更新索引后安装 Docker
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Debian
可选-卸载已安装的 Docekr
$ for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
更新并下载工具包
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl gnupg
添加 Docker 的官方 GPG 密钥
$ sudo install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg
设置存储库
$ echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
再次更新索引后安装 Docker
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 辅助命令
# Docker版本信息查看
$ docker version
# Docker详细信息查看
$ docker info
# 查看Docker硬盘占用信息
$ docker system df
# 删除Docker缓存
$ docker [command] prune
[command]
image:删除所有中间层镜像,例如<none>,可以在结尾添加-a,无论是否有名称标签只要未使用都删除
container:删除所有未运行的容器
volume:删除所有未使用的容器卷
network:删除所有未使用网桥
system:谨慎使用,清理所有未使用的资源
# Docker帮助命令,可以在任何指令结尾使用--help查看帮助
$ docker [command] --help
# 查看Docker中某一项的详细信息
$ docker [command] inspect [id | name]
[command]
image:查看镜像详情
container:查看容器详情,在command中优先级最高
network:查看网桥详情
# 镜像命令
# 查看本机中所有镜像
$ docker images [options]
[options]
-a:列出所有镜像(包含中间映像层)
-q:只显示镜像id
# 搜索镜像
$ docker search [options] [image]
[options]
-s:列出收藏数不少于指定值的镜像
--no-trunc:显示完整的镜像信息
# 从仓库下载镜像,tag不填默认下载最新版
$ docker pull [image:tag]
# 删除镜像
$ docker rmi [options] [id | image:tag]
[options]
-f:无视容器启动状态,强制删除镜像
# 11.打包镜像,这里建议使用image:tag进行打包,使用id打包载入后镜像名称和版本为空
$ docker save [id | image:tag] -o 名称.tar
# 12.载入镜像,如果镜像载入后image:tag均为none则使用docker tag命令分配
$ docker load -i 名称.tar
$ docker tag [id] [image:tag]
# 容器命令
当遇到容器与宿主机使用:
关联时,除非明确指定哪一侧所在位置,其他默认使用 [ 宿主机:容器 ] 顺序
# 运行容器,最常用的命令参数很多这里优先记录,本地没有镜像会自动下载,未指定tag默认使用最新版
$ docker run [options] [image:tag]
[options]
--restart:容器重启策略
no:不启动容器
always:容器退出时启动容器
unless-stopped:非手动停止容器后启动容器
on-failure:指定退出n次后重启容器,例如 --restart on-failure:3
--network:指定容器的网桥
--name:容器别名
-d:启动守护式容器(在后台启动容器)
-p:端口映射
-P:随机指定宿主机端口映射
-v:文件映射,也就是volume
-e:用作向容器内传递初始化参数
--privileged:赋予容器高级权限,可以访问宿主机设备文件,可以执行一些特权操作,可以绕过一些安全性措施
--env-file:以文件的方式向容器内传入初始化参数
# 创建容器,启动容器、重启容器
$ docker create [options] [image:tag]
$ docker start [id | container]
$ docker restart [id | container]
# 停止容器、删除容器
$ docker stop [id | container]
$ docker rm [options] [id | container]
[options]
-f:无视运行状态,强制删除容器
# 查看容器列表,默认只查看运行中的容器
$ docker ps [options]
[options]
-a:显示所有容器
-q:只显示容器ID
# 查看Docker容器的占用情况,例如CPU,内存,网络资源等
$ docker stats [container]
# 查看所有进程、暂停所有进程、恢复所有进程
$ docker top [id | container]
$ docker pause [id | container]
$ docker unpause [id | container]
# 在容器中执行命令,command是执行的目标
$ docker exec [options] [id | container] [command]
[options]
-i:以交互模式运行容器
-t:分配一个伪终端
[command]
/bin/bash:最常用组合 -it /bin/bash,分配伪终端,以交互式运行bash,就可以执行容器内的命令了
# 修改容器配置信息
$ docker update [options]
[options]
--restart:修改自启动规则,默认为no表示没有自启动规则
--blkio-weight:设置IO权重,默认为0表示不限制
--cpu-shares:设置CPU限制,默认为0表示不限制
--memory:设置内存限制,默认为0表示不限制
# 查看容器的运行日志
$ docker logs [options] [id | container]
[options]
-t:加入时间戳
-f:跟随最新的日志打印
--tail:显示最后的几条日志
--since:显示某个开始时间的所有日志,时间格式支持[RFC3339]、[年月日时分秒]、秒级时间戳
# 容器和宿主机之间复制文件,如果container在左侧就代表复制容器内的文件到宿主机
$ docker cp [container]:[path] [path]
$ docker cp [path] [container]:[path]
# 容器打包成新的镜像
$ docker commit [options] [container:tag]
[options]
-a:镜像作者
-c:使用Dockerfile指令来创建镜像
-m:提交时的说明文字
-p:在commit时,将容器暂停
# 网桥命令
# 查看网桥列表
$ docker network ls
# 创建网桥
$ docker network create [options] [network]
[options]
-d:驱动程序,就是ls中的driver列,默认使用bridge
# 删除网桥
$ docker network rm [network]
# 查看网桥详细信息以及使用网桥的容器
$ docker inspect network [network]
# Dockerfile
新建一个目录,目录内创建名为Dockerfile的文件,将与镜像相关的文件都放在该目录下
构建镜像的命令
# 正常构建镜像执行该命令即可
$ docker build -t image:tag .
# 构建镜像
$ docker build [options] [container:tag]
[options]
-t:指定构建的镜像名称及标签,参照上面的[container:tag]
-f:可以使用该选项指定Dockerfile的路径,而不是默认的当前目录下的Dockerfile
-q:静默模式,可以使用该选项关闭构建过程中的输出信息,只输出构建结果
--force-rm:在构建时强制删除同名镜像
--build-arg:设置构建时的参数通过${}使用,例如 --build-arg NGINX_VERSION=1.19.5
Dockerfile的常用参数笔记
FROM 源镜像
MAINTAINER 作者信息
RUN 构建镜像时运行的指令
CMD 运行容器时执行的shell环境
VOLUME 如果在启动容器时忘记挂载数据卷,该属性会自动挂载到匿名卷
WORKDIR 设置工作目录,后续的相对路径就是基于工作目录,进入容器后默认就是该位置
ENV 构建参数,例如MySQL的root密码
ARG 构建参数,与ENV作用一致,不过作用域不一样,仅在docker build的过程中有效
EXPOSE 声明容器的服务端口(仅仅是声明)
COPY 拷贝文件或目录到容器中
ADD 拷贝文件或目录到容器中,如果是URL会自动下载,压缩包会自动解压
ENTRYPOINT 运行容器时执行的shell命令
# docker-compose
官方文档:https://docs.docker.com/compose
开源地址:https://github.com/docker/compose
# 安装Compose
新版免安装 docker-compose
新版 Docker 在安装时提供了docker-compose-plugin
插件,安装 Docker 时顺便就安装了 compose,可以回顾上面的安装命令
# docker-compose 已安装
$ docker compose version
Docker Compose version v2.21.0
旧版安装 docker-compose
旧版的 Docker 需要在Github上下载docker-compose文件并赋予执行权限
# 访问Github将文件下载到/usr/local/bin/目录下重命名为docker-compose
$ curl -SL https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
# 赋予docker-compose可执行权限
$ chmod +x /usr/local/bin/docker-compose
# 检查安装情况
$ docker-compose version
Docker Compose version v2.20.3
# 使用Compose
在当前目录下创建docker-compose.yml
文件后就可以使用compose了
docker-compose 常用命令及参数
# 拉取镜像
$ docker compose pull
# 创建容器但不启动,没有镜像会下载
$ docker compose create
# 停止所有容器
$ docker compose stop
# 删除所有容器
$ docker compose rm
# 启动所有服务,没有服务会创建,没有镜像会下载,最常用的命令,在这里介绍参数,-d 参数在后台执行
$ docker compose up [options] [name]
[options]
-d:后台启动docker-compose
--no-deps:无视依赖情况
[name]:结尾的name为可选项,默认compose处理所有容器,使用name后就处理指定名称的容器
# 停止并删除所有服务, -v 同时删除容器卷和网桥
$ docker compose down
# 列出所有服务的状态
$ docker compose ps
# 显示所有服务的日志, -f 可实时查看
$ docker compose logs
# 重启所有服务
$ docker compose restart
# 构建镜像
$ docker compose build
docker-compose.yml 参考文件
version: "3.9"
networks:
channel:
name: mynet
driver: bridge
services:
minio:
hostname: minio
container_name: minio
image: minio/minio:latest
restart: always
networks:
- mynet
ports:
- "9000:9000"
- "9001:9001"
environment:
- "TZ=Asia/Shanghai"
- "MINIO_ACCESS_KEY=minio"
- "MINIO_SECRET_KEY=1234567890"
volumes:
- "/opt/docker/minio/data:/data"
- "/opt/docker/minio/conf:/root/.minio"
command: server /data --console-address ":9000" --address ":9001"
nginx:
hostname: nginx
container_name: nginx
image: nginx:1.22.0
restart: always
networks:
- mynet
ports:
- "80:80"
- "443:443"
environment:
- "TZ=Asia/Shanghai"
volumes:
- "/opt/docker/nginx/conf/:/etc/nginx"
- "/opt/docker/nginx/webs/:/usr/share/nginx"
- "/opt/docker/nginx/logs/:/var/log/nginx"
depends_on:
- minio
上次更新: 2024-03-22, 00:04:16