Docker基础与基本概念

  1. docker与传统虚拟机的架构对比

传统的虚拟机在宿主OS上运行Hypervisor, 在Hypervisor上运行虚拟操作系统如RHEL, CentOS等。应用App是运行在虚拟操作系统上的。

容器在宿主OS上运行Docker Engine,而应用App是直接运行在Docker Engine上的。容器上运行的App与宿主OS共享硬件资源,如CPU和内存。以VMware为例,即使是企业级的esxi虚拟化技术,和容器的运行效率比仍然有 5%~45% 的性能差异。

  1. docker的安装

CentOS上运行如下命令安装docker

yum install docker-ce

如果遇到网络问题无法下载,可以修改 /etc/docker/damon.json 添加如下镜像链接

{
    "registry-mirrors": [
        "https://docker.rainbond.cc"
        "https://docker.1pnel.live"
    ]
}
  1. docker镜像的组成

docker镜像从下往上,有以下几个部分组成

  • 可写容器
  • 镜像,制作的应用镜像如Nginx, VIM等
  • 基础镜像rootfs,如ubuntu
  • 引导文件系统boots,包含内核和容器组、命名空间、设备映射等

doker容器分镜像层和容器层,镜像层是只读的,容器层允许修改镜像的整个副本。容器层使用写时复制技术,数据写入到挂载的宿主机数据卷中。

  1. 镜像的制作

镜像制作的dockerfile实例:

FROM centos
RUN yun -y install wget
RUN wget -O redis.tar.gz "https://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xzvf redis.tar.gz

以上执行会创建3层镜像。可简化为以下格式:

FROM centos
RUN yun -y install wget && wget -O redis.tar.gz "https://download.redis.io/releases/redis-5.0.3.tar.gz" && tar -xzvf redis.tar.gz

原则上一个容器运行一个应用。

  1. docker的一些命令

编译docker镜像

docker build -t nginx:v20

运行docker镜像

docker run -itd -p 8000:80 nginx:v20

查看宿主和容器的端口映射

iptables -t nat -L -n

查看docker挂载的卷

docker volume ls

查看docker网络

docker network ls

查看docker里进程

docker ps
posted @ 2024-09-07 22:08  jigsawecho  阅读(12)  评论(0编辑  收藏  举报