EricJJ' Blog

写代码

  1. 1. docker 技术入门
  2. 2. docker 安装
  3. 3. 运行一个 docker容器
  4. 4. 关于卷

docker 技术入门

docker 是一个容器化引擎,依赖 copy-on-write 模型,C/S架构。

与传统虚拟化相比

docker 技术组件包括:

  • 一个原生的 Linux 容易格式, libcontainer。
  • Linux 内核的命名空间(namespace),用于隔离文件系统,进程和网络。
  • 文件系统隔离:每个容器都有自己的root文件系统。
  • 进程隔离:每个容易都运行在自己的进程环境中。
  • 网络隔离:荣期间的虚拟网络接口和IP地址是分开的。
  • 资源隔离和分组:使用cggroups(control group, Linux内核特性)将CPU和内存之类的资源独立分配给每个docker容器。
  • 写时复制:文件系统都是通过写时复制创建的,这意味着文件系统是分层的,快速的,并且占用磁盘空间更小。
  • 日志:容易产生的 STDOUT STDERR STDIN这些IO流都会被收集记入日志,用来进行日志分析和故障排错。
  • 交互式shell: 用户可以创建一个伪 tty终端,将其连接到 STDIN,为容器提供一个交互式shell。

docker 安装

# ubuntu
sudo apt install docker.io
docker info

如果有安装 ufw, 修改/etc/default/ufw

DEFAULT_FORWARD_POLICY="ACCEPT"
sudo utw reload

运行一个 docker容器

sudo docker run -i -t ubuntu /bin/bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
84ed7d2f608f: Pull complete
be2bf1c4a48d: Pull complete
a5bdc6303093: Pull complete
e9055237d68d: Pull complete
Digest: sha256:868fd30a0e47b8d8ac485df174795b5e2fe8a6c8f056cc707b232d65b8a1ab68
Status: Downloaded newer image for ubuntu:latest
[email protected]:/#

其中 -i 标志 STDIN 开启, -t 分配伪 tty 终端

关于卷

卷是在一个或者多个容器内被选定的目录,可以绕过分层的联合文件系统(Union File
System),为Docker提供持久数据或者共享数据。这意味着对卷的修改会直接生效,并绕过镜像。
当提交或者创建镜像时,卷不被包含在镜像里。

This article was last updated on days ago, and the information described in the article may have changed.