基础命令

# 启动docker
systemctl start docker.service

# 关闭docker
systemctl stop docker.service
# 重启docker
systemctl restart docker.service

# docker设置随服务启动而自启动
systemctl enable docker

# 查看docker运行状态(如果是在运行中输入命令后会看到绿色的active (running) )
systemctl status docker.service

# 查看docker 版本号信息
docker version

# 查看docker 详细信息
docker info

# docker 帮助命令
docker --help

镜像命令

# 查看服务器中docker镜像列表
docker images
docker image ls

# 搜索镜像
docker search
docker search --filter STARS=9000 --filter is-automated=false  --filter is-official=true mysql  : 搜索收藏星大于9000,不自动构建,是官方镜像的mysql镜像
docker search --no-trunc mysql : 禁止截断输出,显示完整的镜像描述
docker search --automated redis : 只列出 automated build类型的镜像
docker search redis --limit 5 : 默认显示25条
docker search --format "{{.Name}} | {{.Description}} | {{.IsOfficial}} | {{.IsAutomated}} | {{.StarCount}}" nginx : 使用模板格式化显示输出
  
# 拉取镜像(不加tag版本号的话默认拉取最新版本latest)
docker pull mysql 
docker pull mysql:5.7

# 删除当前未被容器使用的镜像
docker rmi 镜像名/镜像ID
docker image rm 镜像名/镜像ID
# 删除多个镜像
docker rmi 镜像名1/镜像ID 镜像名2/镜像ID 镜像名3/镜像ID
docker image rm  镜像名1/镜像ID 镜像名2/镜像ID 镜像名3/镜像ID
# 删除全部镜像  -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
docker image prune -a

# 保存镜像(导出与导入,[]表示可以省略)  
#导出
docker [imgage] save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
docker [imgage] save nginx:latest -o nginx.image
#导入
docker [imgage] load -i 镜像保存文件位置
docker [imgage] load -i nginx.image

# 查看镜像详细信息
docker image inspect nginx:latest

# 镜像tag修改
# dockerfile构建时修改name和tag
docker image build -t  niuzheng131400/hello:1.0
# 镜像修改name和tag
docker image tag 镜像名/镜像ID niuzheng131400/hello:1.0

# 登录 && 推送(名字要和dockerhub的一致,如是niuzheng131400)
docker login
docker pull niuzheng131400/hello:1.1

容器命令

# 查看正在运行容器列表([]表示可以省略)
docker [container] ps
docker container ls

# 查看所有容器 (运行和退出停止的,[]表示可以省略)
docker [container] ps -a
docker container ls -a

# 运行容器、停止容器、重启、统计
-it (表示与容器进行交互式启动) 
-d (表示可后台运行容器,守护式运行)  
--name(给要运行的容器起的名字)  
/bin/bash(交互路径)  
--rm (退出即删除) 
--port (宿主机端口:容器端口) 
--restart=always(容器随docker服务启动而自动启动)
-v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置 (挂载一个或多个目录)
docker [container] run -it -d --name 要取的别名 --port 80:80 --restart=always -v /var/lib/redis/data/:/data  镜像名:Tag /bin/bash 

# 不想删容器,又想让这个容器设置开机自启动,那么我们修改其启动配置即可!
docker [container] update --restart=always 容器Id/容器名



# 停止容器
docker [container] stop 名称/容器ID
# 重启
docker [container] restart 名称/容器ID
# 统计
docker [container] stats 名称/容器ID

# 删除一个或者多个停止的容器
docker rm 容器名/容器ID
# 强制一个删除
docker rm - f 容器名/容器ID
# 强制删除多个
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
# 删除全部停止的容器
docker rm  $(docker ps -aq)
docker system prune -f
# 强制删除全部容器
docker rm -f $(docker ps -aq)
# kill 容器
docker kill 容器名/容器ID

# 查看容器进程
docker top  容器名/容器ID

# 查看容器日志
docker logs -f --tail=要查看末尾多少行 默认all 容器ID

# 交互式运行或者进入容器
docker [container] run -it 容器名/容器ID sh
docker exec -it 容器名/容器ID sh
docker attach  容器名/容器ID

# 复制
docker cp 容器ID/名称:文件路径  要拷贝到外部的路径   |     要拷贝到外部的路径  容器ID/名称:文件路径
#从容器内拷出
docker cp 容器ID/名称:容器内路径  容器外路径
#从外部拷贝文件到容器内
docker  cp 容器外路径 容器ID/名称:容器内路径

# 修改容器名
docker rename 容器ID/容器名 新容器名
 

docker-compose 命令

# 前台启动
docker-compose up 

# 后台运行
docker-compose up -d 

# 查看后台情况
docker-compose ps 

# 指定yml文件(docker-compose.yml)
docker-compose up -f 

# 停止
docker-compose stop 

# 查看网络
docker network ls 

# 删除退出的容器
docker-compose rm 

# 删除网络
docker network rm 名称   

# -p 指定项目前缀
docker-compose -p myProject up -d

# yaml 文件加container_name会删除前缀后缀

# 拉取
docker-compose pull
docker-compose up

# 单独构建
docker-compose build  services-name

# 更新
# 手动更新
docker-compose build services-name
# 自动更新
docker-compose up -d --build

# 移除删除services
docker-compose up -d --remove-orphans

# 加载更新本地文件,挂载本地文件Volume,重启即可
docker-composer restart

# 验证.env文件
docker-composer config
docker-composer --env-file ./myenv config
docker-composer --env-file ./myenv  up -d

# 简单网络负载均衡 --scale services-name num
docker-compose uo -d --scale services-name=3

运维命令

# 遇到 docker: write /var/lib/docker/tmp/GetImageBlob325372670: no space left on device 错误
# 查看docker工作目录
sudo docker info | grep "Docker Root Dir"
# 查看docker磁盘占用总体情况
du -hs /var/lib/docker/
# 查看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}'`
# 查找目录 /var/lib/docker/overlay22/ 大于100M大文件
find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr |grep '/var/lib/docker/overlay22/*'

查看网络

# netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息
netstat -untlp
# dig 查看dns
more /etc/resolv.conf  dns服务器配置

docker stack

docker stack deploy | Docker Documentation

Last modification:June 16, 2022
如果觉得我的文章对你有用,请随意赞赏