回顾:上二文对Docker做了一些最基本介绍,主要讲解相关小历史与概念,及Docker的安装与基本查看命令操作,相信大家对docker有了一些基本的了解。
本文将在安装好的Docker环境下使用Docker命令行客户端开始学习Docker常用指令与基本操作。
本小节的思维导图如下:
Docker帮助命令
通过命令 docker command --help 或者docker help command更深入的了解指定的 Docker 命令使用方法。
示例:
docker help run/docker run –help (输出的结果是一样的)
docker version: 显示Docker版本
docker info: 显示Docker信息
Docker镜像常用操作命令
罗列镜像
docker images: 列出当前镜像 docker images [OPTIONS] [NAME] 命令参数: -a, --all=false 显示所有镜像,包括中间生成的临时镜像 -f, --filter=[] 通过标签过滤 (i.e. 'dangling=true') --no-trunc=false 不要截断输出 -q, --quiet=false 仅显示容器ID docker images 显示当前仓库中的镜像 docker images -a 显示当前仓库中的镜像与临时镜像 docker images -a -q --no-trunc 显示当前仓库中的镜像与临时镜像的ID,不截断输出
示例:
搜索镜像
docker search: 在Docker Hub上寻找镜像 docker search TERM 命令参数: --automated=false 使用Github或BitBucket的源代码自动构建 --no-trunc=false 不要截断输出 -s, --stars=0 只显示Star数量超过N的镜像 例子: docker search --starts=10 nginx
以上图中包含5个字段,意义如下:
NAME:表示镜像名字,名称不带“/”表示官方发布仓库,否则代表是其他用户二次发布。
DESCRIPTION:表示镜像描述信息
STARS:表示镜像的收藏数,用户可以登录Docker Hub对镜像进行收藏,这个数字类似github上的star,数量代表欢迎程度
OFFICIAL:官方标识,值为[OK]
AUTOMATED:表示是否自动构建,代码托管在Github,代码提交后自动构建镜像
拉取镜像
docker pull: 从远程拉取镜像 docker pull NAME[:TAG] (不加tag, 默认安装最新版本) 例子: docker pull nginx:latest
此时如果执行ctrl + c将会中断拉取镜像。静静等待镜像拉取完成,然后罗列本地镜像将看到本地镜像已经有了刚刚拉取的nginx镜像,执行docker images。
此时如果执行ctrl + c将会中断拉取镜像。静静等待镜像拉取完成,然后罗列本地镜像将看到本地镜像已经有了刚刚拉取的nginx镜像,执行docker images。
以上图中包含5个字段,意义如下:
REPOSITORY:表示镜像仓库
TAG:表示镜像版本信息
IMAGE ID:表示本地唯一序列标识,默认显示12位,实际长度是64位
CREATED:镜像创建的时间,使用距离当前的时间来表示
SIZE:表示镜像的大小
推送镜像
docker push: 推送镜像到远程仓库 docker push NAME[:TAG] 例子: docker push workdsz/nginx:latest
构建镜像
docker build: 使用Dockerfile构建镜像 docker build [OPTIONS] PATH|URL|- 命令参数: --force-rm=false 移除构建时生成的中间容器 --no-cache=false 构建镜像时不使用cache -q, --quiet=false 不显示容器的输出 --rm=true 构建成功后,移除构建时生成的中间容器 -t, --tag="" 构建成功后,新建镜像的名称
镜像打TAG
docker tag: 为镜像加上标签 docker tag [OPTIONS] IMAGE[:TAG][REGISTRYHOST/][USERNAME/]NAME[:TAG] 命令参数: -f, --force=false 强制打上标签 例子: docker tag nginx:latest workdsz/nginx:1.13 给nginx:latest打上新TAG: workdsz/nginx:1.13
删除镜像
docker rmi 删除一个或者多个镜像 docker rmi IMAGE [IMAGE...] 命令参数: -f, --force=false 强制删除镜像 --no-prune 不要删除未标记的父级 例子: docker rmi -f nginx:latest
Docker容器常用操作
创建并启动容器
docker run: 在一个新的容器中执行命令 (CTRL-p CTRL-q 退出至后台运行) docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 例子: docker run -i -t nginx:latest /bin/bash 启动一个新的nginx容器 docker run --rm -i -t nginx:latest /bin/bash 建议新手测试加上--rm docker run -i -t --name "nginx-test" nginx:latest /bin/bash
查看容器进程
docker ps: 列出当前容器 docker ps [OPTIONS] 命令参数: -a, --all=false 显示所有容器,包括当前没有运行的容器 -f, --filter=[] 按条件过滤容器, 可选的过滤选项: exited= 容器的返回值 -l, --latest=false 显示最新的一个容器 -n num 显示最新的N个容器 --no-trunc=false 不要截断输出 -q, --quiet=false 仅显示容器ID -s, --size=false 显示容器大小 例子: docker ps 当前正在运行的容器 docker ps -a 当前正在运行或是停止的容器 docker ps -a -q --no-trunc 获得当前所有容器的ID,不截断输出 docker rm $(echo $(docker ps -q --no-trunc) $(dockerps -a -q--no-trunc) | sed 's|\s|\n|g' |sort | uniq -u) 删除当前不在运行状态的容器ID,也可以把前面改成docker rm
进入容器
docker attach: 挂载正在后台运行的容器到前台 docker attach [OPTIONS] Container 例子: docker attach nginx
执行命令
docker exec -i -t nginx ls -l
停止容器
docker stop: 停止运行中的容器 (CTRL-d 强制退出, Exited (0)) docker stop [OPTIONS] CONTAINER [CONTAINER...] 命令参数: -t, --time=10 杀掉容器进程之前,等待的时间 例子: docker stop nginx
终止容器
docker kill: 杀掉一个运行中的容器 (Exited (-1)) docker kill [OPTIONS] CONTAINER [CONTAINER...] 命令参数: - s, --signal="KILL" 选择向容器发出的Signal 例子: docker kill nginx
启动容器
docker start: 重启停止的容器 Docker start CONTAINER [CONTAINER...] 命令参数: -a,--attach=false 启动容器并进入容器中 -i,--interactive=false 启动容器并进入交互模式 例子: docker start nginx
重启容器
docker restart: 重启运行中的容器 docker restart [OPTIONS] CONTAINER [CONTAINER...] 命令参数: -t, --time=10 杀掉容器进程之前,等待的时间 例子: docker restart nginx
删除容器
docker rm [OPTIONS] CONTAINER [CONTAINER...] 命令参数: -f, --force=false 强制删除容器(使用SIGKILL) -l, --link=false 删除指定的链接,而不是基础容器 -v, --volumes=false 移除与容器关联的卷 例子: docker rm nginx 删除容器 docker rm $(docker ps -a -q) 删除所有容器
导出容器
docker export: 把容器系统文件打包并导出来,方便分发给其他场景使用。 docker export CONTAINER 例子: docker export nginx > nginx.tar 将nginx的最新镜像打包为nginx.tar导入容器
导入容器
docker import: 加载容器系统文件 docker import URL|- [REPOSITORY[:TAG]] 例子: docker import nginx workdsz/nginx:latest docker import http://example.com/exampleimage.tgz cat exampleimage.tgz | docker import -exampleimagelocal:new