大家好,我是程序员阿药。今天和大家分享一些docker中我常用的命令。
启动帮助命令
#启动docker
systemctl start docker
#重启docker
systemctl restart docker
#停止docker
systemctl stop docker
#查看docker状态
systemctl status docker
#开机自启动
systemctl enable docker
#查看概要信息
docker info
#查看总体帮助文档
docker --help
#查看命令帮助文档
docker 具体命令 --help
镜像命令
#列出本地主机上的镜像
docker images
#查找某个镜像(限制5个)
docker search --limit 5 某个镜像的名字
#拉取镜像到本地(不指定版本号则默认最新)
docker pull 镜像名字:版本号
#查看镜像/容器/数据卷所占空间
docker system df
#删除镜像(加-f表示强制删除)
docker rmi -f 镜像名字/ID
#删除全部镜像
docker rmi -f ${docker images -qa}
#构建镜像
docker build -f dockerfile -t 镜像名字
容器命令
#启动一个容器(-it:交互;自定义容器名字;/bin/bash:交互方式)
docker run -it/-d --name=容器新名字 -p 外部端口:内部端口 镜像名 /bin/bash
#启动一个容器(非交互式,后台启动,如redis/mysql)
docker run -d 镜像名
#正在运行的容器(参数设为-a时会将停止容器也列出)
docker ps 参数
#第一种退出:容器停止;第二种:不停止
exit 或者 ctrl+p+q
#启动已经停止的容器
docker start 容器名或ID
#重启容器
docker restart 容器名或ID
#停止容器
docker stop 容器名或ID
#强制停止容器
docker kill 容器名或ID
#删除已经停止的容器(加-f表示强制,可以不停止)
docker rm -f 容器名或ID
#一次删除多个容器
docker rm -f ${docker ps -a -q}
#一次删除多个容器
docker ps -a -q | docker rm
#查看容器的日志
docker logs 容器ID
#查看容器内部细节
docker inspect 容器ID
#重新进入一个退出的容器(exec是在容器中打开新的终端,启动新的进程,用exit退出,会导致容器停止)
docker exec -it 容器ID /bin/bash
#重新进入一个退出的容器(attach直接进入容器启动终端命令,不会启动新的进程,用exit退出,会导致容器停止)
docker attach 容器ID
#从容器内拷贝文件到主机中
docekr cp 容器ID:容器内路径 目的主机路径
#导出容器的内容留作为一个tar归档文件
docker export 容器ID > 文件名.tar
#从tar包中的内容创建一个新的文件系统再导入为镜像
cat 文件名.tar | docker import - 镜像用户名/镜像名:镜像版本号
#将主机中文件拷贝到容器中
docker cp 本地路径 容器ID:容器内路径
创建新镜像命令
#对原始镜像添加新的功能,也就是加了一层,然后将这个新的容器作为一个新的镜像提交
docker commit -m="描述" -a="作者" 容器ID 要创建的目标镜像名:版本号
容器数据卷
#容器和宿主机内的数据互通(docker容器内的数据会同样的保存到本地主机,同时本地主机中的数据也会同样的保存到容器中;即使有一方挂掉,重启后数据仍然一致)
docker run -it --privileged=true -v /宿主机绝对路径:/容器内目录 (--name=新名) 镜像名
#容器默认是rw可读可写,设置成ro后只可读(宿主机写的数据会同步到容器中,但是容器不可写数据)
docker run -it --privileged=true -v /宿主机绝对路径:/容器内目录:ro (--name=新名) 镜像名
#子类容器继承父类容器,也就是继承了父类的规则,父类和宿主机可以数据同步,子类同样可以(此时相当于一台宿主机上有两个容器,然后他们三个互通数据)
docker run -it --privileged=true --volumes-from 父类名字 --name=子类新名 镜像名