对镜像的基础操作

获取当时所有镜像(docker images)

docker image ls
# 或者
docker images

docker pull拉下来的镜像在哪个文件夹 docker pull 会覆盖原镜像吗_docker

docker pull拉下来的镜像在哪个文件夹 docker pull 会覆盖原镜像吗_docker_02

标签

含义

REPOSITORY

镜像所在的仓库名称

TAG

镜像标签

IMAGEID

镜像ID

CREATED

镜像的创建日期(不是获取该镜像的日期)

SIZE

镜像大小

 镜像(docker pull)

        除了使用官方的镜像外,我们还可以在仓库中申请一个自己的账号,保存自己制作的进行,或者拉去使用他人的镜像。

# 官方镜像
docker image pull 镜像名称 
# 或简写为 
docker pull 镜像名称
# 比如
docker pull ubuntu
docker pull ubuntu:16.04

# 个人镜像
docker pull 仓库名称/镜像名称
docker pull xunmi/django

# 第三方仓库拉去
docker pull 第三方仓库地址/仓库名称/镜像名称
docker pull hub.c.163.com/library/mysql:latest
(默认仓库名为library,所有从官方获取镜像相当于`sudo docker image pull library/镜像名称`)

docker pull拉下来的镜像在哪个文件夹 docker pull 会覆盖原镜像吗_运维_03

 删除镜像(docker rmi)

docker image rm 镜像名或镜像ID 或 docker rmi 镜像名或镜像ID
docker image rm hello-world
docker rmi feb5d9fea6a5

删除镜像的前提是没有使用这个镜像的容器,如果有需要先删除容器(报错:Error response from daemon: conflict: unable to delete 镜像ID (must be forced) - image is being used by stopped container 容器ID则代表有容器使用了此镜像。)可以尝试先执行docker rm 容器ID删除容器,如果还报错,可以看我下方删除容器的具体方法。
几条删除命令的区别

docker rm: 删除一个或多个容器
docker rmi: 删除一个或多个镜像
docker prune: 用来删除不再使用的 docker 对象
具体区别可以看下此博客

PS C:\Users\Administrator> docker image rm hello-world
Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container 91efb48c2f43 is using its referenced image feb5d9fea6a5

PS C:\Users\Administrator> docker image rm feb5d9fea6a5
Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be forced) - image is being used by stopped container bc739d15dfe9

PS C:\Users\Administrator> docker image rm -f feb5d9fea6a5
Untagged: hello-world:latest
Untagged: hello-world@sha256:53f1bbee2f52c39e41682ee1d388285290c5c8a76cc92b42687eecf38e0af3f0
Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412

docker pull拉下来的镜像在哪个文件夹 docker pull 会覆盖原镜像吗_容器_04

 加载镜像(docker run)成容器

上面我们说过,镜像只是一个只读类型的文件,而我们的环境不可能只是一个这样的文件,所以我们需要把这个镜像加载成我们的环境,也就是让他变成容器。

docker run [可选参数] 镜像名 [向启动容器中传入的命令]

docker pull拉下来的镜像在哪个文件夹 docker pull 会覆盖原镜像吗_5e_05

 可以启动一个系统docker run -i -d -t --name=kali-test kalilinux/kali-rolling(这里我使用linux的一个发行版kali作为介绍)
或可以简写为docker run -idt --name=kali-test kalilinux/kali-rolling
PS: 如果加载一个我们没有的镜像,docker会自动从官方仓库中进行拉去。

docker pull拉下来的镜像在哪个文件夹 docker pull 会覆盖原镜像吗_容器_06

 

docker pull拉下来的镜像在哪个文件夹 docker pull 会覆盖原镜像吗_容器_07

  或者我们可以启动一个网站docker run -dp 8080:80 --name docker-test docker/getting-started

如果你没有下载docker/getting-started的进行,这里会自动帮你下载

docker pull拉下来的镜像在哪个文件夹 docker pull 会覆盖原镜像吗_运维_08


成功启动后,可以在浏览器中输入http://localhost:8080/即可看到如下页面

docker pull拉下来的镜像在哪个文件夹 docker pull 会覆盖原镜像吗_运维_09