实用小公举生物信息工具docker

Docker镜像的原理

2022-07-19  本文已影响0人  羋学僧

Docker运行的整个生命周期

Docker使用多种操作系统的发行版

  1. 一个完整的操作系统,是由linux内核+发行版,组成的一个可以使用的完整操作系统。
  2. 利用docker容器,可以获不同的发行版镜像,然后基于该镜像,运行出各种容器去使用。

查看操作系统的两大组成

# 查看操作系统的发行版
cat /etc/redhat-release 

CentOS Linux release 7.9.2009 (Core)
# 查看操作系统内核
uname -r

4.19.12-1.el7.elrepo.x86_64

使用docker,来切换不同的发行版,内核都是使用宿主机的内核

# 利用docker获取不同的发行版镜像
docker pull ubuntu
docker pull centos:7.8.2003
# 确认当前宿主机的发行版本
cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
# 查看本地的docker镜像有哪些
docker images
# REPOSITORY   TAG        IMAGE ID       CREATED         SIZE
# nginx        latest     4cdc5dd7eaad   32 hours ago    133MB
# redis        latest     08502081bff6   2 weeks ago     105MB
# ubuntu       latest     9873176a8ff5   2 weeks ago     72.7MB
# centos       7.8.2003   afb6fca791e0   14 months ago   203MB
# 运行centos7.8.2003发行版
# 运行容器,且进入容器内
# 参数 解释 -i(交互式命令操作) -t(开启一个终端) bash(进入容器后执行的命令)
docker run -it afb6fca791e0 bash
# 查看容器内centos的发行版本
[root@e332fe985eac /]#  cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)

# 退出当前的容器空间
exit
# 查看虚拟机的操作系统内核
uname -r
4.19.12-1.el7.elrepo.x86_64
# 进入ubuntu系统
docker run -it ubuntu bash

# 查看容器内ubuntu的发行版本
root@5ea99c3a44f1:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04 LTS"

# 查看ubuntu的操作系统内核(公用宿主机内核)
root@5ea99c3a44f1:/# uname -r
4.19.12-1.el7.elrepo.x86_64

Docker部署服务的优势

Docker镜像原理

Docker镜像 分层原理
# 进入正在运行的容器内
docker exec -it 18c7f9820954 bash

# 查看nginx运行使用的基础镜像
root@18c7f9820954:/# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Docker镜像 写时复制原理

镜像分层的一大好处就是共享资源,例如有多个镜像都来自于同一个base(基础)镜像,那么docker host只需要存储一份base镜像。

  • 内存里也只需要加载一份host,即可为多个容器服务。
  • 即使多个容器共享一个base镜像,某个容器修改了base镜像的内容,例如修改/etc/下的配置文件,其他容器的/etc/下内容是不会被修改的,修改动作只限制在单个容器内,这就是容器写时复制特性(Copy On Write),如下所示。


上一篇 下一篇

猜你喜欢

热点阅读