「docker实战篇」python的docker-docker系统管理-基础概念(28)
2019-06-27 09:58:56
李明
  • 访问次数: 382
  • 注册日期: 2018-07-09
  • 最后登录: 2022-11-17

大概说下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很有必要。

>>原创文章,欢迎转载。转载请注明:转载自 IT人故事会 ,谢谢!
>>原文链接地址: 「docker实战篇」python的docker-docker系统管理-基础概念(28)