Docker基础

什么是docker

  • Docker 是一个开源的应用容器引擎,而一个容器其实是一个虚拟化的独立的环境,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

  • 容器不是模拟一个完整的操作系统,而是对进程进行隔离

  • 对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。

  • 容器是进程级别,本质是一个进程,docker-server,docker的服务器在进程上进行运行

docker的等价比喻

  1. 构建dockerfile 文件(项目环境)------>等价于,我们打算如何盖房子,先画好图纸

  2. docker build -f ros_x86.dockerfile . ------>等价于盖房子过程

  3. 上面指令执行完,生成docker 镜像 ----->等价于房子盖好了,这个房子就在那个放,你没docker run (没钱),你就使用不了

  4. docker run ------->启动容器----->等价于我们拿到房子钥匙了

  5. docker exec ----->进入容器,进行操作-------->等价于我们进入房子里面,可以任意使用房间内的所有东西

docker与虚拟机(重点)

区别

虚拟机:虚拟机是通过Hypervisor(虚拟机管理系统,常见的有VMWare workstation、VirtualBox),虚拟出网卡、cpu、内存等虚拟硬件,再在其上建立虚拟机,每个虚拟机是个独立的操作系统,拥有自己的系统内核。虚拟出一整个硬件系统。

        虚拟机---直接虚拟出一个linux机器

容器-----本质是进程,运行在我们的机器上,通过namespace,cgroup来实现docker的功能(用Go语言做的

  • 容器:容器是利用namespace将文件系统、进程、网络、设备等资源进行隔离,利用cgroup对权限、cpu资源进行限制,最终让容器之间互不影响,容器无法影响宿主机(重中之重。本质是Linux里面的一个程序

docker的优势

  1. 运行在容器上的docker的程序,直接使用的都是宿主机的硬件资源,因此在cpu、内存、利用率上,Docker将会在效率上具有更大的优势

  2. Docker直接利用宿主机的系统内核,避免了虚拟机启动时所需要的系统引导时间和操作系统运行的资源消耗,利用Docker能够在几秒钟之内启动大量的容器,是虚拟机无法办到的。快速启动低资源消耗的优点,使Docker在弹性云平台自动运维系统方面具有很好的应用场景。

  3. 容器的启动时间是秒级的,大量节约开发、测试、部署的时间。还有一个非常关键的点,就是Docker能够高效地部署和扩容,Docker容器几乎可以在任意平台上运行,包括虚拟机、物理机、公有云、私有云、个人电脑、服务器等,这种兼容性,可以让用户把一个应用程序从一个平台直接迁移到另外一个平台。

常用docker指令

docker images                                查看所有本地主机上的镜像
docker search 镜像名                     搜索镜像
docker pull 镜像名                          下载镜像
docker rmi -f 容器id                         删除镜像
docker tag 镜像id                           命名容器
docker run                                       启动容器
 

dockerfile常用指令

可以用到 Dockerfile 文件。它是一个文本文件,用来配置 imagedocker 根据Dockerfile 文件生成 image 文件

FROM 指定基础镜像
ARG 构建时变量(构建后不可见)
ENV 设置环境变量(永久生效)
RUN 你想让它干啥(在命令前面加上RUN即可)
COPY 复制本地文件
WORKDIR 设置当前工作目录
VOLUME 设置卷,挂载主机目录
CMD 指定容器启动后的要干的事情
SHELL 更改默认shell

ARG的设置DEBIAN_FRONTEND

  • 告知操作系统应该从哪儿获得用户输入。如果设置为"noninteractive",你就可以直接运行命令,而无需向用户请求输入(所有操作都是非交互式的)。保证了一键执行完成docker的构建

  • 这在运行apt-get命令的时候格外有用,因为它会不停的提示用户进行到了哪步并且需要不断确认。非交互模式会选择默认的选项并以最快的速度完成构建。请确保只在Dockerfile中调用的RUN命令中设置了该选项,而不是使用ENV命令进行全局的设置。因为ENV命令在整个容器运行过 程中都会生效,所以当你通过BASH和容器进行交互时,如果进行了全局设置那就会出问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值