写在前面
后面来补~
先来一张经典的图:
虚拟机技术 VS 容器技术(docker就是典型代表实现)
可以看出:docker不需要我们提供OS的支持,它已经将OS集成在了自己的Docker Engine中。docker更加小巧。
Docker + Kubernetes(生产中可能是有上千个容器)
k8s:对容器的创建 管理 调度 运维
Docker 基础篇
第一章:容器技术 与Docker简介
第二章:Docker 环境的各种搭建方法
第三章:Docker的镜像和容器
第四章:Docker的网络
第五章:Docker的持久化和数据共享
第六章:Docker Compose多容器部署
Docker 进阶篇
第七章:容器编排Docker Swarm
第八章:Docker初体验-Docker Cloud 和 Docker 企业版
第九章:容器编排Kubernets
第十章:容器的运维和监控
第十一章:Docker + DevOps实战项目
1.1 容器技术概述
1.很久很久以前,我们部署一个应用:
需要准备一台物理服务器;
在Physical server 上安装操作系统;
(可能还需要安装App的环境依赖,比如JDK)
在Operating System上再部署我们的Application。
- 部署非常慢
- 成本非常高
- 资源浪费
- 难于迁移和扩展
2.后来就出现了 虚拟化技术 ,
需要准备一台物理服务器;
在Physical server 上安装物理机自己的操作系统;
使用Hypervisor技术,分离出一些物理机的资源出来;
再在分离出来的一个个资源中安装OS,构成一个个虚拟机;
再在虚拟机中安装应用环境依赖和部署应用。
- 一个物理机可以分离多个虚拟机出来
- 每个App可以运行在一个独立的VM中
局限性:
- 每个VM本身就是一个完整的OS,运行本身就会消耗一定资源
一旦VM多了,就会浪费比较大的资源。
通过Container对我们的App进行打包成集装箱,
这样就可以车子轮船拉走
运行在哪里都行。
什么是容器?
- 对软件和它的依赖 标准化打包
- 应用之间相互隔离
- 共享一个 OS Kernel
- 可以运行在很多主流的操作系统上
1.2 Docker的架构和底层技术
docker engine
systemctl start docker
启动docker之后就可以看见dockerd 这个进程
[root@localhost ~]# ps -ef | grep docker
root 1579 1 0 Feb08 ? 00:02:32 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root 13816 6254 0 02:30 pts/5 00:00:00 grep --color=auto docker
[root@localhost ~]#
Docker 架构
Docker 底层技术支持:
Namespaces : 做隔离pid/net/ipc/mnt/uts
Control Groups : 做资源限制
Union file systems: Container 和 image 的分层
1.3 Docker 魅力初体验
WordPress 本来安装是比较麻烦的,但是在这里就是一个命令的事情~
[root@localhost ~]# cd wordpress/
[root@localhost wordpress]# ls
docker-compose.yml
[root@localhost wordpress]#cat docker-compose.yml
version: '3'
services:
db:
image: mysql:5.7
volumes:
- ./db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "9999:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
执行: docker-compose up -d
[root@localhost docker-hadoop-spark-hive-master]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bbc250af997f wordpress:latest "docker-entrypoint.s…" 58 seconds ago Up 55 seconds 0.0.0.0:9999->80/tcp wordpress_wordpress_1
访问:http://172.20.10.4:9999/
ok~ 美得很,这样就可以做个性化的设置了。
最后,你会发现,多了一个db_data 数据文件夹,没错就是我们映射出来的数据库文件夹
[root@localhost ~]# cd wordpress/
[root@localhost wordpress]# ll
total 8
drwxr-xr-x. 6 polkitd root 4096 Feb 9 00:30 db_data
-rw-r--r--. 1 root root 545 Feb 9 00:29 docker-compose.yml
[root@localhost wordpress]#
这样你如果想要移植,你就可以把这个db_data也一并拷走就行。
有什么问题,欢迎留言讨论~~
更多文章:系统学习Docker 不迷路:https://blog.csdn.net/liuge36/category_7651616.html