Docker系列1-Docker介绍

1.Docker优势

Docker目标是实现轻量级的操作系统虚拟化解决方案。
(1)启动快
Docker相比于传统的虚拟机方式要快得多,可以在秒级实现。
(2)资源利用率高
而且对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。
(3)更快速的交付和部署
开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。
(4)更高效的虚拟化
Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。
(5)更轻松的迁移和扩展
Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云。

2.Docker基本概念

(1)Docker镜像
Docker 镜像就是一个只读的模板。可以包含一个ubuntu操作系统环境,程序运行环境等。
一个镜像就是一层层的layer层文件,上层文件叠于下层文件上,若上层文件有与下层文件重复的,则覆盖掉下层文件重复的部分。
在这里插入图片描述
初始挂载时读写层为空。
当需要修改镜像内的某个文件时,只对处于最上方的读写层进行了变动,不复写下层已有文件系统的内容,已有文件在只读层中的原始版本仍然存在,但会被读写层中的新版本文件所隐藏,当 docker commit 这个修改过的容器文件系统为一个新的镜像时,保存的内容仅为最上层读写文件系统中被更新过的文件。
镜像可以用来创建 Docker 容器。
(2)Docker容器
Docker利用容器来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
(3)Docker仓库
仓库是集中存放镜像文件的场所。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库和私有仓库两种形式。用户自己创建的镜像可以用push命令将它上传到公有或者私有仓库,这样下次只需要从仓库上pull下来就可以了。

3.Docker命令

(1)容器操作
docker [run|start|stop|restart|kill|rm|pause|unpause]

run/create[镜像名]:  创建一个新的容器并运行一个命令
start/stop/restart[容器名]:启动/停止/重启一个容器
kill [容器名]: 直接杀掉容器,不给进程响应时间
rm[容器名]:删除已经停止的容器
pause/unpause[容器名]:暂停/恢复容器中的进程

docker [ps|inspect|exec|logs|export|import]

ps:查看容器列表(默认查看正在运行的容器,-a查看所有容器)
inspect[容器名]:查看容器配置元数据
exec -it [容器名] /bin/bash:进入容器环境中交互操作
logs --since="2019-02-01" -f --tail=10 [容器名]:查看容器日志 
cp path1 [容器名]:path 容器与主机之间的数据拷贝
export -o test.tar [容器名] / docker export [容器名]>test.tar : 文件系统作为一个tar归档文件
import test.tar [镜像名:版本号]:导入归档文件,成为一个镜像

(2)镜像操作
docker images|rmi|tag|build|history|save|load]

images:列出本地镜像列表
rmi [镜像名:版本]:删除镜像
tag [镜像名:版本] [仓库]/[镜像名:版本]:标记本地镜像,将其归入某一仓库
build -t [镜像名:版本] [path]:Dockerfile 创建镜像
history [镜像名:版本]: 查看指定镜像的创建历史
save -o xxx.tar [镜像名:版本] /  save [镜像名:版本]>xxx.tar : 将镜像保存成 tar 归档文件
load --input  xx.tar / docker load<xxx.tar : 从归档文件加载镜像

Docker pull/search/login/push/tag

tag [镜像名:版本]  [仓库]/[镜像名:版本]:标记本地镜像,将其归入某一仓库
Push [仓库]/[镜像名:版本]: 推送镜像到仓库  --需要登陆 
Search [镜像名]:在仓库中查询镜像 – 无法查询到tag版本 
Pull [镜像名:版本]: 下载镜像到本地 
Login:登陆仓库 

dockerfile指令

FROM:必须放在DOckerfile的第一行,表示从哪个baseimage开始构建 
MAINTAINER:可选的,用来标识image作者的地方
RUN: RUN都是启动一个容器、执行命令、然后提交存储层文件变更。
CMD:CMD的作用是作为执行container时候的默认行为(容器默认的启动命令)当运行container的时候声明了command,则不再用image中的CMD默认所定义的命令
一个Dockerfile中只能有一个有效的CMD,当定义多个CMD的时候,只有最后一个才会起作用
EXPOSE:指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。
entrypoint:把整个container变成可执行的文件,且不能够通过替换CMD的方法来改变创建container的方式。但是可以通过参数传递的方法影响到container内部
每个Dockerfile只能够包含一个entrypoint,多个entrypoint只有最后一个有效
当定义了entrypoint以后,CMD只能够作为参数进行传递
ADD & COPY:把host上的文件或者目录复制到image中(能够进行自动解压压缩包)  
ENV:用来设置环境变量,后续的RUN可以使用它所创建的环境变量 
WORKDIR:用来指定当前工作目录(或者称为当前目录) 
USER:运行RUN指令的用户 
VOLUME:用来创建一个在image之外的mount point

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值