Docker 容器镜像删除
1.停止所有的container,这样才能够删除其中的images:
docker stop $(docker ps -a -q)
如果想要删除所有container的话再加一个指令:
docker rm $(docker ps -a -q)
2.查看当前有些什么images
docker images
3.删除images,通过image的id来指定删除谁
docker rmi <image id>
想要删除untagged images,也就是那些id为<None>的image的话可以用
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
要删除全部image的话
docker rmi $(docker images -q)
yum install docker 安装服务
systemctl start docker.service 启动服务
systemctl enable docker.service 开机启动服务
docker pull centos 下载映像到本地
docker images centos 查看映像列表
docker run -i -t centos /bin/bash 以交互式启动容器
docker run centos echo 'Hello World'
(1)启动,systemctl start docker.service
(2)开机启动,systemctl enable docker.service
(3)帮助,docker --help
(4)概要信息,docker info
(5)镜像查看,docker images
(6)容器查看,即进程查看,docker ps -a
(7)最近容器查看, docker ps -l
(1)下载镜像,docker pull nginx
(2)启动容器,docker run -d -p 8080:80 nginx,把容器内的nginx的80端口,映射到当前服务器的8080端口,当前服务器的ip是192.168.1.120,浏览器输入http://192.168.1.120:8080/,就可以看到nginx已启动,
(3)再启动多一个容器,docker run -d -p 8081:80 nginx,浏览器输入http://192.168.1.120:8081/,就可以看到另外一个nginx已启动
也可以通过curl 127.0.0.1:8080 来测试是否打开相应端口
(4)到这里就能体现出Docker部署应用和传统部署应用的区别了,传统部署的话,需要人工拷贝多一份nginx,再配置端口,而Docker部署的话,在已制作好的镜像基础上,一条命令就可以部署一个新的应用
(5) docker inspect a219737ce905 通过命令找到容器端口,可以宿主机直接访问容器:http://172.17.0.2/:80
(1)docker ps -a 可以显示容器id
(2)docker stop 8dc6a2b6f903 停止容器
(3)docker rm 8dc6a2b6f903 删除容器
(4)docker ps 显示当前正在运行的容器
docker commit 235923e34a nginx/centos 将自己构建好的235923e34a容器提交到本地当作下次可以再次使用的映像
docker run --name=nexus -i -t centos /bin/bash
docker inspect nexus
docker start -i nexus 重新启动已经停止的容器
docker run --name=nexus -i -t centos /bin/bash CTRL + P CTRL + Q 退出交互式,以后台服务运行
docker attach nexus 可把后台运行服务提升到交互式运行
docker run --name=nexus -d centos /bin/sh -c "while true; do echo 'hello world'; sleep 1; done"
docker logs -t -f --tail 10 nexus 显示nexus容器打印的最新10条日志,指定10为0时,显示所有日志
docker top nexus 查看nexus进程运行情况
docker exec -i -t nexus /bin/bash 在已经启动的nexus容器中加入新的进程bash,CTRL + P CTRL + Q 退出交互式,以后台服务运行,利用docker top nexus命令可以查看进程
docker stop nexus 发送一个停止信号,优雅停止容器
docker kill nexus 直接停止容器
docker network ls 查看容器创建的网络
docker attach 容器ID 和 docker exec -it 容器ID 都可以将容器提升到前台。但是attach方法,当在容器中exit时,容器会退出,即使是启动时候指定是后台启动;而exec方法,在窗口中exit时,仅仅是退出当前操作终端,而不会退出进程。
这仅仅是docker的常用操作命令,要深入学习还要多看官方文档,多学Linux系统操作。
推荐《第一本Docker书》作为入门。
docker下删除两个id相同的镜像
今天建立docker容器的时候由于疏忽,镜像的名字输错了,结果容器创建成功后,镜像中出现两个id相同的:
使用docker rmi e4a35914679d删除的时候执行失败:
Error response from daemon: conflict: unable to delete e4a35914679d (must be forced) - image is referenced in one or more repositories
提示应该是该id有两个本地文件,不能用id删除。
所以我想删除所有镜像docker rmi $(docker images -q),出现下面错误
Error response from daemon: conflict: unable to delete e4a35914679d (must be forced) - image is referenced in one or more repositories
后来在Stack Overflow删看到使用repository和tag进行操作的,所以执行docker rmi docker.io/redis:3.2
再次查询的时候只剩下一个镜像,删除OK。
所以,可以使用repository:tag的组合来删除特殊的镜像。