Docker是如何进行分发软件呢?又是如何对软件进行标识呢?
通俗点来说,Docker 通过 Image (镜像)来分发软件,通过 镜像名 + 标签,来当作唯一标识。最后,当镜像进行实例化之后,就是特定的、可运行的软件。
Docker image的三种获取方式:
- Docker 仓库, 比如 Docker Hub
- 提前保存的 image 文件
- 通过 Dockerfiles 文件生成的 image
当我们去创建镜像实例,如果镜像不存在,那么默认情况下,docker 会从 docker hub 去查找对应的镜像,并拉取到本地。如果需要从别的地方拉取,可以使用 docker pull [REGISTRYHOST:PORT/][USERNAME/]NAME[:TAG]
命令。
# 默认会向 docker hub 去拉取
docker pull busybox:latest
# 可以从第三方的 仓库拉取,
docker pull quay.io/bitnami/nginx
我们可以使用 docker save
命令来保存一个镜像文件,然后通过 docker load
命令来加载这个镜像文件。
// 保存
docker save -o nginx-docker.tar busybox:latest
// 加载
docker load -i nginx-docker.tar
如果源代码里面有 Dockerfile
文件,那么可以通过该文件,来生成镜像 。
# 镜像名 标签 以及源代码文件夹路径
docker build -t repositoryname:tag sourcepath
删除镜像可以使用 docker image prune
或者 docker image rm
命令
# 删除所有未被使用过的镜像
docker image prune
# 删除选定的镜像。
docker image rm [repository:tag or image id]
删除镜像实例(即 container),可以使用 docker container prune
docker container rm
命令
# 删除所有停止运行的容器
# 删除指定的容器,可通过 -f 参数强制删除正在运行的容器
docker container rm -f [names or container id]
# 或者先停止容器,再进行删除
docker container stop [names or container id]
docker container rm [names or container id]