zoukankan      html  css  js  c++  java
  • docker 重要概念

    流行的自动化运维平台:
    Ansible / Git / Jenkins / Docker

    平台化、自动化、分类(配置类、搭建类)、容器化

    在物理机上安装docker并启动
    # yum install -y docker


    传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所
    需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有
    进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

    Docker重要概念:镜像(Image)、容器(Container)、仓库(Repository)
    镜像采用了AUFS(联合文件系统),采用了分层结构,镜像是只读的,基础镜像一旦构建完成
    就不能再改了,但是可以在它上面封装一个层次,把改动的内容放到高层中。
    容器:相当于是镜像的一次执行,容器也相当于是镜像可读写副本。
    容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。
    不要假定容器会永远运行,而应该假定容器随时可能出现故障,出现故障后,也不会再去修复它
    数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡

    一个 Docker Registry中可以包含多个仓库(Repository)。每个仓库可以包含多
    个标签(Tag);每个标签对应一个镜像。
    我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。
    如果不给出标签,将以 latest 作为默认标签。

    容器、镜像的使用
    # docker run busybox echo 'Hello World'
    # 如果本机没有busybox:latest,将会到仓库中下载,然后启动容器,
    # 容器运行echo命令后,退出
    # 因为容器只是宿主机上的一个进程,echo是个临时进程,运行后就退出,所以容器也就结束了
    # 因为容器只是个进程,不是一个完整的系统,所以如果希望它一直处于运行状态,就必须
    # 使容器内的进程在前台运行,不要让前台程序退出

    [root@room8pc16 day06]# docker run -it centos bash
    如果执行exit退出,容器又停止运行了,如果希望退回到宿主机的shell但不要停掉容器,
    可以按ctrl+p/ctrl+q

    进入容器的方法:
    (1)不启动新进程
    [root@room8pc16 day01]# docker attach 831b
    (2)启用新进程
    [root@room8pc16 day01]# docker exec -it 831b bash


    创建镜像的方法:
    1、基于原始镜像启动容器,修改容器,完毕后commit成新镜像。不推荐 !!!
    2、使用dockerfile
    (1) 每个dockerfile的指令都会增加一层,所以要注意书写,不要出现太多层次
    [root@room8pc16 day01]# mkdir cent1
    [root@room8pc16 day01]# cd cent1/
    [root@room8pc16 cent1]# vim dockerfile
    FROM centos
    RUN echo 'hello' > /tmp/hi.txt
    RUN echo 'workd' > /tmp/abc.txt
    [root@room8pc16 cent1]# docker build -t centos:v1 .
    [root@room8pc16 cent1]# docker history centos:v1 # 新镜像增加了两层
    上面dockerfile应该改为以下样式:
    FROM centos
    RUN echo 'hello' > /tmp/hi.txt
    && echo 'workd' > /tmp/abc.txt
    [root@room8pc16 cent1]# docker build -t centos:v2 .
    (2) 构建上下文
    默认情况下,构建镜像时,docker会将当前目录所有内容拷贝到context上下文环境中,在
    dockerfile中的当前目录(.)实际上指的是context中的当前目录。
    (3) 构建时,应该创建一个空目录,将所需文件拷贝到空目录中,然后构建。
    (4) 常用指令FROM / COPY / CMD / ENTRYPOINT / RUN / EXPOSE


    指定容器的name和主机名
    [root@room8pc16 day01]# docker run -it --name centos1 -h mycent centos bash


    在物理机上搭建私有仓库
    根据CLOUD最后一天的案例搭建私有仓库,再将kubernetes目录中的images导入到私有仓库
    1、
    [root@room8pc16 day01]# vim /etc/docker/daemon.json
    {
    "insecure-registries" : ["192.168.4.254:5000"]
    }
    [root@room8pc16 day01]# systemctl restart docker
    [root@room8pc16 day01]# docker run -d -p 5000:5000 registry
    2、
    [root@room8pc16 kubernetes]# tar xvzf images.tar.gz
    [root@room8pc16 kubernetes]# docker load < images/mysql.tar
    3、
    [root@room8pc16 day01]# docker tag mysql 192.168.4.254:5000/mysql
    [root@room8pc16 day01]# docker push 192.168.4.254:5000/mysql
    4、查看
    [root@room8pc16 day01]# curl http://192.168.4.254:5000/v2/_catalog

  • 相关阅读:
    linux内核initrd文件自定义方法
    Linux2.6 内核的 Initrd 机制解析
    Linux 系统裁剪笔记 4 (内核配置选项及删改)
    Linux 系统裁剪笔记 3
    Linux 系统裁剪笔记 软盘2
    Linux 系统裁剪笔记1
    如何获取Linux-gate.so.1动态库
    通过grub-install命令把grub安装到u盘
    爬虫之UserAgent用户代理
    爬虫之urllib包以及request模块和parse模块,爬虫之urllib.error模块
  • 原文地址:https://www.cnblogs.com/lsgo/p/10684274.html
Copyright © 2011-2022 走看看