欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker学习笔记【一】

程序员文章站 2022-06-13 19:51:05
...
docker 概念:
1. 架构

docker学习笔记【一】
            
    
    博客分类: 操作系统 docker 

虚拟机需要为每个VM安装操作系统,docker则共享一个操作系统。同时虚拟机启动后,操作系统自身占用cpu,内存等资源,而docker只相当于操作系统的一个进程,自身消耗资源小。
这里提一下进程概念,在linux中进程都有个pid, 然后他创建的子进程的父pid就是父进程的pid.杀死父进程pid, 会同时销毁所有子pid. docker正是利用这种关系来管理进程。docker daemon是所有容器的父进程,docker 容器启动时,都会启动一个进程,这个进程号在容器内部对应的是1号进程, 在容器外部就是docker daemon创建的一个普通进程。在docker 容器中还可以创建其他的进程,但是这些进程都是容器启动时进程的子进程,虽然在容器内部没有从属关系。linux在容器外可以杀死这个普通进程,但是在容器内是无法杀死1号进程的。

2.仓库,镜像,容器
镜像是只读的,多个名称相同版本不同的镜像放在同一仓库中(有点类似svn分项目管理)。一个注册服务器(registry)可以放置多个仓库(repository)。使用docker命令可以获取,运行,生成,提交镜像。docker运行镜像生成容器。
docker容器采用写时复制技术,容器中是一个分层结构,底部是bootfs, 加载了镜像,在最上面有个读写层,在需要修改时,docker从只读的镜像层读取文件到读写层,然后进行修改,这个文件overrite了只读层的文件,整个构成了新的容器。
docker使用 commit 命令将新容器生成镜像。

3.CS结构
docker 是CS结构,通常CS运行在同一台服务器中, 命令行交互就是C, 服务端S常驻内存,管理着一个个容器(进程)。


4.操作系统
docker 共享宿主机的操作系统,但是为什么我们使用docker容器的时候,往往要先下载一个基础镜像,如centos,ubuntu之类的。其实linux操作系统分两部分(内核空间和用户空间),docker共享的是宿主机的内核空间kernel. kernel是由bootfs启动装载的。而docker基础镜像打包的是用户空间,包括/dev,/proc,/usr/,/etc等目录及一些命令工具,这部分称为rootfs。因此,可以看到同一个宿主机可以运行不同的基础镜像,主要是因为不同的基础镜像对应的linux kernel是一样的,只是rootfs不同而已。这也很好理解,我们下载的基础镜像为什么比一个操作系统会小很多,因为他只下载了其中的用户空间而已。
------------------------------------------------------------------------------------------------------------------
docker 安装:
1. 准备环境:  centos 7 以上版本, 内核>3.10 的稳定版,  64位操作系统
2. 使用root权限将 yum更新到最新(如果是root登录就不用sudo了)
sudo yum update

3. 安装需要的软件包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

4. 添加yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

网上建议使用国内的镜像,速度会快一点
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5. 安装docker
sudo yum -y install docker-ce

经过漫长的安装过程后
docker学习笔记【一】
            
    
    博客分类: 操作系统 docker 
6.添加开机启动
sudo systemctl start docker
sudo systemctl enable docker

7.验证安装是否成功(查看client和service信息)
docker version


docker学习笔记【一】
            
    
    博客分类: 操作系统 docker 

至此安装完毕,还是很顺利的。

------------------------------------------------------------------------------------------------------------------
第二天,不幸的事情发生了,运行docker run hello-world,发生了这个bug
https://github.com/docker/for-linux/issues/597
只好卸载,换个版本试试。
卸载过程:
1. 列出安装的docker
yum list installed | grep docker


2. 卸载已安装的内容
yum -y remove docker-ce-cli.x86_64
yum -y remove docker-ce.x86_64
yum -y remove containerd.io.x86_64


3.清理docker的安装目录
rm -rf /var/lib/docker


------------------------------------------------------------------------------------------------------------------
再次安装:
1. 查看仓库中所有docker的版本
sudo yum list docker-ce --showduplicates | sort -r


docker学习笔记【一】
            
    
    博客分类: 操作系统 docker 

2. 安装指定的版本
sudo yum -y install docker-ce-18.03.1.ce-1.el7.centos


3.启动docker服务
sudo service docker start


4.再次运行hello-world
docker run hello-world


docker学习笔记【一】
            
    
    博客分类: 操作系统 docker 
运行run命令,如果本地没有镜像,会从远程仓库pull一个到本地。显示成功运行。
  • docker学习笔记【一】
            
    
    博客分类: 操作系统 docker 
  • 大小: 17.5 KB
  • docker学习笔记【一】
            
    
    博客分类: 操作系统 docker 
  • 大小: 16.4 KB
  • docker学习笔记【一】
            
    
    博客分类: 操作系统 docker 
  • 大小: 55.2 KB
  • docker学习笔记【一】
            
    
    博客分类: 操作系统 docker 
  • 大小: 173.6 KB
  • docker学习笔记【一】
            
    
    博客分类: 操作系统 docker 
  • 大小: 97.7 KB
相关标签: docker