zoukankan      html  css  js  c++  java
  • Docker 初识

    一、Docker 简介

    Docker是一个开源的应用容器,用户可以将web程序和服务打包到一个轻量级、可以移植的容器中,然后发布到任务流行的Linux服务器上,实现虚拟化。同时完全是沙箱操作,即Docker内部是一个沙箱操作,项目之间不会有任何接口,并且开销极低。

    二、Docker(centos)安装

    1. 移除旧的Docker服务
    sudo yum remove docker 
                      docker-client 
                      docker-client-latest 
                      docker-common 
                      docker-latest 
                      docker-latest-logrotate 
                      docker-logrotate 
                      docker-selinux 
                      docker-engine-selinux 
                      docker-engine
    
    2. 安装必要的参数
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
    3. 设置软件源的来源信息
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    4. 更新yum缓存
    sudo yum makecache fast
    
    5. 安装 Docker-ce
    sudo yum -y install docker-ce
    
    6. 启动
    sudo systemctl start docker
    
    7. 设置开机启动
    chkconfig docker on
    
    8. 测试运行 hello-world
    docker run hello-world
    
    9. 镜像加速,在 /etc/docker/daemon.json中添加下面的内容,没有改文件,则创建该文件。
    {
      "registry-mirrors": ["http://hub-mirror.c.163.com"]
    }
    # 国内加速镜像
    # 网易加速器:http://hub-mirror.c.163.com
    # 官方中国加速器:https://registry.docker-cn.com
    
    10. 删除Docker CE
    sudo yum remove docker-ce
    sudo rm -rf /var/lib/docker
    

    三、Docker 基础

    Docker重要的基础概念:仓库,镜像,容器

    1. 仓库:注册服务器是存放仓库的地方,其上往往存放着多个仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。例如存放Ubuntu操作系统镜像的仓库,称为Ubuntu仓库,其中可能包括14.04、12.04等不同版本的镜像,很多人会把仓库与registry混为一谈,其实registry是存放repository的地方,仓库分为公有仓库与私有仓库;
    2. 镜像:Docker镜像(Image)类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统。例如:一个镜像可以只包含一个完整的Ubuntu操作系统环境,可以把它称为一个Ubuntu镜像。
    3. 容器:似于一个轻量的沙箱,docker利用容器来运行和隔离应用;容器是从镜像创建的应用运行的实例;容器从镜像启动的时候,docker会在镜像的最上层创建一个可写层,镜像本身保持不变;容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的。可以从一个镜像创建无数个容器。平时我们主要操作的就是容器。我们也可以把容器打包成镜像以方便再次使用。镜像自身是只读的。容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身将保持不变。
      以前部署一个程序nginx,会进入到linux服务器上,下载nginx程序,然后运行。如果现在有一个镜像,该镜像就像是虚拟机一样的一个镜像文件,该文件运行起来,和那个nginx部署在linux服务器环境一样,nginx程序也在其中,然后运行该镜像中的已经存在的nginx程序,这个时候可以叫他容器,运行该容器后nginx就启动起来了。
      hub中央仓库是一个公共的库,可以创建账号之后,将自己的内容推送到上面,https://hub.docker.com/注册自己账号

    四、Docker命令

    1. 基础命令

    docker ps -- 查看当前运行在容器中的程序
    docker pull image_names -- 拦截镜像文件 image_name镜像文件的名称
    docker images -- 查看当前容器中的镜像文件
    docker rmi imageName --删除镜像文件

    2. 案例:
    1. 运行程序
      docker pull training/webapp --拉取镜像
      docker run -d -P training/webapp python app.py --运行程序
      -d 让容器在后台中运行
      -P 将程序端口映射到主机上
    2. 添加自己的hub上账号
    sudo docker login
    Username: ***
    Password:
    Email: ***
    
    1. 使用Dockerfile来构建自己的镜像
    1. mkdir workdir
    2. cd workdir
    3. touch Dockerfile  添加如下内容:
    # Version: 0.0.1
    FROM ubuntu:14.04
    MAINTAINER Wangzhe0912 "Wangzhe0912@tju.edu.cn"
    RUN apt-get update
    RUN apt-get install -y nginx
    RUN echo "Hi, I am your contrainer" > /usr/share/nginx/html/index.html
    EXPOSE 80
    

    代码含义:
    1.每个Dockerfile的第一行指令都应该是FROM开头。FROM用于制定一个已经存在的镜像,后续指令都是基于该镜像来运行。这个镜像我们称之为基础镜像。
    2.MAINTAINER后说明该作者和作者邮箱信息。
    3.接下来是三条RUN指令。默认情况下,指令后的内容会通过/bin/sh -c来执行。
    4.最后设置了EXPOSE,该指令用于指定容器内的应用程序会使用哪些端口(可以指定多个)。PS:出于安全考虑,默认Docker不会自动打开这些端口,
    5.需要在docker run指令中指定需要打开的端口
    4.构建镜像

    docker build -t="wangzhe0912/nginx:v1"` .  (后面有一个点,表示执行当前目录下的Dockerfile文件,-t="wangzhe0912/nginx:v1"指定了新生成镜像的镜像名称,也可以从git仓库中寻找docker build -t="wangzhe0912/nginx:v1"` git@github.com:wangzhe0912/docker_web)
    

    Dockerfile构建的好处是如果某一步执行失败了,以前面的镜像存储于缓存中,如果再次构建时会利用该缓存,如果不想,则执行

    sudo docker build --no-cache -t="wangzhe0912/nginx:v1" .
    

    如果想利用缓存,则需要在第一个RUN之前指定: ENV REFRESHED_AT 2018-01-28该命令行。如果该缓存变化了,则重新构建,如果没有变化,则会利用该缓存中的镜像。
    如下:

    # Version: 0.0.1
    FROM ubuntu:14.04
    ENV REFRESHED_AT 2018-01-28
    MAINTAINER Wangzhe0912 "Wangzhe0912@tju.edu.cn"
    RUN apt-get update
    

    5.将镜像推送到hub仓库中 sudo docker push wangzhe0912/nginx

    五、优势和使用场景

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

    • Docker容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式要快得多。
    • Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器。
    • Docker通过类似Git的操作来方便用户获取、分发和更新应用镜像,指令简明,学习成本较低。
    • Docker通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率。
  • 相关阅读:
    phpstorm操作集锦
    图片、音频获取二进制流或url的blob值
    sublime text 3 快捷键
    dd与sql 打印工具
    php生成二维码(可带logo)
    jQuery append加入的元素 绑定事件无效
    Linux运维架构师学习之路
    硬盘安装win7
    Composer安装与使用
    Js循环做法
  • 原文地址:https://www.cnblogs.com/skyice/p/10159436.html
Copyright © 2011-2022 走看看