Docker使用笔记

Docker是一个轻量级的虚拟化解决方案,相对VMWare等完全封装的管理系统虚拟化技术,Docker只是利用Linux内核特性对进程进行了隔离。

Docker的好处

  1. Docker的好处主要体现在运维上

  2. 相对于KVM、VMWare等,性能较好

  3. 对环境依赖进行打包,方便部署和扩容

  4. 屏蔽应用差别,便于统一基线管理

  5. Docker自身的文件系统特性,发布系统分发的数据较小


Docker的原理

  1. Docker分为宿主机、镜像(Images)、容器(Container),宿主机是外部的操作系统,在此之上运行镜像,对镜像的每一次运行生成一个容器,同一个镜像生成的不同的容器之间会隔离。

  2. 容器内部是一系列的进程,Docker推荐容器只运行一个进程,进程可以在宿主机上看到。

  3. 容器采用Linux内核的namespace机制对包括网络、pid等进行隔离,利用cgroup进行资源(如可用CPU核数、内存)进行限制。

  4. 文件系统采用UnionFS,最早是使用aufs,现主要采用Devicemapper。在打包时,每一次修改会将修改覆盖在下层的文件系统之上,一层层叠加,最后覆盖一层可修改的文件层,保存是修改的部分,下层只读。

  5. 每个镜像都是分片保存,每次下载新镜像时,不会下载已存在的分片。

  6. 对于网络端口,有多种级别,可以映射(采用缓冲区复制),也可以共用宿主机端口

  7. Docker的守护进程采用sudo方式启动,所有docker命令均采用tcp或者管道方式和守护进程通讯,由守护进程执行

Docker的使用

  1. Docker需要Linux3.8以上内核

  2. Windows、Mac用户可以安装boot2docker,Mac可以用homebrew安装。boot2docker是用virtualbox虚拟了一个特制的linux系统。

  3. Mac下
    启动
    boot2docker up
    ssh到virtualbox内的特制Linux的命令行,之后可以使用Linux的命令。之后所有命令均执行在该环境中
    boot2docker ssh

Docker常用命令

  1. 启动docker守护进程
    docker -d

  2. 查看docker已下载镜像,
    注意IMAGE ID列,另外SIZE列的值在本地并不会存那么大的文件。
    指定一个镜像时采用REPOSITORY:{TAG}的形式,如abc:abc
    docker images

  3. 下载镜像abc:abc
    docker pull abc:abc

  4. 启动镜像
    其中–name abc指出abc是别名,使用Container ID的地方可以换用别名。
    –net host表示共用宿主机上的端口
    -d表示按守护进程启动
    IMAGESIDdockerimages{REPOSITORY}:${TAG}的形式
    run命令相当于依次执行了create和start命令,create命令执行后
    docker run –name abc –net host -d ${IMAGEID}

  5. 查看容器
    docker ps

  6. 进入到Docker容器内的“终端”
    其中exec是在容器上执行一个进程
    -ti表示使用进程的标准输入输出
    ${CONTAINERID}是容器ID,可以从docker ps中得到,或者使用别名
    docker exec -ti ${CONTAINERID} /bin/bash

  7. 停止容器
    注意停止并不会删除运行时所做的修改,之后可以用restart重新启动
    docker stop ${CONTAINERID}

  8. 删除容器
    会删除该容器运行时所做的修改,可以采用-f参数强制停止容器后删除
    docker rm ${CONTAINERID}

  9. Docker打包
    .表示在当前目录寻找Dockerfile文件,该文件说明了打包方法
    Dockerfile总是from从一个镜像开始,修改叠加,最终变成新的镜像
    其中CMD命令只能出现一次,会在容器启动时执行
    docker build -t abc:abc .

  10. 发布
    docker push abc:abc

  11. 查看镜像打包历史,从下至上
    docker history ${IMAGEID}

### 如何在Docker容器中访问和使用笔记本电脑内置摄像头 为了使Docker容器能够访问主机上的硬件设备,比如笔记本电脑的内置摄像头,通常需要确保几个方面配置正确。这不仅涉及到了解如何启动具有适当权限的容器,还涉及到宿主机上必要的驱动程序和支持。 #### 启动带有USB支持的Docker容器 为了让Docker容器可以访问外部设备如摄像头,在创建或运行容器时需指定`--privileged=true`选项来赋予更高的权限[^3]。然而更推荐的做法是指定具体的设备而不是给予整个特权模式: ```bash docker run -it --device=/dev/video0:/dev/video0 ubuntu bash ``` 这条命令中的`/dev/video0`代表的是Linux系统下第一个检测到的视频捕捉设备(即摄像头)。如果不确定具体路径可以在宿主机执行`v4l2-ctl --list-devices`查看所有可用视频设备及其对应的节点名称。 对于某些情况可能还需要安装额外软件包以便于操作这些多媒体资源,例如FFmpeg用于处理音视频流数据或是VLC player作为播放工具等。 #### 配置Docker守护进程以允许USB设备传递 有时即使指定了特定设备文件也未必能成功获取图像帧序列,这时就需要进一步调整Docker Daemon配置使其接受来自USB接口的数据传输请求。编辑位于/etc/docker/daemon.json内的JSON对象加入如下字段: ```json { "default-ulimits": { "nofile": {"Name":"nofile","Hard":65535,"Soft":65535} }, "features": {"apparmor":false}, "insecure-registries":["localhost:5000"] } ``` 请注意上述设置可能会降低安全性因此仅建议开发测试环境中应用;生产环境应谨慎评估风险后再做决定。 另外值得注意的一点是在Windows或者macOS平台上由于架构差异实现方式会有所不同,这里主要讨论基于Linux系统的方案。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值