写点什么

Docker 常用命令整合

作者:宁在春
  • 2022 年 7 月 22 日
  • 本文字数:2569 字

    阅读完需:约 8 分钟

Docker 常用命令整合

本文整理出在 Docker 中常用的命令,一是可以做一个备忘录的作用,二是也可以作为一个复习的文章。

Docker 镜像、容器、日志等等相关命令都涵盖在内,文内带有操作图,不难的哦。

很喜欢一句话:"八小时内谋生活,八小时外谋发展。"

共勉

一、Docker 相关命令

  1. 查看 Docker 版本号

    docker --version



  1. 查看 Docker 相关信息

    docker info



  1. 查看 Docker 帮助命令

    docker --help

    可以查看到所有 Docker 命令,不过对英语不太好的同学不太友善哈。🙃~~(我也是)~~



二、Docker 镜像相关命令

2.1、镜像查看

  • 列出本地镜像

    1、查看全部镜像

    docker images



  • 2、查看全部镜像含中间映像层

    docker images -a



  • 3、其他

    docker images -q #仅显示镜像id docker history -H imageserver #显示指定镜像的历史创建;参数:-H 镜像大小和日期 imageserver 我自己做的一个镜像



2.2、镜像搜索

  1. 搜索 MySQL 的镜像

    docker search mysql #带上版本号搜索 docker search mysql:5.7 #docker search <镜像名>:<版本号>

  2. --filter=stars:只显示 starts>=600 的镜像

    docker search --filter=stars=600 mysql

  3. --automated :只列出 AUTOMATED=OK 的镜像

    docker search --automated mysql



2.3、镜像下载

  1. 下载最新官方镜像(此处以下载 redis 做例子)

    docker pull redis #不指定版本号时,默认拉取最新版本 即latest docker pull redis:5.0.7# 指定版本号 即加一个引号 后说明版本号即可。

  2. 下载仓库所有 Redis 镜像

    docker pull -a redis

  3. 下载网上公开的仓库镜像

    docker pull bitnami/redis #即别人制作的公开放到网上的镜像



2.4、镜像删除

  1. 删除单个镜像

    注意:(不强制删除,必须先删除此镜像相关的容器,才能删除此镜像)

    ##相当于:docker rmi redis:latest docker rmi redis

  2. 强制删除(即有运行的容器,也强行删除,但并不会删除正在运行的容器[已亲测])

    ##强制删除(针对基于镜像有运行的容器进程) docker rmi -f redis

  3. 批量删除(不同镜像之间用空格间隔)

    docker rmi -f redis mysql nginx

  4. 删除本地全部镜像

    docker rmi -f $(docker images -q) #$() 可以简单理解为sql 语句中嵌套语句



2.5、镜像构建

此处只做一个最简单的例子,一句两句说不清。牵扯 Dockerfile 文件书写。

(1) 编写我们的 Dockerfile 文件

from centos:latest
ENV mypath /usrWORKDIR $mypath
RUN yum -y install vimRUN yum -y install net-tools
EXPOSE 80
CMD /bin/bash
复制代码

(2) 构建镜像

docker build -f /myDocker/Dockerfile2 -t mycentos:1.3 
复制代码


#如果 dockerfile文件在当前目录 命令可简写为docker build -t mycentos:1.3 .
复制代码

解释:

1、docker build 为 docker 中镜像构建命令

2、-f :指明 dockerfile 文件的路径

3、-t :指定镜像生成名字 版本号为可选。

4、. 最后的小数点意思是在当前目录下, 即 Dockerfile 所在目录

三、Docker 容器相关命令

3.1、查看容器

1、查看正在运行的容器

docker ps
复制代码

2、查看正在运行的容器的 ID

 docker ps -q
复制代码

3、查看正在运行+历史运行过的容器

docker ps -a
复制代码



4、获取正在运行的容器 redis 的 IP

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis
复制代码



5、查看容器元信息(此处以 redis 举例)

docker inspect myredis #myredis 是我的redis 容器名
复制代码



在启动集群的时候比较有效,单机的话就~~。

3.2、启动容器

启动暂停的容器

docker start <容器名||容器id>
复制代码

重启容器

docker restart redis  #<容器名||容器id>
复制代码

此处以启动 redis 容器举例

docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /home/redis/myredis/myredis.conf:/etc/redis/redis.conf -v /home/redis/myredis/data:/data -d redis redis-server /etc/redis/redis.conf  --appendonly yes  --requirepass 000415
复制代码
  1. --restart=always 总是开机启动

  2. --log 是日志方面的

  3. -p 6379:6379 将 6379 端口挂载出去



  1. --name:给这个容器取一个名字

  2. -v 数据卷挂载

    /home/redis/myredis/myredis.conf:/etc/redis/redis.conf 这里是将 liunx 路径下的 myredis.conf 和 redis 下的 redis.conf 挂载在一起。

    /home/redis/myredis/data:/data 这个同上

  3. -d redis 表示后台启动 redis

  4. redis-server /etc/redis/redis.conf 以配置文件启动 redis,加载容器内的 conf 文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是 liunx 下的/home/redis/myredis/myredis.conf

  5. --appendonly yes 开启 redis 持久化

  6. ==--requirepass 000415 设置密码== (如果你是通过 docker 容器内部连接的话,就随意,可设可不设。但是如果想向外开放的话,一定要设置,我被搞过,可以看这篇文章“阿里云服务器中毒‘Kirito666’经历”)

  7. 成功界面



3.3、容器进程

##top支持 ps 命令参数,格式:docker top [OPTIONS] CONTAINER [ps OPTIONS] ##列出redis容器中运行进程 docker top redis ##查看所有运行容器的进程信息 
复制代码



3.4、容器的停止和删除

  1. 停止一个运行中的容器

    docker stop myredis #stop 后 跟容器名或容器id 都可以

  2. 杀掉一个运行中的容器

    docker kill myredis #同上



  1. 删除一个已停止的容器

    docker rm myreis #同上

  2. 删除一个运行时的容器

    docker rm -f myredis #同上



  1. 删除全部容器

    docker rm -f $(docker ps -a -q) #$() 你可以理解sql 语句中的嵌套语句

四、Docker 查看运行日志

基本格式:docker logs [OPTIONS] CONTAINER

OPTIONS:可带参数 见下图。



  • --details 显示更多的信息

  • -f, --follow 跟踪实时日志

  • --since string 显示自某个 timestamp 之后的日志,或相对时间,如 30m(即 30 分钟)

  • --tail string 从日志末尾显示多少行日志, 默认是 all

  • -t, --timestamps 显示时间戳

  • --until string 显示自某个 timestamp 之前的日志,或相对时间,如 30m(即 30 分钟)

举例:

4.1、查看此容器全部运行日志:

docker logs  <容器id>
复制代码

4.2、查看日志,只显示最后 200 行

docker logs --tail 200 CONTAINER_ID
复制代码

4.3、查看最近 30 分钟的日志

docker logs --since 30m CONTAINER_ID
复制代码

4.4、查看某时间之后的日志

dockere logs -t --since "2021-07-31T10:35:10" d0e #d0e是我的容器id 
复制代码

4.5、查看某时间段之间的日志

docker logs -t --since "2021-07-31T10:35:10" --until "2021-07-31T10:36:10" CONTAINER_ID
复制代码



五、自言自语

又是继续内卷的一天啊,昨天看群聊,里面的大佬凌晨了还在讨论问题,讲真,我有点怕啦。这还邀不要人睡啦啊。☠😇

一起 共勉 or🛌。(我还是觉得🛌更爽啊,唉,不过不能选啊))

发布于: 2 小时前阅读数: 13
用户头像

宁在春

关注

一个喜欢文艺风的程序员 2022.07.01 加入

他日凌云,万事胜意

评论

发布
暂无评论
Docker 常用命令整合_Docker_宁在春_InfoQ写作社区