• Docker应用容器学习


    前言

    学习docker容器前提:

    1、免费,本地电脑安装VM虚拟机

    (37条消息) 史上最详细的Hadoop环境搭建_似水流年的博客-CSDN博客_hadoop环境搭建

    (37条消息) Linux系统安装(VMware 14+ CentOS 7,2018年最新)_張小噶的博客-CSDN博客_vmware14

    2、购买云服务器

    阿里云-上云就上阿里云 (aliyun.com)

    有兴趣的可以听听入门的B站视频

    【狂神说Java】Docker最新超详细版教程通俗易懂_哔哩哔哩_bilibili

    Docker官网:

    Home - Docker

    Docker文档地址:

    Docker Documentation | Docker Documentation

    Docker仓库地址:

    Docker Hub Container Image Library | App Containerization

    一、概述

    1.1 基本概念

    Docker 是一个开源的应用容器引擎,基于 Go 语言   并遵从 Apache2.0 协议开源。

    Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

    容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

    1.2 优势

    简化程序:Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的  Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的    任务,在Docker容器的处理下,只需要数秒就能完成。

    节省开支:一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

    1.3 与传统VM特性对比:

    作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著优势:

    • Docker 容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式要快得多。
    • Docker 容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器。
    • Docker 通过类似Git的操作来方便用户获取、分发和更新应用镜像,指令简明,学习成本较低。
    • Docker 通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率。
    • Docker 容器除了运行其中的应用之外,基本不消耗额外的系统资源,保证应用性能的同时,尽量减小系统开销。
    • Docker 利用Linux系统上的多种防护机制实现了严格可靠的隔离。从1.3版本开始,Docker引入了安全选项和镜像签名机制,极大地提高了使用Docker的安全性。

    1.4 基础架构

    Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。

      

    1.5 Docker 技术的基础:

    • namespace,容器隔离的基础,保证A容器看不到B容器. 6个名空间:User,Mnt,Network,UTS,IPC,Pid
    • cgroups,容器资源统计和隔离。主要用到的cgroups子系统:cpu,blkio,device,freezer,memory
    • unionfs,典型:aufs/overlayfs,分层镜像实现的基础

    1.6 Docker 组件

    • docker Client客户端 -->向docker服务器进程发起请求,如:创建、停止、销毁容器等操作
    • docker Server服务器进程 -->处理所有docker的请求,管理所有容器
    • docker Registry镜像仓库 -->镜像存放的中央仓库,可看作是存放二进制的scm

    二、安装部署

    2.1 准备条件

    目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本2.6.32-431 或者更高版本。

    本人虚拟机如下:

    2.2 安装 Docker

    yum install docker -y          #安装
    systemctl start docker         #启动
    systemctl enable docker        #设置开机自启动

    2.3 基本命令

    docker search centos   #搜索镜像

    默认从国外拉去,速度很慢,可以使用daocloud配置加速

    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://d6f11267.m.daocloud.io
    脚本是写入
    echo "{\"registry-mirrors\": [\"http://d6f11267.m.daocloud.io\"]}"> /etc/docker/daemon.json
    systemctl restart docker              #重启失效

    根据需求拉取镜像:

    docker pull docker.io/ansible/centos7-ansible

    拉去search到的全部镜像:

    for i in `docker search centos|awk '!/NAME/{print $2}'`;do docker pull $i;done

    查看本地镜像:

    docker images

    2.4 命令整理

    容器操作:

    docker create # 创建一个容器但是不启动它
    docker run # 创建并启动一个容器
    docker stop # 停止容器运行,发送信号SIGTERM
    docker start # 启动一个停止状态的容器
    docker restart # 重启一个容器
    docker rm # 删除一个容器
    docker kill # 发送信号给容器,默认SIGKILL
    docker attach # 连接(进入)到一个正在运行的容器
    docker wait # 阻塞一个容器,直到容器停止运行

    获取容器信息:

    docker ps # 显示状态为运行(Up)的容器
    docker ps -a # 显示所有容器,包括运行中(Up)的和退出的(Exited)
    docker inspect # 深入容器内部获取容器所有信息
    docker logs # 查看容器的日志(stdout/stderr)
    docker events # 得到docker服务器的实时的事件
    docker port # 显示容器的端口映射
    docker top # 显示容器的进程信息
    docker diff # 显示容器文件系统的前后变化

    导出容器:

    docker exec # 在容器里执行一个命令,可以执行bash进入交互式

    执行:

    docker exec # 在容器里执行一个命令,可以执行bash进入交互式

    2.5 简单实践操作

    运行并进入容器操作:

    docker run -i -t docker.io/1832990/centos6.5  /bin/bash
    • -t 表示在新容器内指定一个伪终端或终端;
    • -i 表示允许我们对容器内的 (STDIN) 进行交互;
    • -d 表示将容器在后台运行;
    • /bin/bash 。这将在容器内启动 bash shell;

    所以当容器(container)启动之后,我们会获取到一个命令提示符:

    在容器内我们安装MySQL并设置开机自启动,将修改后的镜像提交:

    docker ps -l 查询容器ID
    docker commit -m "功能" -a "用户信息" ID tag 提交修改后的镜像

    docker inspect ID 查看详细信息
    docker push ID 上传docker镜像
    利用DockerFile创建镜像

    使用命令 docker build , 需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建镜像。

    mkdir DockerFile
    cd DockerFile
    cat > Dockerfile <<EOF
    FROM 603dd3515fcc
    MAINTAINER Docker xuel
    RUN yum install mysql mysql-server -y
    RUN mddir /etc/sysconfig/network
    RUN /etc/init.d/mysqld start
    EOF
    docker build -t "centos6.8:mysqld" 
    • -t 制定repository 与tag

    • . 指定Dockerfile的路径

    注意一个镜像不能超过 127 层
    此外,还可以利用 ADD 命令复制本地文件到镜像;
    用 EXPOSE 命令来向外部开放端口;
    用 CMD 命令来描述容器启动后运行的程序等。
    CMD [“/usr/sbin/apachectl”, “-D”, “FOREGROUND”]

    转载于:

    Docker 从入门到实战,收藏起来有备无患~ (qq.com)

    官方站点:

    《Linux就该这么学》 - 必读的Linux系统与红帽RHCE认证免费自学书籍 (linuxprobe.com)

    Linux命令大全:

    Linux命令大全(手册) – 真正好用的Linux命令在线查询网站 (linuxcool.com)

     
  • 相关阅读:
    数据访问之注册审核(重点是审核!!!)常用于企业、公司、医院等网站---2017-05-04
    5个简约的网站---2017-05-03
    数据访问(租房子多条件查询)---2017-05-03
    数据访问之 批量删除 ---2017-05-03
    数据访问之查询数据 ---2017--05-02
    php部分--数组(包含指针思想遍历数组);
    php部分---面向对象静态、抽象类、oop接口、加载类、魔术方法、关键字。
    PHP部分---字符串处理(文中例子不断更新);
    php部分--面向对象三大特性-封装(另加连续调用的一个例子)、继承(重写、重载的例子)、多态;
    php部分---面向对象:定义、实例化、构造函数、析构函数;
  • 原文地址:https://www.cnblogs.com/chch213/p/16343141.html
Copyright © 2020-2023  润新知