【Docker】介绍与安装
中文文档:
https://vuepress.mirror.docker-practice.com/
http://www.dockerinfo.net/document
Docker介绍
Docker的优点
- Docker引擎统一了基础设施环境,应用程序不需要关心操作系统版本、硬件配置
- Docker引擎统一了程序的打包部署方式,通过Docker镜像打包部署
- 标准化,应用程序环境依赖、操作系统等问题。容器保证所有配置、依赖始终不变
- 隔离性与安全,容器之间的进程相互隔离,一个容器出现问题不会影响其他容器
- 快速部署,镜像构建后秒级启动,资源占用少
- 更易迁移扩展,容器几乎可以在任何平台运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等
- 弹性云服务,适合微服务架构,容易实现动态扩容缩容
Docker运行机制
我们都知道docker里的进程 和外界的进程是一致的,你无论是在容器里还是在宿主主机,在使用top命令查询进程列表,docker所运行的进程(PID)都是一样的,至于容器里的进程会被隔离是因为linux本身的机制Namespace,在创建容器进程时,指定了这个进程所需要启用的一组 Namespace 参数。这样,容器就只能“看”到当前 Namespace 所限定的资源、文件、设备、状态,或者配置。而对于宿主机以及其他不相关的程序,它就完全看不到了,Namespace 技术实际上修改了应用进程看待整个计算机“视图”,即它的“视线”被操作系统做了限制,只能“看到”某些指定的内容。基于 Linux Namespace 的隔离机制相比于虚拟化技术也有很多不足之处,其中最主要的问题就是:隔离得不彻底,在 Linux 内核中,有很多资源和对象是不能被 Namespace 化的,最典型的例子就是:时间,你在容器内的时间和宿主主机的时间是一致的,要改大家一起改,以及你所用的系统采用不同版本的linux内核也不一定兼容,不过这些微小的缺陷丝毫不影响docker发光发热。
Docker和虚拟机的区别
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
Docker deamon
Docker的守护进程,Docker deamon是一个运行在宿主机的后台进程。
数据卷
数据卷的目的在于数据的持久化,它存在Docker宿主机中,独立于容器的生存周期,因此不会在容器删除时删除其挂载的数据卷;
数据卷可以为一个或多个容器提供访问;
数据卷可以是目录也可以是文件;
在容器启动初始化时,如果容器使用的宿主机挂载点有数据,这些数据就会拷贝到容器中;
数据卷的变化不会影响镜像的更新;
如果未指定主机挂载目录的情况下,都是挂载到/var/lib/docker/volumes/下
Docker的安装
移除旧版本docker:
sudo yum remove docker
安装必要的系统工具:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
设置yum源为阿里云:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum缓存
sudo yum makecache fast
安装dockerCE
sudo yum -y install docker-ce
如果在centOS 8上安装dockerCE,需要在安装命令后面追加 --skip-broken(跳过此项安装) 或者 --nobest (使用最佳安装包) 进行安装
yum install -y docker-ce --nobest
启动docker服务:
systemctl start docker
设置docker开机自启动:
systemctl enable docker
容器开机自启动:(通过--restart always)
docker run -id --restart always --name busy1 busybox
常用命令
重启docker宿主:systemctl daemon-reload
停止docker服务:systemctl stop docker
重启docker服务:systemctl restart docker
查看docker状态:systemctl status docker
开机自启动docker:systemctl enable docker
查看docker概要信息:docker info
查看docker版本:docker -v
查看容器里的进程:docker top 容器id
退出容器:exit
镜像加速:更改镜像源
vi /etc/docker/daemon.json 在该文件中输入如下内容:{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }
重启服务:
sudo systemctl daemon-reload
sudo systemctl restart docker

浙公网安备 33010602011771号