Docker 是基于
Go
语言实现的开源容器项目。它诞生于2013年年初,最初发起者是dotCloud
公司。
Docker
大部分的操作都围绕着它的三大核心概念:镜像
、容器
和仓库
。
Docker
镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。镜像是创建 Docker
容器的基础。Docker
容器类似于一个轻量级的沙箱,Docker
利用容器来运行和隔离应用。
容器是从镜像创建的应用运行实例。它可以启动、开始、停止、删除,而这些容器都是彼此相互隔离、互不可见的。Docker
仓库类似于代码仓库,是 Docker
集中存放镜像文件的场所。语法
$ docker info [选项]
实例
$ docker info
语法
$ docker login [OPTIONS] [SERVER]
选项
--password , -p 密码
--password-stdin 从标准输入密码
--username , -u 用户名
实例
$ docker login
语法
$ docker logout [SERVER]
实例
$ docker logout localhost:8080
$ docker [image] pullNAME[:TAG]
NAME
是镜像仓库名称(用来区分镜像), TAG
是镜像的标签(往往用来表示版本信息)。
# 获取一个 Nginx 1.19.3 镜像
$ docker pull nginx:1.19.3
# 下载一个最新版本 Nginx 镜像
$ docker pull nginx
对于 Docker
镜像来说,如果不显式指定 TAG
,则默认会选择 latest
标签。latest标签意味着该镜像的内容会跟踪最新版本的变更而变化,内容是不稳定的。
语法
$ docker images [选项] [REPOSITORY[:TAG]]
选项
-a, --all=true|false:列出所有(包括临时文件)镜像文件,默认为否
--digests=true|false:列出镜像的数字摘要值,默认为否
-f, --filter=[]:过滤列出的镜像,如dangling=true只显示没有被使用的镜像;也可指定带有特定标注的镜像等
--format="TEMPLATE":控制输出格式,如.ID代表ID信息,.Repository代表仓库信息等
--no-trunc=true|false:对输出结果中太长的部分是否进行截断,如镜像的ID信息,默认为是
-q, --quiet=true|false:仅输出ID信息,默认为否。
实例
# 显示所有镜像
$ docker images
# 显示 node 镜像
$ docker images node
# 显示 node 镜像数字摘要
docker images --digests node
使用 docker[image]inspect
命令可以获取该镜像的详细信息,包括制作者、适应架构、各层的数字摘要等。
语法
docker inspect [选项] NAME|ID [NAME|ID...]
选项
--format , -f 使用给定的Go模板格式化输出
--size , -s 如果类型为容器,则显示文件总大小
--type 返回指定类型的JSON
实例
# 查看 node 详情
$ docker inspect node
# 输出格式
docker inspect --format='{{.Os}}' node
可以使用 history
子命令,列出镜像各层的创建信息。
语法
$ docker history [OPTIONS] IMAGE
实例
$ docker history node
语法
$ docker search [选项] node
选项
-f, --filter filter:过滤输出内容
--format string:格式化输出内容
--limit int:限制输出结果个数,默认为25个
--no-trunc:不截断输出结果。
实例
# 搜索 node
$ docker serch node
语法
$ docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
实例
# 为专用存储库标记镜像标签
$ docker tag 0e5574283393 localhost:5000/fedora/httpd:version1.0
# 标记名称和标记引用镜像
$ docker tag httpd:test fedora/httpd:version1.0.test
语法
$ docker push [OPTIONS] NAME[:TAG]
实例
$ docker push node:latest
语法
$ docker create [选项] IMAGE [COMMAND] [ARG...]
实例
# 新建容器
$ docker create -it node:latest
语法
$ docker ps [OPTIONS]
实例
# 查看容器
$ docker ps
# 查看所有容器
$ docker ps -a
语法
$ docker start [选项] CONTAINER [CONTAINER...]
实例
$ docker start 769bab71c758
新建容器,并启动 bash 终端
语法
$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
实例
$ docker run -it node /bin/bash
语法
$ docker pause CONTAINER [CONTAINER...]
实例
$ docker pause fd84cd4fc3b7
语法
$ docker restart [OPTIONS] CONTAINER [CONTAINER...]
实例
$ docker restart fd84cd4fc3b7
语法
$ docker stop [OPTIONS] CONTAINER [CONTAINER...]
实例
$ docker stop fd84cd4fc3b7
语法
$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
实例
$ docker exec -it 769bab71c758 /bin/bash
可以使用docker [container] rm命令来删除处于终止或退出状态的容器。
语法
$ docker rm [OPTIONS] CONTAINER [CONTAINER...]
选项
-f, --force=false:是否强行终止并删除一个运行中的容器
-l, --link=false:删除容器的连接,但保留容器
-v, --volumes=false:删除容器挂载的数据卷。
实例
$ docker rm e4f49098de08
语法
$ docker inspect [OPTIONS] NAME|ID [NAME|ID...]
实例
$ docker inspect 692586a43ec2