- 常用命令
> docker images # 查看本地镜像> docker images -a # 查看所(含中间镜像层)> docker images -q # 只看ID> docker images -qa # 所有ID> docker images --help # 帮助
> docker history ID # 查看镜像ID的更新历史
> 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
> docker rm # 删除容器> docker rmi # 删除镜像> docker rmi -f hello-world:latest # 强制删除镜像
> docker commit [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
> docker run # 运行镜像,生成容器
> docker pull siat123/yzn-base1:latest # 不加tag,默认拉取latest版本
> docker push siat123/yzn-base2 # 默认推送latest版本
- 如何理解镜像和容器的关系?
- 容器与镜像的关系类似于面向对象编程中的对象与类;
- 镜像(image)是类,容器(container)是对象,一个镜像可以产生多了容器。
- 容器通过镜像启动,镜像启动之后自动生成容器。
- 镜像像一张系统安装光盘(可盘后不能更改),容器是安装好的系统。
- 当镜像的容器还存在时,是不能删除镜像的。
- docker的5个使用步骤?:
- 应用程序有很多组件,拆分它们;
- 选择成熟的基础镜像;
- 添加安全管理;
- 添加代码;
- 配置测试部署。
- Docker的4个组成?:
- docker Client客户端
- Docker Daemon守护进程
- Docker Image镜像
- Docker Container容器
- 我们通过客户端写命令,然后客户端将命令发送给守护进程,守护进程再将命令执行的结果返回给客户端,这就使我们能通过命令查看执行结果,镜像就是容器的源代码,容器通过镜像启动,使用仓库来保存用户构建的镜像,仓库分为共有和私有。
- 系统学习docker的知识总结?
1. 学习链接:
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 <容器名> <镜像名> # 利用容器生成镜像 镜像名> 容器名> 镜像名>