原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文链接地址:「docker实战篇」python的docker-docker系统管理-基础概念(28)
大概说下docker了,其实在之前的docker文章里已经很深入了说了docker,【初级】,【中级】,【高级】等等,这里在说一下吧,可能不够深入,但是对了解docker的老铁也是个回顾吧。源码:https://github.com/limingios/dockerpython.git (源码/「docker实战篇」python的docker-docker系统管理-基础概念(27))
(一)什么是docker hub
- Docker Hub是一个仓库
https://hub.docker.com/
如果页面打不开,那就需要科学上网。
仓库是集中存放镜像文件的场所。
仓库为公开仓库(Public)和私有仓库(Private)两种形式。
最大的公开仓库就是https://hub.docker.com/
用户也可以在本地网络搭建私有仓库。
用户可以选择性的将镜像上传到私有和公有仓库中。其他用户使用镜像只需要pull命令,上传是通过push命令
- 注意
下载不需要账号,上传是需要进行账号注册的
vagrant 安装docker
源码:https://github.com/limingios/dockerpython.git (「docker实战篇」python的docker-docker系统管理-基础概念(27))
vagrant的使用参见
mac 安装vgarant :https://idig8.com/2018/07/29/docker-zhongji-07/
window安装vgarant:https://idig8.com/2018/07/29/docker-zhongji-08/
- 通过vagrant 安装centos7
- Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.require_version ">= 1.6.0"
boxes = [
{
:name => "docker-vagrant-centos",
:mem => "2048",
:cpu => "2"
}
]
Vagrant.configure(2) do |config|
config.vm.box = "centos/7"
boxes.each do |opts|
config.vm.define opts[:name] do |config|
config.vm.hostname = opts[:name]
config.vm.provider "vmware_fusion" do |v|
v.vmx["memsize"] = opts[:mem]
v.vmx["numvcpus"] = opts[:cpu]
end
config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", opts[:mem]]
v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]
end
config.vm.network :private_network, auto_config: true, ip: "192.168.70.100", bridge:"ens1f0", bootproto: "static", gateway: "192.168.70.1"
end
end
config.vm.provision "shell", privileged: true, path: "./setup.sh"
end
- setup.sh
#/bin/sh
sudo yum install -y yum upgrade yum-utils device-mapper-persistent-data wget
sudo yum install -y net-tools
sudo yum install -y curl policycoreutils openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
sudo yum install -y postfix
sudo systemctl enable postfix
sudo systemctl start postfix
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
sudo curl -sSL https://get.docker.com/ | sh
sudo curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://b81aace9.m.daocloud.io
sudo systemctl restart docker
sudo yum -y install epel-release
sudo yum -y install python-pip
sudo yum clean all
sudo pip install docker-compose
- vagrant安装命令
vagrant up
mac 安装vgarant :https://idig8.com/2018/07/29/docker-zhongji-07/
window安装vgaranthttps://idig8.com/2018/07/29/docker-zhongji-08/
系统类型 | IP地址 | 节点角色 | CPU | Memory | Hostname |
---|---|---|---|---|---|
Centos7 | 192.168.70.100 | gitlab | 2 | 2G | docker-vagrant-centos |
(1). 虚拟机vagrant讲述安装的步骤
vagrant up
(2).机器window/mac开通远程登录root用户下
su -
# 密码
vagrant
#设置 PasswordAuthentication yes
vi /etc/ssh/sshd_config
sudo systemctl restart sshd
- docker 登录
通过网页的方式登录
虚拟机linux登录docker官网,输入的是用户名和密码。不是在官网登录的邮箱
docker login
- 搜索镜像
官网方式
linxu命令的方式
- 下载镜像
1.先配置加速器
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
sudo systemctl restart docker
2.下载centos镜像
#默认下载最后一个版本
docker pull centos
docker images
3.才75MB的centos镜像,这是为啥啊?平时下载centos的ios都几个G,怎么可能如此的小。如果老铁是初学者肯定会问这类的问题。
- 解释下为什么镜像如此小
linux操作系统是由内核空间和用户空间组成的,内核空间就是kernel,linux刚启动的时候会加载这个bootfs文件系统,之后这个bootfs会卸载掉,用户文件系统就是rootfs,包含dev,bin等目录,对于刚下载的centos这个镜像来说,底层会使用docker的内核,自己只需要提供用户空间就可以了 ,对于精简的系统用户空间可以很小,只需要包括最基本的命令和程序库就可以了,我们平时安装的centos除了最基本的还会安装很多的软件,服务,图形桌面等等,需要好几个g也不足为奇了。
- 什么是镜像
Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序,库,资源,配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷,环境变量,用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。docker镜像只需要一个基础的base Image,按照需求不断的叠加就可以了。共享一份基础的。一个基础镜像出现多个容器,如果容器内的etc文件被修改,但是基础镜像的是不会被改变的。修改只会在单个的容器内。 例如要安装一个tomcat镜像,新的镜像是在基础的linux下一层一层叠加上来的。
- Docker的copy-on-write特性
所有的修改,添加,删除,只会发生在容器层中,镜像层都是只读的。
- 什么是容器
容器是一种轻量级,可移植,自包含的软件打包技术,是一种应用程序,可以在几乎任何地方以相同的方式运行。
开发人员在自己笔记本创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机,物理放服务器或公有云主机上运行。
为什么需要容器,以及为什么被称为容器
集装箱,无论你是什么货物,钢琴,香蕉,保时捷,他都会放置在各自的集装箱里面了,它都会密封,只有到达目的地才会被打开,标准的集装箱会被高效的装卸重叠,长途运输。docker就将集装箱的思想运用在了打包软件上面。它为代码提供了容器的标准化的运输系统,docker会将任何应用打包成为一个轻依赖,可移植,自包含的容器,这个容器几乎可以运行在任何的操作系统上,其实集装箱和容器对应的单词都叫container,docker的图标就是一个鲸鱼顶着多个集装箱。
- docker容器的优势
容器的优势,对于开发人员来说,创建一次,可以在任何地方运行,对于运维人员来说,配置一次,可以运行所有应用。
- docker服务
docker最核心的后台进程,它负责响应来自Docker client的请求,然后将这些请求翻译成系统调用完成容器管理操作。该进程会在后台启动一个API Server,负责接收由Docker client发送的请求;接收到的请求将通过Docker服务内部的一个路由分发调度,再由具体的函数来执行请求。
PS:说了下docker的优越性,vagrant的方式搭建了一个centos7的docker环境。一定要了解集装箱的概念对了解docker很有必要。
网友评论