【Docker】Docker 常用命令

好记性不如烂笔头,特将最近用到的一些命令记录在我的小仓库。

一、简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

二、架构

Docker 包括三个基本概念: 镜像Image,容器Container,仓库Repository。
其中,

  • 镜像(Image) 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。此外镜像 不包含 任何动态数据,其内容在构建之后也不会被改变。
    例如docker中的centos和正常下载的centos的区别主要在于docker里的centos是精简版的,里面很多软件没有,相应的很多命令用不了
  • 容器(Container):镜像(Image)和容器(Container)的关系,就好比在OOP类与实例的关系,根据镜像可以创建多个容器。
  • 仓库(Repository) 是集中存放镜像的地方,它的主要作用就是负责存储和分发docker镜像,镜像仓库分为公共镜像仓库和私有镜像仓库,公有镜像仓库是可以被任何人使用的,而私有镜像仓库则主要用于自身应用Docker镜像存储和分发。

三、命令

  • docker command --help
    了解docker使用方法
  • docker search [option] image-name
    docker search image-name 会在docker中央仓库进行查找并反馈结果,配合docker pull 即可拉取。
    对于[option]中的一些命令有兴趣的可以了解一下,主要可以用来过滤信息。
  • docker pull [option] image-name[:tag|@digest]
    • [option]说明
    • -a :拉取所有 tagged 镜像
    • –disable-content-trust :忽略镜像的校验,默认开启
      例如:
      docker pull java 从docker中央仓库拉取java最新版镜像
      docker pull -a java 从docker中央仓库拉取java的所有镜像
  • docker ps [option]
    列出容器,包括容器名,镜像名,时间等等
    • [option]说明
    • -a 显示所有的容器,包括未运行的。
    • -l 显示最近创建的容器。
    • -n 列出最近创建的n个容器。
    • -q 静默模式,只显示容器编号。
    • -s 显示总的文件大小。
    • …等等
  • docker run [option] image-name [command] [args…]
    运行新容器
    • -d 后台运行容器,并返回容器ID。
    • -i 以交互模式运行容器,通常与 -t 同时使用。
    • -P 随机端口映射,容器内部端口随机映射到主机的端口。
    • -p 指定端口映射,格式为:主机(宿主)端口 容器端口。
    • -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用。
    • –name=“nginx-lb” 为容器指定一个名称。
    • –dns 8.8.8.8 指定容器使用的DNS服务器,默认和宿主一致。
    • –dns-search example.com 指定容器DNS搜索域名,默认和宿主一致。
    • -h “mars” 指定容器的hostname。
    • -e username=“ritchie” 设置环境变量。
    • –env-file=[] 从指定文件读入环境变量。
    • –cpuset=“0-2” or --cpuset=“0,1,2” 绑定容器到指定CPU运行。
  • -m 设置容器使用内存最大值。
    • –net=“bridge” 指定容器的网络连接类型,支持 bridge/host/none/container 四种类型。
    • –link=[] 添加链接到另一个容器。
    • –expose=[] 开放一个端口或一组端口。
    • --volume , -v 绑定一个卷
    • /bin/bash 放在镜像名后的是命令,若希望有个交互式 Shell,用 /bin/bash。
  • 例如 docker run -it ubuntu /bin/bash 启动容器,并通过参数进入ubuntu 容器内部
  • docker start container-id
    可以根据docker ps -a 查看所有容器信息,然后根据container-id 进行启动容器
  • docker stop container-id
    同理,docker ps [ -a ] 获取 container-id 后停止容器
  • docker restart container-id
    同理,docker ps [ -a ] 获取 container-id 后重启容器
  • docker rm [option] container-id
    删除容器
    • [option]说明
    • -f 强制删除。
  • docker rmi [option] iamge-name
    删除镜像
    • [option]说明
    • -f 强制删除。
      以上是最常用的命令。

四、不常用的命令

1.进入正在运行的Docker容器的4种方式

  • docker attach container-id
    不适用于生产环境。
    若是多个用户使用该命令进入同一容器,窗口将会同步显示,若一个窗口阻塞中,其他窗口无法操作。
  • docker SSH
  • docker nsenter
  • docker exec
    docker 1.3.X版本之后可以使用docker exec
    docker exec -it container-id /bin/bash
  • docker volume [option]
    镜像变成容器之后若是因为一些原因我需要把该容器删除,那么该容器的数据该何去何从?
    可以在创建的时候映射出一个 volume,这样容器和本地磁盘就有了一个交互空间。

2.docker 导入导出

在之后的一段时间中,我需要特定环境进行自动化测试,因此还是要了解了解的。
主要命令有 export、import、save,load
其中 save,load 针对镜像的导入导出;export,import 是将容器与镜像相互转换的过程。

  • save
    docker save -o nginx.tar nginx:latest
    or
    docker save > nginx.tar nginx:latest
    其中 -o 和 > 表示输出到文件,nginx.tar 为目标文件,nginx:latest 是源镜像名(name:tag)
  • load
    docker load -i nginx.tar
    or
    docker load < nginx.tar
    其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息
  • export
    docker export -o nginx-test.tar nginx-test
    其中-o表示输出到文件,nginx-test.tar 为目标文件,nginx-test 是源容器名(name)
  • import
    docker import nginx-test.tar nginx:imp
    or
    cat nginx-test.tar | docker import - nginx:imp
  • docker cp container-id [option]
    docker cp container-id:/etc/nginx/nginx.conf /opt 把容器里面的文件cp出来到宿主机
    docker cp /opt/nginx.conf container-id:/etc/nginx/nginx.conf 把宿主机文件拷贝到容器里面
  • docker inspect container-id
    查看docker内容信息
  • docker system df
    查看空间占用
  • docker kill container-id
    杀死一个正在运行的容器
  • docker logs -f -t container-id or docker logs -f -t --tail=100 container-id
    获取容器日志
  • docker build
    用来构建dockerfile镜像,略
  • docker version
    查看 docker 版本
  • docker logout
    用来登录

也可以使用docker desktop进行管理docker。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值