1.Docker镜像
1.1 获取镜像
docker pull NAME[:TAG] 从镜像源下载镜像
NAME:镜像仓库名称
TAG:标签,默认latest
命令选项 | 描述 |
---|---|
-a | 是否获取仓库中所有镜像 默认false |
--disable-content-trust | 取消镜像内容校验 默认true |
1.2 查看镜像信息
1.2.1 ls
docker images 或 docker image ls 列出本地已有镜像基本信息
1.2.2 tag
docker tag IAMGE_NAME:TAG NEW_IMAGE_NAME:NEW_TAG 为本地镜像任意添加新标签
docker tag 命令添加标签类似链接的作用,他们实际上指向同一个镜像文件,只是别名不同
1.2.3 inspect
docker inspect NAME:TAG 获取镜像的详细信息
1.2.4 history
docker history NAME:TAG 查看镜像历史信息
1.3 查找镜像
docker search [option] keyword 从镜像源中搜索镜像
命令选项 | 描述 |
---|---|
--filter filter | 过滤输出内容 |
--format string | 格式化输出内容 |
--limit int | 限制输出个数 默认25 |
--no-trunc | 不截断输出结果 |
1.4 删除清理镜像
1.4.1 rmi
docker rmi IMAGE [IMAGE...] 删除本地镜像
IMAGE:镜像ID或者标签
命令选项 | 描述 |
---|---|
-f | 强制删除镜像,即使有容器依赖 |
-no-prune | 不清理未带标签的父镜像 |
1.4.2 prune
docker image prune 清理镜像临时文件
命令选项 | 描述 |
---|---|
-a | 同时删除所有未使用的镜像 |
-filter filter | 清理符合给定过滤器的镜像 |
-f | 强制删除镜像,不进行确认提示 |
1.5 创建镜像
创建镜像主要有两种方式:基于已有镜像的容器创建,基于Dockerfile创建
1.5.1 基于已有容器创建
docker commit [option] CONTAINER NAME[:TAG]
CONTAINER:容器ID
NAME:自定义名称
TAG:自定义标签
命令选项 | 描述 |
---|---|
-a, --author string | 作者信息 |
-c, --change=[] | 提交时执行Dockerfile指令 |
-m, --message string | 提交信息 |
-p, --pause=true | 提交时暂停容器的运行 |
1.5.2 基于Dockerfile创建
Dockerfile是一个文本文件,给定指令描述基于父镜像创建新镜像
docker build [option] NAME[:TAG]
NAME:名称
TAG:标签
更多使用Dockerfile的技巧后续介绍
1.6 存出和载入镜像
1.6.1 存出镜像
docker save [option] NAME[:TAG]
NAME:镜像仓库名称
TAG:标签
命令选项 | 描述 |
---|---|
-o, -output string | 导出镜像到指定文件中 |
1.6.2 载入镜像
docker load -i FILE 或 docker load < FILE
FILE:指定文件载入镜像
1.7 上传镜像
docker push NAME[:TAG] 上传本地镜像
NAME:镜像仓库名称
TAG:标签
2.Docker容器
docker容器是docker镜像的一个运行实例
2.1 创建容器
docker create [option] NAME[:TAG] 创建一个停止状态的新容器
NAME:镜像仓库名称
TAG:标签
常用命令选项:
命令选项 | 描述 |
---|---|
-d, --detach=true|false | 是否后台运行容器 默认false |
--expose=[] | 容器暴露出来的端口或端口范围 |
-i, --interactive=true|false | 保持标准输入打开 默认false |
--net string | 容器网络模式 默认bridge |
-p, --publish=[] | 指定容器到主机的端口映射 |
--rm=true|false | 容器推出后是否自动删除 |
-t, --tty=true|false | 是否分配一个伪终端 默认false |
-v, --volume | 挂载主机上的文件卷到容器内 |
--dns=[] | 自定义DNS服务器 |
-e, --env=[] | 指定容器内的环境变量 |
-h, --hostname="" | 指定容器内的主机名 |
--ip="" | 指定容器IPv4地址 |
--ip6="" | 指定容器IPv6地址 |
--link=[] | 连接到其它容器 |
--mac-address="" | 指定容器Mac地址 |
--name="" | 指定容器别名 |
-m, --memory="" | 限制容器内应用使用的内存 单位:b, k, m, g |
2.2 启动容器
docker start CONTAINER 启动一个已经创建的容器
2.3 重启容器
docker restart CONTAINER 重启运行中的容器
2.4 创建并启动容器
docker run [option] NAME[:TAG] [/bin/bash] 创建并启动容器
NAME:镜像仓库名称
TAG:标签
/bin/bash:启动一个bash终端
可用命令选项同create
操作
2.5 暂停容器
docker pause CONTAINER [CONTAINER...] 暂停运行中的容器
docker unpause CONTAINER [CONTAINER...] 恢复暂停的容器到运行中
2.6 终止容器
docker stop CONTAINER 终止运行中的容器
终止状态的容器可以使用start
命令重新启动
2.7 进入容器
当创建容器时使用-d
参数,容器启动后会进入到后台运行。
使用官方的attach
或exec
命令可以进入到容器内部。
2.7.1 attach
docker attach [option] CONTAINER
命令选项 | 描述 |
---|---|
--detach-keys[=[]] | 退出attach模式的快捷键序列 默认ctrl-p ctrl-q |
--no-stdin=true|false | 是否关闭标准输入 默认false(打开) |
--sig-proxy=true|false | 是否代理收到的系统信号给应用进程 默认true |
当有多个窗口同时attach到同一个容器时,所有窗口会同步显示,当某个窗口阻塞时,其它窗口也无法执行操作
2.7.2 exec
docker exec [option] CONTAINER /bin/bash 进入指定的容器并启动一个bash
/bin/bash:启动一个bash终端
命令选项 | 描述 |
---|---|
-d, --detach | 在容器中后台执行命令 |
--detach-keys="" | 指定将容器切回后台的按键 |
-e, --env=[] | 指定环境变量列表 |
-i, --interactive=true|false | 打开标准输入,接受用户输入命令 默认false |
--privileged=true|false | 是否给执行命令最高权限 默认false |
-t, --tty=true|false | 是否分配伪终端 默认false |
-u, --user="" | 执行命令的用户名或ID |
2.8 删除容器
docker rm [option] CONTAINER [CONTAINER...] 删除容器
命令选项 | 描述 |
---|---|
-f, --force=false | 是否强制终止并删除一个运行中的容器 |
-l, --link=false | 删除容器的连接,保留容器 |
-v, --volumes=false | 删除容器挂载的数据卷 |
2.9 查看容器
2.9.1 查看容器详情
docker container inspect CONTAINER [CONTAINER...]
2.9.2 查看容器内进程
docker [container] top [option] CONTAINER [CONTAINER...]
命令选项 | 描述 |
---|---|
-a, --all | 输出所有容器统计信息 默认仅运行中的容器 |
-format string | 格式化输出信息 |
-no-stream | 不持续输出 默认自动持续更新实时结果 |
-no-trunc | 不截断输出信息 |
2.10 其它
2.10.1 文件复制
docker [container] cp [option] SRC_PATH CONTAINER:DEST_PATH
将源路径SRC_PATH复制到指定容器的目标路径DEST_PATH
命令选项 | 描述 |
---|---|
-a, -archive | 打包模式 |
-L, -follow-link | 跟随软链接 |
2.10.2 查看容器内文件系统的变更
docker [container] diff CONTAINER
2.10.3 查看端口映射
docker container port CONTAINER
3.Docker仓库
Docker仓库(Repository)是集中存放Docker镜像的地方,它可以分为私有仓库和公有仓库。
3.1 DockerHub公共镜像市场
Docker官方提供了一个最大的公共镜像仓库DockerHub,对于绝大部分镜像的需求都可以在DockerHub中直接下载。国内从DockerHub拉取镜像是会遇到困难,可以通过配置镜像加速器解决解决。
3.2 第三方镜像市场
国内有大量的云服务商都提供了Docker镜像市场,如:腾讯云,网易云,阿里云等。
3.3 本地私有仓库搭建管理
3.3.1 搭建
使用Docker官方提供的registry镜像
docker run -d -p 5000:5000 registry:2
默认情况下,仓库会被创建到容器的/var/lib/registry
目录,此时本地将会启动一个私有仓库服务,监听的端口为:5000。
3.3.2 管理
常用命令参考以上章节,使用私有仓库时,需要在镜像名称前添加地址(ip:port,如:172.0.0.1:5000)。
对于比较新版本的Docker,对于安全性的要求也比较高,要求仓库支持SSL/TLS证书,对于仅在内部使用的私有仓库,可以配置证书或关闭对仓库安全性的检查。
通过修改Docker daemon启动参数,添加受信任的私有仓库地址
DOCKER_OPTS="--insecure-registry ip:port"