虚拟化是一种资源管理技术,将计算机上的各种实体资源,如:服务器,网络,内存,存储进行抽象,转换后呈现出来,打破实体结构之间不可切割的障碍,使用户以更好的组态使用资源。
Vm可以虚拟化。
容器技术:在计算机上虚拟出独立的一块空间。
Vm虚拟化:需要虚拟整个计算机
容器技术:是基于物理计算机内核
容器虚拟化:
./当前目录 …/上一层
下面是个模块的说明:
镜像是构建docker的基石,docker把应用程序及依赖关系包,打包到镜像文件当中,通过这个文件生成docker容器,image可以说是容器的模板。
Docker镜像是有文件系统叠加而成的,底端是一个文件引导系统,在容器运行起来的时候,引导系统被卸载,留出更多的空间给磁盘镜像使用。
Registry 注册中心位于服务端,用来保存用户构建的镜像,registty分为公有和私有两种,公有的叫做docker hub,我们可以注册账号,分析镜像,但是docker hub是外网,下载镜像很慢,建议各位搭建自己registry。但是一定要注意,直接保存镜像文件的不是registry,而是 repository(仓库),一个注册中心(registry)可以有多个仓库 (repository),一个仓库(repository)里面有多个镜像(image)。
容器用来运行镜像的系统或者程序,容器基于镜像创建模板,然后运行,容器是基于镜像启动的,容器可以运行一个或者多个进程。
容器具体讲:是一个镜像格式,一些列标准操作,一个执行环境。
Docker借鉴了标准集装箱的概念。标准集装箱将货物形成大小的标准。
Docker可以运行在windows上,linux上。Centos系统对docker支持友好,centos上docker运行稳定。其他系统,docker需要到官网下载,解压,安装。
Centos yum源自带docker,所以在centos上docker安装:
yum -y install docker
yum list installed |grep docker
Docker 在centos当中是一个服务,所以启动的命令是:
systemctl start docker
docker version
查看镜像
docker images
下面来拉去第一个镜像
Docker pull 镜像名称
比如拉取MySQL8,0
这个MySQL8.0
默认的拉取源是国外网站,有时候无法拉取,这时候就需要修改修改docker源,这里修改成中国科技大学:
完成以上步骤后,进行下面的步骤:
sysctl net.ipv4.ip_forward
如果不是net.ipv4.ip_forward= 1
,进入 /etc/sysctl.conf下修改配置文件
sysctl restart network
docker create -it --name mysql8.0 mysql(镜像id) /bin/bash
dadee7afee
的容器docker create -it --name mysql8.0 91dadee7afee /bin/bash
启动镜像
docker start -ai mysql8.0
退出容器
exit
docker run -dit --name=mysql8.0 91daddee7afee /bin/bash
Docker exec -it mysql8.0 /bin/bash
/bin/bash进入执行的第一个命令
退出容器我们用exit
报错:Container 容器
容器没有启动导致的问题,非法关闭容器,或者开始没有启动容器
Docker start 容器
容器的常规管理
Container 容器
Docker container ls 列出运行的容器
Container ID 容器id
Image 镜像id
Command 命令
Created 创建时间
Status 状态
Up 启动状态
Exited 退出状态
Ports 端口/协议
Name 容器的名称
Docker container ls --all 列出所有的容器
dcoker container stop 容器id或者容器名称 停止运行容器
dcoker container start 容器id或者容器名称 开始运行容器
docker container kill 容器id或者容器名称 杀死容器
docker container rm 容器id或者容器名称 删除容器
首先,我们基于当前的容器进行了修改,比如:
我们首先创建了一个Ubuntu的容器,然后在容器当中安装了python3,安装了Django框架, 安装NGINX服务器,安装了mysql数据库,安装…其他的python web开发工具。然后将该容器修改完成的镜像进行打包然后提交:
docker commit [参数] 容器名 镜像名
Docker commit -m “这个时候我的docker镜像”
m 描述
1、注册docker账号
2、向docker库提交镜像
我们提交的是镜像,实际上是我们用户修改过的容器当中的镜像
1、Docker container ls -all 查看所有的容器
2、登录docker hub
docker login --username=username
Password:密码
successed
3、docker commit -m “镜像描述” -a“作者” 容器名称或者id 远程库的名字:上传到 docker hub上的名字
比如docker commit -m “docker测试提交镜像” -a “边进辉”
721b061fe45c bianjinhui/education:djangoTesting
4、docker tag 镜像id 远程库的名字:上传到docker hub上的名字
#将镜像,容器和远程库进行标识
docker tag 32260605cf7a bianjinhui/education:djangoTesting
5、docker push 远程库的名字:上传到docker hub上的名字
#将于远程库有标识关系的库提交
docker push bianjinhui/education:djangoTesting