Docker的常用命令以及DockerFile详解

本文详细介绍了Docker的常用命令,包括镜像命令、容器命令和其他常用命令,以及Docker镜像的底层原理和容器数据卷。同时,深入解析了DockerFile的构建过程和基础指令,帮助读者理解和掌握Docker的日常操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    docker version  显示docker的版本信息 

    docker info 显示docker的系统信息,包括镜像和容器的数量

    docker 命令 --help 帮助命令

    帮助文档地址 :Reference documentation | Docker Documentation

    镜像命令

      docker images 查看所有本地的主机上的镜像

      docker images -q 只显示镜像的id

      docker search 搜索镜像

      docker search -s 30 tomcat 找STARS大于等于30的tomcat

      可选项,通过收藏来过滤  --filter=STARS=3000  #搜索出来的镜像就是STARS大于3000的

      docker pull  下载镜像

      docker rmi -f 镜像id  删除指定镜像

      docker rmi -f 镜像id 镜像id  删除多个镜像

      docker rmi -f $(docker images -aq)  删除全部的镜像

    容器命令

      说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习 

      docker pull centos

      新建容器并启动

      docker run [可选参数] image

      #参数说明

  1.      --name="Name"  容器名字
  2.      -d   后台方式运行
  3.      -it   使用交互方式运行,进入容器查看内容
  4.      -P   指定容器的端口  -p  8080:8080(主机端口:容器端口)
  5.      -p    随机端口

     #测试: 启动并进入容器

     docker run -it centos /bin/bash

     docker ps 列出当前正在运行的容器

     docker ps -a 列出当前正在运行的容器+带出历史运行过的容器

     docker ps -a -n=? 显示上n次运行的容器

     docker ps -aq 只显示容器编号

     docker ps -l 显示最近创建的容器

     退出容器:

     exit  直接停止容器并退出

     Ctrl + P + Q 容器不停止退出

     删除容器:

     docker rm 容器id   删除指定的容器,如需删除正在运行的容器 rm -f

     docker rm -f $(docker ps -aq) 删除所有的容器   

     docker ps -a -q|xargs docker rm 删除所有的容器

     docker kill 容器id   强制停止当前容器

常用其他命令: 

     后台启动容器

     docker run -d 镜像名

     问题:docker ps : 发现 centos 停止了

     常见的坑: docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止

     ps -ef : 查看linux里的所有进程

     docker top 容器ID 查看容器内运行的进程

     docker inspect 容器ID 查看容器内部细节

     从容器内拷贝文件到主机上   docker cp 容器ID:容器内路径  目的主机路径

     查看日志

     docker logs -f -t --tail 容器

Docker镜像底层原理

 docker镜像实际上由一层一层的文件系统组成,这种层级的文件系统就叫UnionFS(联合文件系统)。

       对于一个精简的os,rootfs可以很小,只需要包括最基本的命令、工具和程序库就可以了,因为底层直接用Host的kernel,自己只需要提供rootfs就行了。对于linux的不同发行版,bootfs基本是一致的,rootfs会有差别,因此不同的发行版可以公用bootfs。

docker commit提交容器副本使之成为一个新的镜像

docker commit -m="提交的信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名] 

Docker容器数据卷

  就是容器的持久化操作以及容器间数据的共享以及容器与宿主机间的数据共享。

  添加数据卷:1、命令添加:docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名

                        2、编写dockerfile文件,构建镜像docker build -f(f就是file,指明D ockerfile在哪儿) dockerfile所在路径 -t 新镜像名字:TAG .(表示当前目录)

                        3、运行

  数据卷容器:

  容器间传递共享: 

  docker run -it --name dc02 --volumes-from 要导入卷配置的容器名称  镜像名称(共享的主机目录是同一个)

DockerFile解析

DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。

1、手动编写一个dockerfile文件,符合file的规范

2、有这个文件后,直接docker build命令执行,获得一个自定义的镜像

3、docker run

Dockerfile基础知识:

1、每条保留字指令都必须为大写字母且后面要跟随至少一个参数

2、指令按照从上到下,顺序执行

3、#表示注释

4、每条指令都会创建一个新的镜像层,并对镜像进行提交

Docker执行Dockerfile的大致流程:

1、docker从基础镜像运行一个容器

2、执行一条指令并对容器作出修改

3、执行类似docker commit的操作提交一个新的镜像层

4、docker再基于刚提交的镜像运行一个新容器

5、执行dockerfile中的下一条指令直到所有指令都执行完成

Docker就相当于是软件的原材料,Docker镜像就相当于是软件的交付品,Docker容器就是软件的运行态。

 DockerFile保留字指令:

1、FROM:基础镜像,当前新镜像是基于哪个镜像的

2、MAINTAINER:镜像维护着的姓名和邮箱地址

3、RUN:容器构建时需要运行的命令

4、EXPOSE:当前容器对外暴露出的端口

5、WORKDIR:指创建容器后,终端默认登陆进来的工作目录

6、ENV:用来在构建镜像过程中设置环境变量

7、 ADD(COPY+解压):将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包

8、COPY:类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置

9、VOLUME:容器数据卷

10、CMD:指定一个容器启动时要运行的命令

                    Dockerfile中可以有多个CMD指令,但只有最后一个生效(最后一个生效但是都会执行),CMD会被docker run之后的参数替换

11、ENTRYPOINT:指定一个容器启动时要运行的命令

                                  ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数

                                  ENTRYPOINT docker run之后不会替换,而是追加。

12、ONBUILD:当构建一个子(from 父镜像名)Dockerfile时,父镜像的dockerfile的onbuild被触发。

   

                        

                    

    

     

     

     

          

     

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值