• 【Docker】Docker常用命令(包含Dockerfile指令)


    一.Docker常用命令

    1.帮助命令

    # docker version       //查看docker版本号
    # docker info          //查看docker的系统信息,包含镜像和容器的数量
    # docker 命令 --help   //帮助命令
    
    • 1
    • 2
    • 3

    2.镜像命令

    • 显示镜像
    # docker images        //显示所有本地主机上的镜像
    # docker images -a     //显示所有镜像
    # docker images -q     //只显示镜像id
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    • 搜索镜像
    # docker search 镜像名                         //搜索镜像
    # docker search mysql                         //搜索mysql镜像
    # docker search mysql -filter=STARS=2000      //搜索mysql收藏大于2000的镜像
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    • 下载镜像
    • 注意:版本号不能乱写,要在dockerhup搜索上面有的版本。
    # docker pull 镜像名                         //下载最新版本镜像
    # docker pull 镜像名:版本号                   //指定版本下载
    
    • 1
    • 2

    • 删除镜像

    注意:有的镜像不能直接删除,因为有通过他创建的容器,要先删除容器

    # docker rmi 镜像id或镜像仓库名                         //删除指定镜像
    # docker rmi 镜像id或镜像仓库名 $(docker images -aq)    //删除全部镜像
    
    • 1
    • 2

    • 构建镜像

    注意:必须在你的 Dockerfile 文件目录下执行该命令,不在的话就加 -f

    # docker build [可选参数]        //下载最新版本镜像
    
    • 1
    可选参数功能
    -f指定Dockerfile文件路径
    -t指定构建的镜像名和tag ,例:# docker build -t 镜像名:tag

    3.镜像导出和导入命令

    • 镜像导出
    //根据容器导出镜像,相对来说文件较小,不能多个镜像合成一个文件
    docker export 容器id或容器名字 > image.tar
    
    //根据镜像导出镜像,相对文件较大
    docker save 镜像id或镜像名字 > image.tar
    
    //多个镜像导出成一个文件
    docker save -o image.tar 镜像1 镜像2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 镜像导入
    //镜像导入,可以对镜像重命名
    docker import 自定义镜像名字 < image.tar
    
    镜像导入,不能重命名
    docker load < image.tar
    
    • 1
    • 2
    • 3
    • 4
    • 5

    docker export 的应用场景: 主要用来制作基础镜像,比如我们从一个 ubuntu 镜像启动一个容器,然后安装一些软件和进行一些设置后,使用 docker export 保存为一个基础镜像。然后,把这个镜像分发给其他人使用,比如作为基础的开发环境。
    docker save 的应用场景: 如果我们的应用是使用 docker-compose.yml 编排的多个镜像组合,但我们要部署的客户服务器并不能连外网。这时就可以使用 docker save 将用到的镜像打个包,然后拷贝到客户服务器上使用 docker load 载入。

    4.容器命令

    前提:有镜像才可以创建容器(同时也要注意命令的顺序 - -name尽量在最后)

    • 创建并启动容器
    # docker run [可选参数] 镜像名           //创建并启动容器
    # docker run -it 镜像名 /bin/bash     	//启动并进入容器
    
    • 1
    • 2
    可选参数作用
     - -name自定义容器名字 例:- -name 定义的容器名字
    -d以后台方式启动
    -it使用交互方式启动,进入容器查看内容
    -p指定容器端口,例:-p 8090:8080(8090是对外端口,8080是容器端口)
    -P随机端口
    -v挂载目录,双向绑定。
    docker容器内的卷,没有指定主机目录情况下都在 /var/lib/docker/volume/xxx/-data
    指定路径挂载:-v 主机目录 容器目录 (例如:/var/log/:/var/log/)
    匿名挂载:-v 容器目录
    具名挂载:-v 自定卷名:容器卷
     - -mac-address=自定义的mac地址指定mac地址启动
    • 容器卷的挂载
    # docker volume ls               //查看所有的挂载卷(匿名挂载是一串乱码,而具名挂载是你自定义的名字)
    
    • 1

    # docker run -d -P --name nginx001 -v /etc/nginx nginx //匿名挂载

    在这里插入图片描述


    默认是rw(可读可写)

    # docker run -d -P --name nginx001 -v ikun:/etc/nginx:ro nginx //具名挂载(ro只针对容器,只可读)
    # docker run -d -P --name nginx001 -v ikun:/etc/nginx:rw nginx //具名挂载(rw在容器内既可读又可写)

    在这里插入图片描述

    # docker volume inspect 卷名 //查看这个卷

    在这里插入图片描述



    • 查看容器
    # docker ps      //显示正在运行的容器
    # docker ps -a   //显示全部的容器
    # docker ps -q   //只显示容器id            
    
    • 1
    • 2
    • 3

    • 退出容器
    # exit     	  //容器停止并退出
    ctrl + p + q  //退出容器并不停止
    
    • 1
    • 2

    • 删除容器
    # docker rm 容器id      	   //删除指定容器,不能删除正在运行的容器
    # docker rm -f 容器id          //强制删除包含正在运行的容器	
    # docker rm $(docker ps -aq)   //删除全部容器
    
    • 1
    • 2
    • 3

    • 启动和停止容器
    # docker start 容器id      	   //启动容器
    # docker restart 容器id        //重启容器
    # docker stop 容器id           //停止当前正在运行的容器
    # docker kill 容器id           //强制停止当前容器	
    
    • 1
    • 2
    • 3
    • 4
    • 容器复制命令
    # docker cp 容器id或容器名称:容器路径 宿主机路径    //将容器的文件复制到宿主机
    # docker cp 宿主机路径 容器id或容器名称:容器路径    //将宿主机的文件复制到容器
    
    • 1
    • 2

    5.其他常用命令

    • 查看日志
    # docker logs 容器id      	   //查看容器日志
    
    • 1
    • 查看容器进程信息
    # docker top 容器id      	   //查看容器进程信息
    
    • 1
    • 查看容器的元数据
    # docker inspect 镜像id      	   //查看容器的元数据
    
    • 1
    • 进入正在运行的容器
    # docker exec -it 容器id /bin/bash      	   //进入正在运行的容器(开启一个新的终端)
    # docker attach 容器id            	           //进入正在运行的容器(不开启一个新的终端)
    
    • 1
    • 2

    6.更多更详细命令

    https://www.runoob.com/docker/docker-build-command.html

    二.Dockerfile常用指令

    1.常用指令

     - FROM           //基础镜像
     - MAINTAINER     //镜像的维护者 姓名 + 邮箱
     - RUN            //镜像构建时执行的命令
     - ADD            //将宿主机的文件拷贝进镜像
     - WORKDIR        //设置当前工作目录
     - VOLUME         //设置挂载目录(可以将容器目录挂载到主机上,实现同步)
     - EXPOSE         //指定对外端口
     - CMD            //指定这个容器启动的时候要运行的命令(只有最后一个会生效,可被替代)
     - ENTRYPOINT     //指定这个容器启动的时候要运行的命令(可以追加)
     - COPY           //将我们的文件拷贝到镜像中
     - ENV            //构建的时候设置环境变量
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.CMD 和 ENTRYPOINT 的区别

    构建镜像的时候使用 CMD 指令

    在这里插入图片描述
    在这里插入图片描述


    构建镜像的时候使用 ENTRYPPOINT 指令

    在这里插入图片描述
    在这里插入图片描述

    相信你们从上面的图片就能看出差别了。

  • 相关阅读:
    基于微信小程序的音乐播放器设计与实现(源码+lw+部署文档+讲解等)
    Makefile Npm
    Salesforce OmniStudio顾问备考攻略
    转载csdn文章操作
    20231116模拟赛题解
    DevData Talks | 知乎艾辉:从工具建设到运营,千人团队研发提效最佳实践
    visual studio开发过程中常见操作
    【Python】Python 查询图片EXIF信息,获取地理位置
    针对应用程序依赖库漏洞的攻击
    开源的java视频处理库介绍
  • 原文地址:https://blog.csdn.net/twotwo22222/article/details/128148212