镜像是运行容器的前提, 官方的 Docker Hub 网站已经提供了数十万个镜像供开放下载。
- 拉取ubuntu18.02版本的镜像
docker pull ubuntu:18.04
- 查看主机上的全部镜像
docker images
在列出信息中, 可以看到几个字段信息:
来自于哪个仓库, 比如 ubuntu 表示ubuntu 系列的基础镜像;
镜像的标答信息, 比如 18.04 、 latest 表示不同的版本信息。 标签只是标记, 并不能标识镜像内容;
镜像的ID(唯一标识镜像), 如果两个镜像的ID相同, 说明它们实际上指向了同一个镜像, 只是具有不同标签名称而已;
创建时间, 说明镜像最后的更新时间;
镜像大小, 优秀的镜像往往体积都较小。
- 利用该镜像创建一个容器,在其中运行bash应用, 执行打印 "Hello World"命令:
docker run -it ubuntu:18.04 bash echo "Hello World" exit
- 使用tag命令添加镜像标签
为了方便在后续工作中使用特定镜像,还可以使用docker tag命令来为本地镜像任意添加新的标签。 例如,添加 一个新的myubuntu: latest镜像标签:
docker tag ubuntu:latest myubuntu:latest
- 搜索镜像
Docker 镜像的 search 子命令。 使用 docker search 命令可以搜索
Docker Hub 官方仓库中的镜像。 语法为 docker search [option] keyword
例如, 搜索官方提供的带 nginx关键字的镜像, 如下所示:
docker search --filter=is-official=true nginx
- 删除和清理镜像
1.使用标签删除镜像
docker rmi myubuntu:latest
2.使用id删除镜像
当使用 docker rmi 命令, 并且后面跟上镜像的 ID (也可以是能进行区分的部分 ID 串前缀)时, 会先尝试删除所有指向该镜像的标签, 然后删除该镜像文件本身。
- 清理镜像
如下命令会自动清理临时的遗留镜像文件层, 最后会提示释放的存储空间
docker image prune -f
- 创建镜像
基于已有容器创建
先启动ubuntu镜像,在其中创建一个test文件后退出
docker run -it ubuntu:18.04 /bin/bash touch test exit
上述启动的容器id为7353ff2a1d40
基于该容器创建镜像
docker commit -m "add a new file" -a "zhaoji" 7353ff2a1d40 test:0.1
创建正常会返回镜像id
查看镜像已经创建成功
- 存出和载入镜像
1 存出镜像
执行以下命令即可导出镜像到本地文件
docker save -o ubuntu_18.04.tar ubuntu:18.04
2 载入镜像
执行以下命令即可导入镜像及其相关元数据(包括标签等)
docker load -i ubuntu_18.04.tar
- 上传镜像
执行以下命令会将镜像上传到docker hub镜像仓库(需提前注册)
docker tag ubuntu:18.04 zhaoji/ubuntu:18.04 docker push zhaoji/ubuntu:18.04
第一次上传时会提示输入登录信息,之后会将登录信息保存在本地~/.docker目录下
容器容器是 Docker 的另 个核心概念 简单来说,容器是镜像的一个运行实例。所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层,同时,容器中的应用进程处于运行状态
如果认为虚拟机是模拟运行的一整套操作系统(包括内核 应用运行态环境和其他系统环境)和跑在上面的应用 那么 Docker 容器就是独立运行的一个(或一组)应用,以及它们必需的运行环境。
- 创建容器
以下命令将基于ubuntu镜像创建一个容器 ps命令可查看目前的容器
docker create -it ubuntu:18.04 docker ps -a
- 启动容器
使用create命令创建的容器处于停止状态,可以用start命令启动
docker start 9bd87e5a570d
- 停止容器
1 暂停容器
docker pause 9bd87e5a570d
2 取消暂停
docker unpause 9bd87e5a570d
3 终止容器
docker stop 9bd87e5a570d
3 重启容器
docker restart 9bd87e5a570d
- 进入容器
docker attach 7353ff2a1d40
然而使用 attach 命令有时候并不方便 当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示;当某个窗口因命令阻塞时,其他窗口也无法执行操作了
Docker 1.3.0 版本起, Docker 提供了一个更加方便的工具 exec 命令,可以在运行中容器内直接执行任意命令
例如:进入到刚刚创建并启动的容器,并启动一个bash
docker exec -it 7353ff2a1d40 /bin/bash
可以打开一个新的bash终端与容器交互且不影响容器内的其他应用
- 删除容器
docker rm 7353ff2a1d40
- 导入和导出容器
某些时候,需要将容器从一个系统迁移到另外一个系统,此时可以使用 Docker 的导入和导出功能,这也是 Docker 自身提供的一个重要特性
# 导出容器 docker export -o test_run.tar dea042355431
#导入容器 #导出的文件又可以使用 docker import 命令导人变成镜像 docker import test_run.tar test_import:1.0



