Docker 原理和实践
Docker原理
*Docker是基于Go语言实现的云开源项目。*
Docker的主要目标是“Build,Ship and Run Any App , Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行
环境能够做到“一次封装,到处运行”。Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用运行在Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。
Docker 可以干嘛
Docker 和传统虚拟化方式的不同之处:
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。
因此容器要比传统虚拟机更为轻便。每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。
镜像(Image)
操作系统分为内核和用户空间。对于Linux而言,内核启动后,会挂载root文件系统为其提供用户空间支持。而Docker镜像(Image),就相当于是一个root文件系统。
1 | Docker设计时,就充分利用Union FS的技术,将其设计为分层存储的架构。 |
容器(Container)
1 | 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的类,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。 |
仓库(Repository)
1 | 一个Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。 |
Docker 命令
参考链接:
https://www.runoob.com/docker/docker-tutorial.html
Docker部署
部署portainer
docker run -ti -d –name kevin-portainer -p 9000:9000 –restart=always -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
参考链接:
https://blog.csdn.net/qq_41582883/article/details/113487186
部署mysql 命令
1 | 1.docker run -it --name=mysql-test -d --privileged=true -p 3306:3306 -v /opt/software/mysql/conf:/etc/mysql/conf.d -v /opt/software/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD='123456' mysql |
参考文章:
https://www.cnblogs.com/tester-ggf/p/15800220.html
__END__