删除镜像命令
#删除的前提条件是被删除的镜像没有被使用(start,run ,stop 状态的都算运行)
#删除单个镜像
docker rmi 镜像ID
#删除多个镜像
docker rmi 镜像名1:TAG 镜像名2:TAG
#删除所有的镜像 ,docker images -qa会列出所有的镜像id
docker rmi $(docker images -qa)
#额外的参数 -f 可以删除非运行状态下的镜像
docker rmi -f 镜像ID
docker rmi -f 镜像名1:TAG 镜像名2:TAG
docker rmi -f $(docker images -qa)
删除虚悬镜像
下面这个样子的查询就是虚悬镜像,即REPOSITORY和TAG是none的
此类情况在docker pull ,docker build 都会产生(TAG冲突产生的)
[root@VM-20-4-centos caddy]# docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> c62a8656957d 7 days ago 1.08GB
可以是用下面的两个命令进行删除
docker image prune
列出运行的容器
#命令样式
docker ps [OPTIONS]
#列出正在运行的容器
docker ps
#-a:列出当前所有正在运行的容器+历史上运行过的
docker ps -a
#-l:显示最近创建的容器
docker ps -l
#-n:显示最近n个创建的容器
docker ps -n
#-q:静默模式,只显示容器编号
docker ps -q
#上面的命令可以组合使用例如
#显示所有的容器的编号
docker ps -qa
运行容器
docker run [OPTIONS]
#例子 运行一个Ubuntu镜像,下面的命令运行最新版本的Ubuntu,并进入交互模式。进入点是 /bin/bash
#-it前台交互模式,即运行后进进入了Ubuntu
#ubuntu ubuntu是镜像的名字,如果本地没有此镜像名字,会自动下载到本地
#ubuntu:[TAG] 后面的[TAG] 可以指定版本号,具体版本号可以去hub.docker.com进行查询,如果没写此版本号,则下载ubuntu:latest 版本;注意latest版本不一定是最新的
docker run -it ubuntu /bin/bash
#具体的参数
#--name="容器新名字" 为容器指定一个名称;
docker run -it --name myUbuntu ubuntu /bin/bash
#运行一个Ubuntu,指定名字是myUbuntu ,名字是随意的,但不能和已有容器名字相同,如果不指定,随机生成个名字
#-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
docker run -d ubuntu /bin/bash
#上面这句运行后,容器启动后会直接停止,因为什么都没干,容器就自动暂停了
#-i:以交互模式运行容器,通常与 -t 同时使用;
#-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
docker run -it ubuntu /bin/bash
#正常启动了一个交互模式的容器
#下面后台启动了容器,并分配了交互模式,此容器会在后台一直运行
docker run -idt ubuntu /bin/bash
#-P: 随机端口映射,大写P 一般不使用此项
#-p: 指定端口映射,小写p
docker run -idt -p 6666:8080 ubuntu /bin/bash
#后台启动一个容器,并将本地的6666挂载到容器的 8080端口,这时候访问系统的6666端口,就可以直接访问到容器的8080端口
#-v 挂载指定的目录
docker run -idt -v /data/config:/etc/config ubuntu /bin/bash
#将系统文件夹/data/config 挂载到容器内 /etc/config 文件夹,
退出运行中的容器
#启动并进入容器
docker run -it ubuntu /bin/bash
#1.退出容器,输入exit退出,此种退出,容器将停止
#按键盘 ctrl+p+q退出,此种退出,容器继续运行
容器启停的几个命令
#启动一个停止的容器
docker start 容器ID或者容器名
#停止一个正在运行的容器
docker stop 容器ID或者容器名
#重启一个容器
docker restart 容器ID或者容器名
#强制停止一个容器
docker kill 容器ID或者容器名
#删除一个停止的容器
dockert rm 容器ID或者容器名
#强制删除一个容器,无论是否在运行中
dockert rm -f 容器ID或者容器名
#删除多个容器
docker rm -f 容器ID1 容器ID2 容器ID3
#查询后删除,下面的语句会删除所有的容器
docker rm -f $(docker ps -a -q)
#查看容器日志
docker logs 容器ID或者容器名
#查看容器的运行的进程
docker top 容器ID或者容器名
#查看容器的配置,如挂载,网络,等等,容器的配置信息
docker inspect 容器ID或者容器名
进入容器命令
#一个已经运行的容器,如果想进入
docker exec -it 容器ID或者容器名 /bin/bash
#上面命令进入到了shell,
#/bin/bash 并不是唯一的,也可能是/bin/sh,因为容器内可能使用不同的shell
#重新进入容器
docker attach 容器ID
#exec 和attach的区别
#exec是开启了一个新的线程进入到容器
#attach是理由已有的进程进入,如果这样进入后执行exit命令,容器可能会暂停
拷贝文件到容器
#第一种方式
docker cp 容器ID:容器内路径 系统文件路径
#第二种方式
#如果使用了-v 进行文件夹挂载,则直接拷贝文件到 挂载目录即可
##容器归档
#将容器内容保存到硬盘上
docker export 容器ID > test.tar.gz
#将此归档文件导入到镜像
cat test.tar.gz | docker import - 镜像用户/镜像名:镜像版本号
#镜像用户 就是当前的登录用户,我用的root