获取镜像
docker search XXX (查看远端库的镜像)
docker pull [选项] [Docker Registry] 地址[:端口号]/]仓库名[:标签]
示例: docker pull Ubuntu:18.04
Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号]。默认地址是 Docker Hub(docker.io)。
仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名>。
对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像
运行镜像
docker run -it --rm ubuntu:18.04 bash
-it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。
--rm:这个参数是说容器退出后随之将其删除。使用 --rm 可以避免浪费空间。
Docker新建并启动容器
新建容器的前提得有镜像,先查看镜像
docker image ls
docker run –it ubuntu:18.04 /bin/bash
Docker守护态运行
docker run ubuntu:18.04 /bin/sh "while true; do echo hello world; sleep 1; done" 立即执行
docker run –d ubuntu:18.04 /bin/sh "while true; do echo hello world; sleep 1; done" 后台运行
docker container ls 查看容器的运行
docker container logs [container ID or NAMES] 获取容器的输出信息
进入运行的容器
docker run -dit ubuntu
docker ps –a
docker exec –it 容器 bash (用exec进入之后退出后,这个容器仍然在运行)
Exit 退出容器
Ctrl + D 退出容器
列出镜像
docker image ls
仓库名 标签 镜像ID 创建时间 大小
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 5f515359c7f8 5 days ago 183 MB
nginx latest 05a60462f8ba 5 days ago 181 MB
mongo 3.2 fe9198c04d62 5 days ago 342 MB
<none> <none> 00285df0df87 5 days ago 342 MB
ubuntu 18.04 f753707788c5 4 weeks ago 127 MB
ubuntu atest f753707788c5 4 weeks ago 127 MB
说明:镜像ID是镜像的唯一标识,一个镜像可以对应多个标签(譬如上面的Ubuntu)
所以它们是同一个镜像
补充:
列出中间层镜像:docker image ls –a
列出部分镜像:docker image ls Ubuntu
docker image ls Ubuntu:18.04
查找在XXX之后建立的镜像
docker image ls –f since= XXX
查找在XXX之前建立的镜像
docker image ls –f before= XXX
查找定义了LABEL的镜像
docker image ls –f label=com.example.version=0.1
以特定格式显示 (-q只显示ID列表)
docker image ls –q
虚悬镜像
<none> <none> 00285df0df87 5 days ago 342 MB
- 这个镜像原本是有镜像名和标签的,原来为 mongo:3.2
- 随着官方镜像维护,发布了新版本后,重新 docker pull mongo:3.2 时,mongo:3.2 这个镜像名被转移到了新下载的镜像身上,而旧的镜像上的这个名称则被取消,从而成为了<none>。
- 由于新旧镜像同名,旧镜像名称被取消,从而出现仓库名、标签均为<none> 的镜像。
- 所以这类无标签镜像也被称为虚悬镜像(dangling image)
这个命令可以显示虚悬镜像
docker image ls -f dangling=true
一般来说,虚悬镜像失去了存在的价值,可以删除
docker image prune
占用磁盘空间清理
docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 24 0 1.992GB 1.992GB (100%)
Containers 1 0 62.82MB 62.82MB (100%)
Local Volumes 9 0 652.2MB 652.2MB (100%)
Build Cache 0B 0B
说明:第一行指的是Docker镜像占用的空间,
第二行指的是Docker容器占用的空间,
第三行指的是Docker数据卷占用的空间,
最后一列指的是可清理的空间大小
docker system prune
可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,无tag的镜像
docker system prune –a
清理得更加彻底,可以将没有容器使用Docker镜像都删掉
注意:这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了
删除本地镜像
docker image rm [选项] <镜像1> [<镜像2> ...]
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 0584b3d2cf6d 3 weeks ago 196.5 MB
redis alpine 501ad78535f0 3 weeks ago 21.03 MB
docker latest cf693ec9b5c7 3 weeks ago 105.1 MB
nginx latest e43d811ce2f4 5 weeks ago 181.5 MB
1. 用ID删除镜像
docker image rm 501
可以用长ID也可以用短ID,只要可以区分就可以
2. 用镜像名删除镜像
docker image rm centos
暂停启动容器
docker stop 容器
docker start 容器
docker restart 容器
docker ps –a 查看容器
导出与导入容器
导出容器:
docker ps –a 查看后台运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7691a814 ubuntu:18.04 "/bin/bash" 36 hours ago Exited (0) 21 hours ago test
docker export 7691a814 >Ubuntu.tar 导出容器快照到本地文件
导入容器
cat Ubuntu.tar | docker import – test/ubuntu:v1.o
docker image ls –a
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
test/ubuntu v1.0 9d37a6082e97 About a minute ago 171.3 MB
通过指定URL或者某个目录导入
docker import http://example.com/exampleimage.tgz example/imagerepo
注:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。
这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。
此外,从容器快照文件导入时可以重新指定标签等元数据信息