一个完整的Docker
有以下几个部分组成:
DockerClient
客户端Docker Daemon
守护进程Docker Image
镜像DockerContainer
容器
Docke
r 镜像(Image),就相当于是一个 root
文件系统
镜像(Image
)和容器(Container
)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository
):仓库可看成一个代码控制中心,用来保存镜像。
下面是一些基本docker的基本操作
docker images 查看存在的镜像
docker rmi image名 删除镜像
docker run -dt --name sqli -p 80:80 --rm acgpiano/sqli-labs 运行存在的镜像
docker exec -it <container ID> /bin/bash 进入运行中的容器
docker run -it --rm ubuntu /bin/bash 运行存在的镜像,并以交互的方式进入容器,运行完删除容器
docker ps 查看运行中的容器
docker ps -a 查看所有容器
docker ps -aqf “name=容器的名字” 查询容器ID
docker stop <container ID> 停止指定的容器,不指定为停止所有容器
docker rm 容器id 删除所有的容器
docker container [stop/start/restart] 停止/开启/重启容器
docker container kall <container ID> 强制停止容器
docker commit -p <container ID> container-backup 创建Docker的快照
把宿主机文件拷到容器里面
docker cp 要拷贝的文件路径 容器名: 要拷贝到容器里面对应的路径
容器里面拷文件到主机
docker cp 容器名: 要拷贝的文件在容器中的路径 要拷贝到宿主机器的响应路径
删除镜像
1.暴力删除
例如:下面的 docker.镜像名称
docker rmi -f docker.io/alpine
直接删除镜像以及跟它有关联的东西,但是,我们一般不推荐这样暴力的做法,正确的做法应该是:先删除引用这个镜像的容器,再删除这个镜像;
2.除了通过标签名称来删除镜像,我们还可以通过制定镜像 ID, 来删除镜像,如:
docker rmi ee7cbd482336
一旦制定了通过 ID 来删除镜像,它会先尝试删除所有指向该镜像的标签,然后在删除镜像本身。