doker对于镜像及容器的理解:
docker 镜像: ----java中 class
docker容器 : ----java中 class new 出来的实例对象
一、docker基础命令
启动docker
systemctl start docker
关闭docker
systemctl stop docker
重启docker
systemctl restart docker
docker设置随服务器启动而启动
systemctl enable docker
查看docker运行状态
------如果是在运行中 输入命令后 会看到绿色的active
systemctl status docker
查看docker版本信息号
docker version
docker info
docker帮助命令
docker --help
比如忘记了拉取命令,不知道应该带什么参数,可以这样使用
docker pull --help
二、镜像命令
查看自己服务器中的镜像列表
docker images
搜索镜像
docker search 镜像名
docker search --filter=STARS=9000 mysql //搜索STARS>9000的mysql镜像
拉取镜像
不加tag(版本号)即拉取仓库中该镜像的最新版本latest;加tag,则是拉取指定版本
docker pull 镜像名
docker pull 镜像名:tag
运行镜像
docker run 镜像名
docker run 镜像名:tag
删除镜像
---当前镜像没有被任何容器使用才可以删除
//删除一个
docker rmi -f 镜像名/镜像ID
//删除多个,其镜像ID或镜像用空格隔开就好
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
//删除全部镜像 -a意思是显示全部 -q意思是只显示ID
docker rmi -f(docker images -aq)
强制删除镜像
docker images rm 镜像名/镜像ID
保存镜像
将我们的镜像保存为tar压缩文件,这样方便镜像的转移和保存,然后可以在任何一台安装了docker的服务器上加载这个镜像
docker save 镜像名/镜像ID -o 镜像保存位置与名称
//example
docker save tomcat -o /myimage.tar
docker save -o tomcat.tar tomcat:v1(推荐这种方式)
加载镜像
任何安装docker的地方加载镜像保存文件,使其回复为一个镜像
docker load -i 镜像保存文件位置
//example
docker load -i /myimage.tar
三、docker容器命令
docker容器就像Java 中new出来的对象(docker run 镜像 产生一个该镜像具体容器示例)。docker容器的启动需要镜像的支持。
查看正在运行的容器列表
docker ps
查看所有容器
--- 包括正在运行的和已经停止的
docker ps -a
运行一个容器
// -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行) --name 给要运行的容器 起的名字 /bin/bash 交互路径
docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash
//example
//启动一个redis,别名redis001,并交互式运行,版本号5.0.5
docker run -it -d --name redis001 redis:5.0.5 /bin/bash
端口映射:
1、先停止待映射端口的容器
doker stop 容器名/容器ID
//example
docker stop redis001
2、然后删除容器
//删除一个容器
docker rm -f 容器名/容器ID
//删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
//删除全部容器
docker rm -f $(docker ps -aq)
3、容器端口与服务器端口映射
该容器映射8888端口后其他容器不能再使用8888端口
-p 宿主机端口:容器端口
//example
docker run -itd --name redis002 -p 8888:6379 redis:5.0.5 /bin/bash
4、进入容器的方式
有时候我们需要进入容器修改其配置文件
//方式一
docker exec -it 容器名/容器ID /bin/bash
//example
docker exec -it redis001 /bin/bash
//方式2
docker attach 容器名/容器ID
5、退出容器
从容器中退出到自己的服务器
//方式一 直接退出,未添加 -d(持久化运行容器)时,执行此参数,容器会被关闭
exit
//方式二 优雅退出,无论是否添加 -d参数,执行此命令容器都不会被关闭
Ctrl+p+q
6、停止容器
docker stop 容器名/容器ID
7、重启容器
docker restart 容器名/容器ID
8、启动容器
docker start 容器名/容器ID
9、kill容器
docker kill 容器名/容器ID
10、容器文件拷贝
无论容器是否开启,都可以进行拷贝
//docker cp 容器ID/名称:文件路径 要拷贝到外部的路径 | 要拷贝到外部的路径 容器ID/名称:文件路径
//从容器内 拷出
docker cp 容器ID/名称: 容器内路径 容器外路径
//从外部 拷贝文件到容器内
docker cp 容器外路径 容器ID/名称: 容器内路径
11、查看容器日志
docker logs -f --tail=要查看末尾多少行(默认为all) 容器ID
12、容器随服务器启动而启动
使用docker run 命令时添加参数 --restart = always
//example
docker run -itd --name redis002 -p 8888:6379 --restart=always redis:5.0.5 /bin/bash
13、数据挂载
//挂载一个文件
-v 宿主机文件储存位置:容器内文件位置
//挂载多个文件
-v 宿主机文件储存位置:容器内文件位置 -v 宿主机文件储存位置:容器内文件位置
//example
//运行一个docker redis 容器 进行 端口映射 两个数据卷挂载 设置开机自启动
docker run -d -p 6379:6379 --name redis505 --restart=always -v /var/lib/redis/data/:/data -v /var/lib/redis/conf/:/usr/local/etc/redis/redis.conf redis:5.0.5 --requirepass "password"
四、自己提交一个镜像
我们运行的容器可能在镜像的基础上做了一些修改,有时候我们希望保存起来,封装成一个更新的镜像,这个时候我们就需要使用commit命令来构建一个新的镜像
docker commit -m="提交信息" -a="作者信息" 容器名/容器ID 提交后的镜像名:Tag
五、docker运维命令
1、查看docker工作目录
sudo docker info | grep "Docker Root Dir"
2、查看docker磁盘占用总体情况
du -hs /var/lib/docker/
3、查看docker磁盘使用的具体情况
docker system df
4、删除无用的容器和镜像
//删除异常停止的容器
docker rm 'docker ps -a | grep Exited | awk '{print $1}''
//删除名称或标签为none的镜像
docker rmi -f 'docker images | grep '<none>' | awk '{print $3}''
5、清除所有无容器使用的镜像
注意:此命令只要是镜像无容器使用都会被删除,包括容器临时停止
docker system prune -a
6、查找大文件
find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr
7、查找指定docker使用目录下大于指定大小文件
//这里是查找 /var/lib/docker/overlay2/* 开头的且大于100m的文件
find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr |grep '/var/lib/docker/overlay2/*'