容器技术和Docker的简单介绍(系统学习Docker01)

写在前面

后面来补~

先来一张经典的图:

虚拟机技术 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

猜你喜欢

转载自blog.csdn.net/liuge36/article/details/104232518