Docker容器简要说明

Docker中安装镜像常用的两种方式

  • 第一种:Dockerfile构建新的镜像,如下面的Centos6安装。

  • 第二种:通过拉取事先做好的镜像,如下面redis的安装。

Docker中的核心概念

  1. 镜像image 简单说镜像就是一个只读文件模板。也可以简单理解为镜像是VMware虚拟机的一个快照,只是比这个快照更加轻量。
  2. 容器container 容器是运行着的镜像。
  3. 数据卷volume 数据持久化技术。缺点:如果数据卷内容非常多将会导致容易加载启动变慢。改善方法 在写业务时,把数据库拆成很多小的数据库,这样会快一些。但从根本上不建议使用数据卷做持久化。
  4. 仓库repository Docker有一个类似版本管理仓库(Repositry)的东西,有docker.io提供的官方仓库(index.docker.io,相当于github),也可以自建(叫docker-registry,相当于自己搭建一个小型github)类似Maven的中央仓库和本地仓库。

镜像image和容器container的区别

这里写图片描述
Container和Image 在Docker的世界里,Image是指一个只读的层(Layer),这里的层AUFS文件系统里的概念。AUFS的文件系统可以让你一层一层的叠加修改的文件。镜像是只读的不可改变的,在本地会共用,主要是通过签名来实现。谁需要改变,ok 我给你一个可写的层,形成容器。而容器就是每运行一个镜像就在这个镜像上加一个可写层。但这一层并不会改变镜像本身。即我们能够实现用同一个镜像启动多个容器 里面的内容不会变。容器拥有唯一ID和唯一供人阅读的名字。对外暴露Docker的特定端口。如果你要将可写层持久化,只要通过commit命令来把这个可写层写到磁盘上,即生成新的只读镜像。

Docker为啥可以秒及甚至毫秒级启动

因为Docker小。Docker中的镜像就是一堆文件,并不像VMware一样是一个完成的操作系统。镜像可以简单到只有个程序文件。ubuntu等基础镜像,就是把依赖的文件放到正确的地方,从而使得绝大部分程序可以正常运行。和VM的镜像是完全不同的概念。

Docker的共用内核引发的安全性思考。

首先要从根本上理解什么是Docker容器,Docker所使用的技术都不是新技术,主要就是把以前需要复杂操作的命令结合了起来。而从形态上来看,容器就是 一个进程,只不过是受限制的进程,CGroup限制进程的资源使用,Namespace将资源限定在一个空间,相互间不能访问,分层文件系统就是容器的具体文件。因此,容器如果不加处理,是肯定可以操作内核的,而且是各容器间共用内核,所以这个也是某些人质疑 Docker安全性的原因。容器是肯定,也必须能够访问内核的,而方式就是我们所说的系统调用。任何linux进程操作,基本都会发起系统调用,只是你的调用会受到权限的控制。默认情况,容器是以非privilege方式运行的,因此很多设备和操作是不允许的。在1.10之后,Docker已经增强了安全性,seccomp可以限定什么系统调用不能调用,user namespce可以做用户权限映射。
<think>好的,用户想了解Docker容器的使用指南,我需要根据提供的引用资料来整理回答。首先,我需要确认用户的问题核心在哪里,可能他们需要从基础开始,比如如何进入容器、管理资源等。根据引用,有几个关键点: 1. **进入容器的方法**:引用[2]提到了使用`docker exec`命令,这是常用的方式,应该详细说明。另外,可能需要提到其他方法,比如`docker attach`,但根据资料,主要推荐`exec`,因为它更灵活。 2. **资源监控**:引用[1]提到`docker stats`可以查看资源使用情况,这个对用户管理容器性能很重要,应该包括进来。 3. **GPU资源访问**:引用[3]提到创建容器时如何访问GPU,这可能是高级用户关心的,尤其是进行机器学习或计算密集型任务时,需要说明相关参数,比如`--gpus all`。 4. **具体应用案例**:比如引用[4]的BookStack和引用[5]的Klocwork,可以作为实际例子,说明如何创建和运行特定应用的容器,增强实用性。 接下来,我需要组织这些信息,结构清晰。可能分几个部分:进入容器、资源监控、GPU支持、应用示例、性能优化等。每个部分下给出具体命令和解释,确保用户能一步步操作。 另外,用户提供的引用中有一些示例代码,比如`docker exec`和`docker stats`,需要正确展示这些命令,使用代码块格式。同时注意LaTeX格式的要求,但问题中可能涉及数学表达式较少,主要关注代码和步骤。 需要检查是否有遗漏的信息,比如容器的基本创建和运行命令,但根据引用,用户可能已经了解基础,所以重点放在使用指南的进阶部分。但为了全面性,可能还是需要简要提到`docker run`等基础命令。 最后,生成相关问题,确保覆盖用户可能进一步询问的方向,比如性能优化、安全配置、网络设置等,根据引用中的内容,比如资源使用(docker stats)、GPU支持、应用场景(BookStack, Klocwork)来设计问题。</think>### Docker 容器使用指南 #### 1. **进入 Docker 容器** - **使用 `docker exec` 命令** 这是最推荐的方式,可以在容器运行时进入交互式终端。例如: ```bash docker exec -it <容器ID或名称> /bin/bash ``` 参数说明: - `-i` 保持标准输入流开放 - `-t` 分配伪终端 - `/bin/bash` 指定容器内的 Shell 类型(根据镜像选择)[^2] #### 2. **监控容器资源使用** - **查看实时资源占用** 使用 `docker stats` 命令可实时监控容器的 CPU、内存、网络和磁盘使用情况: ```bash docker stats <容器ID或名称> ``` 支持同时监控多个容器,默认每秒刷新一次[^1]。 #### 3. **容器与 GPU 资源交互** - **启用 GPU 支持** 若容器需使用 GPU 资源(如机器学习任务),需在启动时添加 `--gpus` 参数: ```bash docker run --gpus all -it <镜像名称> /bin/bash ``` 注意:需提前安装 NVIDIA Container Toolkit 以支持 GPU 访问[^3]。 #### 4. **运行特定应用的容器示例** - **部署 BookStack(知识管理工具)** 通过镜像快速启动服务: ```bash docker run -d --name bookstack -p 8080:80 gh_mirrors/bookstack ``` 访问 `http://localhost:8080` 即可使用[^4]。 - **运行 Klocwork(代码分析工具)** 容器化部署简化环境配置: ```bash docker run -v /本地路径:/容器路径 klocwork/klocwork ``` 通过 `-v` 挂载目录实现数据持久化[^5]。 #### 5. **容器生命周期管理** | 操作 | 命令示例 | 说明 | |--------------|------------------------------|-------------------------------| | 启动容器 | `docker start <容器ID>` | 启动已停止的容器 | | 停止容器 | `docker stop <容器ID>` | 优雅终止进程 | | 删除容器 | `docker rm <容器ID>` | 移除已停止的容器 | | 查看日志 | `docker logs -f <容器ID>` | 实时跟踪容器输出 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值