Docker常用命令汇总

一、Docker基础命令

  • 启动docker:systemctl start docker
  • 关闭docker:systemctl stop docker
  • 重启docker:systemctl restart docker
  • docker设置随服务启动而自启动:systemctl enable docker
  • 查看docker 运行状态:systemctl status docker
  • 查看docker 版本号信息:docker version/docker info
  • docker 帮助命令:docker --help
  • 查看docker具体命令的使用帮助:docker ps --help

二、Docker本地镜像管理

查看本地镜像列表[images]

语法: docker images [OPTIONS] [REPOSITORY[:TAG]]

OPTIONS说明:

  • -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);

  • --digests :显示镜像的摘要信息;

  • -f :显示满足条件的镜像;

  • --format :指定返回值的模板文件;

  • --no-trunc :显示完整的镜像信息;

  • -q :只显示镜像ID。

    docker images

三、Dockerfile 指令详解

1、 FROM 指定基础镜像

FROM 指令用于指定其后构建新镜像所使用的基础镜像。FROM 指令必是 Dockerfile 文件中的首条命令,启动构建流程后,Docker 将会基于该镜像构建新镜像,FROM 后的命令也会基于这个基础镜像。

FROM语法格式为:

FROM <image>

FROM <image>:<tag>

FROM <image>:<digest>

通过 FROM 指定的镜像,可以是任何有效的基础镜像。FROM 有以下限制:

FROM 必须 是 Dockerfile 中第一条非注释命令

在一个 Dockerfile 文件中创建多个镜像时,FROM 可以多次出现。只需在每个新命令 FROM 之前,记录提交上次的镜像 ID。

tag 或 digest 是可选的,如果不使用这两个值时,会使用 latest 版本的基础镜像

2、Docker使用Dockerfile创建镜像[build]

语法: docker build [OPTIONS] PATH | URL | -

OPTIONS说明:

  • --build-arg=[] :设置镜像创建时的变量;
  • --cpu-shares :设置 cpu 使用权重;
  • --cpu-period :限制 CPU CFS周期;
  • --cpu-quota :限制 CPU CFS配额;
  • --cpuset-cpus :指定使用的CPU id;
  • --cpuset-mems :指定使用的内存 id;
  • --disable-content-trust :忽略校验,默认开启;
  • -f :指定要使用的Dockerfile路径;
  • --force-rm :设置镜像过程中删除中间容器;
  • --isolation :使用容器隔离技术;
  • --label=[] :设置镜像使用的元数据;
  • -m :设置内存最大值;
  • --memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
  • --no-cache :创建镜像的过程不使用缓存;
  • --pull :尝试去更新镜像的新版本;
  • -q :安静模式,成功后只输出镜像ID;
  • --rm :设置镜像成功后删除中间容器;
  • --shm-size :设置/dev/shm的大小,默认值是64M;
  • --ulimit :Ulimit配置。

实例:

使用当前目录的Dockerfile创建镜像:

docker build -t w3xue/ubuntu:v1 . 

使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像:

docker build github.com/creack/docker-firefox

3、Dcoker查看指定镜像的创建历史[history]

语法docker history [OPTIONS] IMAGE

OPTIONS说明:

  • -H :以可读的格式打印镜像大小和日期,默认为true;
  • --no-trunc :显示完整的提交记录;
  • -q :仅列出提交记录ID。

实列:

查看容器nginx的创建历史记录:

docker history nginx

4、 RUN 执行命令

在镜像的构建过程中执行特定的命令,并生成一个中间镜像。格式:

#shell格式

RUN <command>

#exec格式

RUN ["executable", "param1", "param2"]

RUN 命令将在当前 image 中执行任意合法命令并提交执行结果。命令执行提交后,就会自动执行 Dockerfile 中的下一个指令。

层级 RUN 指令和生成提交是符合 Docker 核心理念的做法。它允许像版本控制那样,在任意一个点,对 image 镜像进行定制化构建。

RUN 指令创建的中间镜像会被缓存,并会在下次构建中使用。如果不想使用这些缓存镜像,可以在构建时指定 --no-cache 参数,如:docker build --no-cache。

OPTIONS说明:

  • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
  • -d: 后台运行容器,并返回容器ID;
  • -i: 以交互模式运行容器,通常与 -t 同时使用;
  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • --name="nginx-lb": 为容器指定一个名称;
  • --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
  • --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
  • -h "mars": 指定容器的hostname;
  • -e username="ritchie": 设置环境变量;
  • --env-file=[]: 从指定文件读入环境变量;
  • --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
  • -m :设置容器使用内存最大值;
  • --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
  • --link=[]: 添加链接到另一个容器;
  • --expose=[]: 开放一个端口或一组端口;

实例:

使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为testNginx :

docker run --name testNginx -d nginx:latest

四、查看本地正在运行的容器[ps]

语法: docker ps [OPTIONS]

OPTIONS说明:

  • -a :显示所有的容器,包括未运行的。

  • -f :根据条件过滤显示的内容。

  • --format :指定返回值的模板文件。

  • -l :显示最近创建的容器。

  • -n :列出最近创建的n个容器。

  • --no-trunc :不截断输出。

  • -q :静默模式,只显示容器编号。

  • -s :显示总的文件大小。

    docker ps

五、Dcoker获取容器的日志[logs]

语法: docker logs [OPTIONS] CONTAINER

OPTIONS说明:

  • -f : 跟踪日志输出
  • --since :显示某个开始时间的所有日志
  • -t : 显示时间戳
  • --tail :仅列出最新N条容器日志

实例:

跟踪查看容器yyflightNginx的日志输出(帮你查看这个容器在某个时间段被执行了什么操作):

docker logs -f yyflightNginx

六、Docker列出指定的容器的端口映射[port]

docker port :列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口。

实例:

查看容器testNginx的端口映射情况:

docker port testNginx

七、Docker删除本地一个或多少镜像[rmi]

语法: docker rmi [OPTIONS] IMAGE [IMAGE...]

OPTIONS说明:

  • -f :强制删除;
  • --no-prune :不移除该镜像的过程镜像,默认移除;

实例:

强制删除本地镜像nginx/ubuntu

docker rmi -f nginx/ubuntu
相关推荐
LKID体1 小时前
docker 数据目录迁移
java·docker·eureka
b哈利路亚d2 小时前
使用ubuntu On windows安装docker
运维·docker·容器
少陽君2 小时前
k8s之调动pod到指定节点与创建多容器pod并查找pod日志
云原生·容器·kubernetes
茶馆大橘3 小时前
Docker部署学习
linux·运维·学习·docker·容器
weixin_487058414 小时前
解决 Screen 错误:“There is no screen to be resumed matching”
linux·docker
Algorithm15764 小时前
关于使用K8s实现容器化作业的总时效最优调度
云原生·容器·kubernetes
一叶飘零_sweeeet7 小时前
Docker 部署 Java 项目实践
java·docker
Toky Zhu9 小时前
修改 Docker 镜像默认存储位置的方法
spring cloud·docker·eureka
Toormi9 小时前
在k8s环境中如何在本地和pod之间同步文件?
云原生·容器·kubernetes