docker常用命令,学习笔记

时间:2022-06-02 00:27:02

- 常用命令

https://docs.docker.com

  • images
> docker images  # 查看本地镜像
> docker images -a # 查看所(含中间镜像层)
> docker images -q # 只看ID
> docker images -qa # 所有ID
> docker images --help # 帮助
  • history
> docker history ID  # 查看镜像ID的更新历史
  • docker
> docker --help # 帮助
> docker version # 版本
> docker info # 详细信息
  • save Save one or more images to a tar archive (streamed to STDOUT by default)
> docker save yzn-base > yzn-base.tar  # 将镜像保存成压缩文件
  • load Load an image from a tar archive or STDIN
> docker load < busybox.tar.gz  # .tar.gz
> docker load --input fedora.tar  # .tar
  • rm、rmi 删除
> docker rm <container name>  # 删除容器
> docker rmi <image name>  # 删除镜像
> docker rmi -f hello-world:latest # 强制删除镜像
  • commit 提交
> docker commit <container name> [image name]  # 生成镜像
> docker commit -m "This is yzn base env with cuda9.0 and conda-pytorch " -a "yzn" yzn-base1 siat123/yzn-base2  # 生成镜像。-m 是message,-a 是username,使用容器yzn-base1生成镜像yzn-base2
  • run 运行
> docker run <image ID>  # 运行镜像,生成容器
  • pull 拉取
> docker pull siat123/yzn-base1:latest   # 不加tag,默认拉取latest版本
  • push 推送 至远程仓库
> docker push siat123/yzn-base2  # 默认推送latest版本

- 如何理解镜像和容器的关系?

  1. 容器与镜像的关系类似于面向对象编程中的对象与类;
  2. 镜像(image)是类,容器(container)是对象,一个镜像可以产生多了容器。
  3. 容器通过镜像启动,镜像启动之后自动生成容器。
  4. 镜像像一张系统安装光盘(可盘后不能更改),容器是安装好的系统。
  5. 当镜像的容器还存在时,是不能删除镜像的。

- docker的5个使用步骤?:

  1. 应用程序有很多组件,拆分它们;
  2. 选择成熟的基础镜像;
  3. 添加安全管理;
  4. 添加代码;
  5. 配置测试部署。

- Docker的4个组成?:

  1. docker Client客户端
  2. Docker Daemon守护进程
  3. Docker Image镜像
  4. Docker Container容器
  • 我们通过客户端写命令,然后客户端将命令发送给守护进程,守护进程再将命令执行的结果返回给客户端,这就使我们能通过命令查看执行结果,镜像就是容器的源代码,容器通过镜像启动,使用仓库来保存用户构建的镜像,仓库分为共有和私有。

- 系统学习docker的知识总结?

1. 学习链接:https://www.w3cschool.cn/use_docker/use_docker-phr127
2. Docker 相关概念:通过镜像生成有端口的容器
  • 镜像运行之后生成容器,当需要与容器立即交互时,须给容器分配一个虚拟终端(-t 命令实现),通过分配的虚拟容器IP和端口(8000)实现对容器的交互。
  • 容器虚拟IP的查看方法
3. docker 的网络配置:将实体机的端口映射到容器端口
> docker run -d -p 5000:22 -p 18888:8888 zys:common
  • 实体机 5000 端口映射到容器 22 端口, 同时 18888 端口映射到容器 8888 端口,有了端口之后就可以使用ssh登录到容器了。
4. docker 的分区挂载和数据卷:
  • 需要挂在的原因是容器中的文件系统是独立的, 一旦容器被删除, 则文件系统也会被删除。
  • 将实体机的目录(前面)挂在到容器的文件系统文件(后面)下
> docker run -d -p 5000:22 -v /home/zys/temp:/root/volumn zys:common
5. docker 的镜像服务器
  • 这里说的镜像服务器(docker-registry )就是指仓库Hub,会使用pull和push命令,和GitHub的使用方法相同的。

- docker镜像创建的两种方式?

1. 通过执行Dockerfile文件生成
> docker build 
2. 通过已有的新容器(如,在旧容器中安装Pycharm或vim等软件后)生成自定义镜像
> docker run <镜像名> # 通过镜像生成容器
> docker commit <容器名> <镜像名> # 利用容器生成镜像