docker常用命令

docker安装:

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum list docker-ce.x86_64 --showduplicates | sort -r
yum -y install --setopt=obsoletes=0 docker-ce-20.10.9-3.el7
systemctl enable docker ; 
systemctl start docker

(一)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
#拉取最新版 mysql
docker pull mysql
#拉取一个指定版本号 镜像 至于版本号呢 可以在docker hub中查看
#docker官方镜像搜索
https://hub.docker.com/search?q=&type=image
#例如 拉取 mysql 5.7.30 
docker pull mysql:5.7.30
#运行镜像 ----咱拉取一个tomcat 跑起来试一试
docker run 镜像名
docker run 镜像名:Tag
ex:
docker pull tomcat
docker run tomcat
#删除镜像 ------当前镜像没有被任何容器使用才可以删除
#删除一个
docker rmi -f 镜像名/镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可 
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像  -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
#强制删除镜像
docker image rm 镜像名称/镜像ID
#镜像的基础命令就到这里 下方会使用更复杂的 docker run 命令 来根据镜像启动容器

#保存镜像
#将我们的镜像 保存为tar 压缩文件 这样方便镜像转移和保存 ,然后 可以在#任何一台安装了docker的服务器上 加载这个镜像
#命令:
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
#exmaple:
docker save tomcat -o /myimg.tar
#加载镜像
#任何装 docker 的地方加载镜像保存文件,使其恢复为一个镜像
docker load -i 镜像保存文件位置
#加载文件 恢复为镜像
docker load -i /myimg.tar
#查看镜像 测试镜像功能是否正常
docker images
#我们来把解压的镜像 run一下。
docker rum tomcat 
#镜像标签
#有的时候呢,我们需要对一个镜像进行分类或者版本迭代操作,比如我们一个微服务已经打为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 容器 就好比 咱java中的new出来对象(docker run 镜像 产生一个该镜像具体容器实例),docker 容器的启动需要 镜像的支持

#先放上 docker 容器查看命令
#查看正在运行容器列表
docker ps
#查看所有容器 -----包含正在运行 和已停止的
docker ps -a
#-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
#3.查看已运行容器
docker ps
#netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息
netstat -untlp
#每一个 Docker容器都是独立和安全的应用平台(我们可以理解为,每一个docker容器都相当于在我们的服务器上占用资源然后开辟了属于自己的一个空间(也可以理解为服务器))
#每个容器之间环境都是隔离的
#先停止咱之前运行的 redis 容器 
docker stop 容器名/容器ID
#删除一个容器
docker rm -f 容器名/容器ID
#删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
#删除全部容器
docker rm -f $(docker ps -aq)
#容器端口与服务器端口映射
命令:
-p 宿主机端口:容器端口
docker run -itd --name redis002 -p 8888:6379 redis:5.0.5 /bin/bash
#进入容器方式一 这里咱就进入 前面的 redis001容器
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 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"
#方法二:不想删容器,又想让这个容器设置开机自启动,那么我们修改其启动配置即可!
命令:
docker  update --restart=always 容器Id 或者 容器名
或
docker container update --restart=always 容器Id 或者 容器名
#更换容器名
docker rename 容器ID/容器名 新容器名
ex:
docker rename mysql mysql-master

(四)自己提交一个镜像

#我们运行的容器可能在镜像的基础上做了一些修改,有时候我们希望保存起来,封装成一个更新的镜像,这时候我们就需要使用 commit 命令来构建一个新的镜像
docker commit -m="提交信息" -a="作者信息" 容器名/容器ID 提交后的镜像名:Tag
#我们拉取一个tomcat镜像 并持久化运行 且设置与宿主机进行端口映射
docker pull tomcat
docker run -itd -p8080:8080 --name tom tomcat /bin/bash
#访问 咱的端口 发现访问404 这是因为咱配置了阿里云镜像后 所拉取得镜像都是最基础班的 仅仅包含其容器必要数据 例如 容器中 vim vi ll 命令都没有咱们的webapps 下一个文件都没有 ,访问肯定404罗,不断查看 发现咱 webapps.dist 下是有文件的 我们把它拷贝的webapps 下 然后打包成一个新的镜像 后 访问查看是否进入到首页 不进入404页面
exit 退出容器
#使用 提交命令 将在运行的tomcat 容器 打包为一个全新的镜像 名字为tom Tag为1.0
docker commit -a="leilei" -m="第一次打包镜像,打包后直接访问还会404吗" 231f2eae6896 tom:1.0
#为了区分 咱停止并删除之前tomcat 的容器
docker stop 231f2eae6896 
docker rm -f 231f2eae6896 
docker ps -a
#接下来 运行咱自己打包的镜像 tom:1.0
#设置容器名字为newtom 映射端口为6500:8080
docker run -d -it  -p6500:8080 --name newtom tom:1.0 /bin/bash
#访问6500 端口进入到了 tomcat 首页 说明 咱commit 镜像成功了

(五)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 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/*'
ex:我这里是查找 /var/lib/docker/overlay2/* 开头的且大于100m的文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值