基础概念

开发环境deepin linux 15.11。安装docker之后,执行命令:

sudo usermod -aG docker $USER_NAME

让docker和当前用户在一个组中,可以每次不用执行sudo命令了。

三个核心的概念:

  • 镜像:类似虚拟机的镜像,一个只读模板。比如linux镜像等
  • 容器:轻量级的沙箱,基于容器创建的一个运行实例
  • 仓库:docker存放镜像文件的场所

容器是镜像的一个运行时的状态,镜像是静态的,容器是动态的。

docker的很多思想参考了git和github,可以 对比着来理解

Docker镜像

docker容器运行时,需要从本地获取对应的镜像文件。若果没有,则去默认仓库下载。我们可以自定义仓库的位置。

docker获取对应的镜像文件:

docker [image] pull NAME[:TAG]

image是镜像的名字,NAME是在远程仓库中镜像的名字,TAG是对应的标签,类似git上的tag。不指定tag会默认拉去latest版本,在服务端不建议这么做。更加详细的pull命令可以参考有关的手册。

使用images命令可以查看对应的docker信息。一个实例:

docker pull zookeeper
docker images

之后终端显示:

  • REPOSITORY:镜像所在仓库
  • TAG:对应的TAG号,类似git中的tag
  • IMAGE ID:镜像的唯一标志,就像我们git每次提交都会有对应的一个编
  • CREATED:镜像的最后更新时间
  • SIZE:镜像的大小

我们可以使用tag命令给我们本地的镜像打一个tag,比如:

docker tag zookeeper:latest myzookeeper;latest

使用inspect查看详细的信息,比如:

docker inspect zookeeper:latest

docker镜像由多个层组成,可以使用history命令查看层的信息,比如:

docker history zookeeper:lastest

使用search命令搜索镜像,比如:

docker search zookeeper

具体参数参考手册

使用rmi或者image rm命令删除镜像,比如:

docker rmi zookeeper:latest
docker image rm zookeeper:latest

后者tag号可以替换成id

使用prune命令清理遗留的临时镜像文件,比如:

docker prune

基于已有的容器创建,基本的命令格式是:

docker [container] commit  [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

比如,执行命令:

docker [container] commit -m "create container example" -a "erick" zookeeper:latest myZookeeper:0.1

也可以使用模板文件导入镜像,比如:

cat ubuntu-18.04-x86_64-minimal.tar.gz | docker import - ubuntu:18.04

使用Dockerfile可以基于某个父镜像创建新镜像。比如:

FROM debian:stretch-slimLABEL version="1.0" maintainer="docker user <docker_user@github>"RUN apt-get update && \apt-get install -y python3 && \apt-get clean &&rm -rf /var/lib/apt/lists/*

可以使用saveload命令导出和加载镜像。

docker save -o ubuntu_18.04.tar ubuntu:18.04  # 导出镜像
docker load -i ubuntu_18.04.tar # 加载镜像到本地的docker
docker loac < ubuntu_18.04.tar # 同上

可以使用docker push命令上传到指定仓库,具体可以参考手册。

总结

docker的镜像是一个静态的文件,而且有不同的版本,这就类似于git的不同版本那样,docker的镜像是docker的基础,需要理清基本概念。

Docker笔记1 基础概念和镜像相关推荐

  1. Docker:学习笔记(1)——基础概念

    Docker:学习笔记(1)--基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...

  2. 云计算HCIA学习笔记-云计算基础概念

    第1章 云计算基础概念 1.1 云计算课程安排说明 (IA-虚拟化-FC / IP-Linux OpenStack 桌面云/IE-备份容灾迁移) 1.2 为什么云计算IA讲虚拟化? 提前告知学员,为什 ...

  3. lua笔记1 基础概念

    基础概念 Lua的变量默认是全局的,如果想要清除,只需要设置为nil.没有赋值的变量也是nil.注意lua是动态语言,变量不需要声明类型,而且自动类型转换. b = 1 print(b) b = ni ...

  4. Docker笔记第七节(镜像原理、分层)

    参考视频:[狂神说Java]Docker最新超详细版教程通俗易懂_哔哩哔哩_bilibili笔记资料交流都在我们的平台:www.kuangstudy.com秦疆老师Java全栈系列课程之Docker讲 ...

  5. 笔记——流水线基础概念

    什么是流水线 流水线是利用执行指令所需的操作之间的并行性,实现多条指令重叠执行的一种技术.流水线是一种在连续指令流中开发指令级并行性的技术.流水线的明显长处是:它对编程者是透明的. 就像装配线那样,不 ...

  6. 操作系统原理学习笔记(基础概念与进程)

    学习视频 王道的操作系统原理,我在网上搜了一下,没有那个视频像湖科大那种推荐的人那么多,感觉这个还可以,就看这个了. 随看随记 进程运行前需要将需要执行的程序放置到内存中,内存再到CPU中执行程序. ...

  7. 遗传算法(Genetic Algorithm)之deap学习笔记(一): 基础概念

    遗传算法是通过计算机模拟生物学中的染色体用于解决最优化的一种搜索算法. 使用遗传算法要考虑的因素: 个体表征(Individual representation) 评估和适应度分配(Evaluatio ...

  8. 黑马程序员Java零基础视频教程笔记-Java基础概念

    文章目录 一.注释 二.关键字 三.字面量 四.变量 五.数据存储 六.数据类型 七.标识符 八.键盘录入 一.注释 1. 定义 注释就是对代码进行解释说明的文字 2. 注释的分类 ① 单行注释:// ...

  9. 1.Docker学习之基础知识

    0x00 Docker 快速入门 1.基础介绍 2.Docker 架构 3.Docker 资源隔离 4.Docker 容器文件系统 0x01 Docker 安装 1. Linux 2. Windows ...

最新文章

  1. Powershell记录2
  2. java反射机制详解_Java反射机制详解
  3. postgresql建表带注释_postgresql建表带自增id和注释语句
  4. push_back还是emplace_back?
  5. 如何训练您的医生...使用开源
  6. 数据库备份与还原c#.net实现
  7. opengl 遇到的基础问题
  8. linux7防火墙端口映射,服务器使用firewall进行端口映射端口转发
  9. 500 G JAVA视频网盘分享(JEECG开源社区)
  10. 在利用计算机高级语言进行,2016计算机一级考试多选题专项训练及答案
  11. 启动tomcat时候报错(Error deploying web application directory)
  12. Java实现 LeetCode 808 分汤 (暴力模拟)
  13. 用matlab判断两个球是否相交,判断两个矩阵相交
  14. 计算机应用基础评分标准及评分细则,《计算机应用基础》评分标准(范文).doc
  15. WIN10 解决“无法完成操作,因为文件包含病毒或潜在的垃圾软件”
  16. 递归合并PDF按文件夹和文件名生成目录
  17. 【2019蓝桥杯国赛B组】排列数
  18. mongodb服务配置
  19. 几个比较新的恶意程序……AntiVir全报,kaspersky保持沉默的时候多
  20. FT2000+下40G网卡性能优化

热门文章

  1. 手机安装python3.5_CentOS 7安装Python3.5
  2. python xpath定位元素方法_python--通过xpath相对节点位置查找元素(续)
  3. Congestion Charging Zone 水题
  4. 计算机学术英语常见词汇短语总结
  5. 高精度地图的学习笔记
  6. 为什么在C语言中,用scanf输入字符串时,不需加
  7. HDU1052 田忌赛马 贪心
  8. QTextEdit显示中文乱码解决,中文GB2312转Unicode,QString、QByteArray 转换,16进制显示,toUtf8与toLocal8Bit区别
  9. 写一个java的网络数据包分析程序(一)
  10. 简单干净的C#方法设计案例:SFCUI.AjaxValue()之一