目录
(一)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针对镜像操作的命令
查看自己服务器中docker 镜像列表
docker images
搜索镜像
docker search 镜像名
docker search --filter=STARS=9000 mysql 搜索 STARS >9000的 mysql 镜像
拉取镜像 不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本
docker pull 镜像名
docker pull 镜像名:tag
运行镜像
docker run 镜像名
docker run 镜像名:Tag
docker中 run 命令是十分复杂的 有什么持久运行 映射端口 设置容器别名 数据卷挂载等
删除镜像 ------当前镜像没有被任何容器使用才可以删除
#删除一个
docker rmi -f 镜像名/镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
强制删除镜像
docker image rm 镜像名称/镜像ID
保存镜像
将我们的镜像 保存为tar 压缩文件 这样方便镜像转移和保存 ,然后 可以在任何一台安装了docker的服务器上 加载这个镜像
命令:
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
ex:
docker save tomcat -o /myimg.tar
加载镜像
任何装 docker 的地方加载镜像保存文件,使其恢复为一个镜像
docker load -i 镜像保存文件位置
镜像标签
有的时候呢,我们需要对一个镜像进行分类或者版本迭代操作,比如我们一个微服务已经打为docker镜像,但是想根据环境进行区分为develop环境与alpha环境,这个时候呢,我们就可以使用Tag,来进对镜像做一个标签添加,从而行进区分;版本迭代逻辑也是一样,根据不同的tag进行区分
app:1.0.0 基础镜像
# 分离为开发环境
app:develop-1.0.0
# 分离为alpha环境
app:alpha-1.0.0
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker tag 源镜像名:TAG 想要生成新的镜像名:新的TAG
# 如果省略TAG 则会为镜像默认打上latest TAG
docker tag aaa bbb
# 上方操作等于 docker tag aaa:latest bbb:test
ex:
# 我们根据镜像 quay.io/minio/minio 添加一个新的镜像 名为 aaa 标签Tag设置为1.2.3
docker tag quay.io/minio/minio:1.2.3 aaa:1.2.3
# 我们根据镜像 app-user:1.0.0 添加一个新的镜像 名为 app-user 标签Tag设置为alpha-1.0.0
docker tag app-user:1.0.0 app-user:alpha-1.0.0
(三)docker针对容器的命令
查看正在运行容器列表
docker ps
查看所有容器 -----包含正在运行 和已停止的
docker ps -a
容器怎么来呢 可以通过run 镜像 来构建 自己的容器实例
运行一个容器
# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行) --name 给要运行的容器 起的名字 /bin/bash 交互路径
docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash
例如我们要启动一个redis 把它的别名取为redis001 并交互式运行 需要的命令 —我这里指定版本号为5.0.5
#1. 拉取redis 镜像
docker pull redis:5.0.5
#2.命令启动
docker run -it -d --name redis001 redis:5.0.5 /bin/bash
容器端口映射
命令:
-p 宿主机端口:容器端口
ex:
docker run -itd --name xixi -p 8888:6379 redis:5.0.5 /bin/bash
进入容器方式一
docker exec -it 容器名/容器ID /bin/bash
#进入 前面的 redis001容器
docker exec -it redis001 /bin/bash
进入容器方式二 —推荐使用 exec 方式
docker attach 容器名/容器ID
从容器内 退出到自己服务器中 需注意 两个退出命令的区别
#-----直接退出 未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭
exit
# 优雅退出 --- 无论是否添加-d 参数 执行此命令容器都不会被关闭
Ctrl + p + q
停止容器
docker stop 容器ID/容器名
重启容器
docker restart 容器ID/容器名
启动容器
docker start 容器ID/容器名
kill 容器
docker kill 容器ID/容器名
容器文件拷贝 —无论容器是否开启 都可以进行拷贝
#docker cp 容器ID/名称:文件路径 要拷贝到外部的路径 | 要拷贝到外部的路径 容器ID/名称:文件路径
#从容器内 拷出
docker cp 容器ID/名称: 容器内路径 容器外路径
#从外部 拷贝文件到容器内
docker cp 容器外路径 容器ID/名称: 容器内路径
查看容器日志
docker logs -f --tail=要查看末尾多少行 默认all 容器ID
容器设置开机自启动
启动容器时,使用docker run命令时 添加参数--restart=always
便表示,该容器随docker服务启动而自动启动
ex:
docker run -itd --name redis002 -p 8888:6379 --restart=always redis:5.0.5 /bin/bash
数据挂载
简单来讲,就是将容器内的数据与外部宿主机文件绑定起来,类似一个双持久化,当容器删除时,宿主机文件数据目录仍在,下次启动容器只要将数据目录指向宿主机数据所在位置即可恢复!
命令:
-v 宿主机文件存储位置:容器内文件位置
如此操作,就将 容器内指定文件挂载到了宿主机对应位置,-v命令可以多次使用,即一个容器可以同时挂载多个文件
-v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置
更换容器名
docker rename 容器ID/容器名 新容器名
(四)自己提交一个镜像
docker commit -m="提交信息" -a="作者信息" 容器名/容器ID 提交后的镜像名:Tag
(五)docker 运维命令
docker: write /var/lib/docker/tmp/GetImageBlob325372670: no space left on device
这个错误是docker在写入的时候报错无机器无空间
查看docker工作目录
sudo docker info | grep "Docker Root Dir"
查看docker磁盘占用总体情况
du -hs /var/lib/docker/
更改docker工作目录
首先我们需要先停止docker
systemctl stop docker
创建新工作目录文件夹
mkdir -p /docker-data
原docker数据迁移
cp -r /var/lib/docker
修改docke数据存储配置
在之前我们配置镜像加速的时候已经有了该文件,所以我们直接修改内容接口
vim /etc/docker/daemon.json
# json 文件中添加一对键值对
"data-root":"/docker-data"
修改后内容如下
{
"registry-mirrors": ["https://镜像加速地址"],
"data-root":"/docker-data"
}
启动后我们的配置就生效了
systemctl restart docker
docker info | grep "Docker Root Dir"
查看Docker的磁盘使用具体情况
docker system df
删除 无用的容器和 镜像
# 删除异常停止的容器
docker rm `docker ps -a | grep Exited | awk '{print $1}'`
# 删除名称或标签为none的镜像
docker rmi -f `docker images | grep '<none>' | awk '{print $3}'`
清除所有无容器使用的镜像
注意,此命令只要是镜像无容器使用(容器正常运行)都会被删除,包括容器临时停止
docker system prune -a
查找大文件
find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr
查找指定docker使用目录下大于指定大小文件
find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr |grep '/var/lib/docker/overlay2/*'
这里是查找 /var/lib/docker/overlay2/* 开头的且大于100m的文件