容器学习
IBM DeveloperWorks网站关于容器技术的描述十分准确:“容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化(paravirtualization)和系统调用替换中的复杂性。”
虚拟化
平台虚拟化
1 完全虚拟化:虚拟机模拟完整的底层硬件环境和特权指令的执行过程,客户操作系统无需进行修改。例如IBM p和z系列的虚拟化、VMwareWorkstation、VirtualBox、QEMU等。
2 硬件辅助虚拟化:利用硬件(主要是CPU)辅助支持(目前x86体系结构上可用的硬件辅助虚拟化技术包括Intel-VT和AMD-V)处理敏感指令来实现完全虚拟化的功能,客户操作系统无需修改,例如VMwareWorkstation、Xen、KVM。
3 部分虚拟化:只针对部分硬件资源进行虚拟化,客户操作系统需要进行修改。现在有些虚拟化技术的早期版本仅支持部分虚拟化。
4 准虚拟化:部分硬件接口以软件的形式提供给客户机操作系统,客户操作系统需要进行修改,例如早期的Xen。
5 操作系统级虚拟化:内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程。容器相关技术即在这个范畴。
Docker以及其他容器技术,都属于操作系统虚拟化这个范畴
注册服务器与仓库
Docker使用镜像
镜像拉取
docker pull NAME[:TAG]。其中,NAME是镜像仓库的名称(用来区分镜像),TAG是镜像的标签(往往用来表示版本信息)
我的使用
在Mac上面使用了MySQL的pull
这里直接pull了一个MySQL,没有制定版本。
阿里云上的使用
首先我更新了一下yum的版本
yum update
因为我这个是实验性的可以更新,但是在实际开发环境中不应该直接更新,有可能会导致出乎意料的问题。
安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
设置仓库,这里采用了阿里的镜像。
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看所有的docker版本然后选择自己需要的版本
yum list docker-ce --showduplicates | sort -r
如果不指明的话就是默认选择最新的镜像
yum install docker
但是我在查看docker版本的时候出现错误如下
这里是docker和podman冲突了
我并没有解决,但是podman和docker大部分命令好像都是兼容的,因此我就没有费力再去更改。
用podman run hello-world
可以看到我是安装成功了
在阿里云上配置MySQL
首先podman pull mysql
然后通过podman run -d -p 3306:3306 --name lvyoumysql docker.io/library/mysql
使得该容器的3306端口映射到宿主机的端口,然后在阿里云的安全组规则当中打开3306端口,并且允许外部访问,就可以通过3306端口直接连接到部署在阿里云上的MySQL。
在自己的PC上通过navicat连接mysql。