zoukankan      html  css  js  c++  java
  • Docker基本使用

    历史

    • 2010 年几个人基于PAAS平台创建的dotCloud。随着云的应用,大公司比如谷歌、微软都涉足。所以dotCloud生死攸关。既无盈利又可惜自己的汗水付诸东流,所以他们选择了开源。开源后就开始了逆袭之路。
    • 2014年6月,第一个版本Docker1.0诞生。
    • 目前社区版1.29。

    概念

    • 最开始docker官网(https://www.docker.com/), 最醒目的三个单词即是:build、ship、run
    • docker含义: docker衍生于虚拟机,所以,不管是虚拟机还是容器,其实都是对计算机资源隔离的不同实现罢了。包括对文件系统隔离、对网络隔离。docker基于Ubuntu开发,本身技术不是什么新东西,但它制定的隔离使用标准,成功将服务与系统,服务与硬件进行隔离。
    • docker架构:docker client + docker daemon  + docker repository, 客户端做构建镜像,拉取镜像的指令发出, 宿主机的进程运行容器,仓库和maven仓库的概念类似,主要存放已经构建OK的镜像。
    • 镜像:镜像这个词也不是新鲜东西,我们最早接触这个词应该是安装操作系统的时候,系统盘里的.iso文件就是一个系统镜像。镜像其实就是打包好的一个可以运行的程序,和我们windows里面的zip文件类似。要用哪个镜像,直接就从docker的官方仓库(https://hub.docker.com/)去拉取即可。
    • 仓库:存放镜像。国内也有很多仓库,阿里的、网易的。
    • 容器:运行的镜像即是一个容器。这里联想上面的三个词:build即是构建镜像。ship即是运输镜像。run即是运行镜像成容器。
    • 宿主机:即运行docker的主机。
    • 隔离:类似虚拟机,docker里面有自己的文件系统,也有隔离的网络,所以宿主机的网络端口0~65535 和docker里面的0~65535是可以独立存在的。

    原理

      docker本质是运行的进程,和宿主机共享linux内核。那如何做到真正的隔离呢?其实是通过linux的namespace技术,对网络、磁盘、内存的做到细粒度隔离。实际上docker是一个运行在宿主机的进程,和宿主机本身的进程处于平级关系,也都是相互竞争cpu、内存等资源。譬如宿主机PID为333的进程为docker实例,而docker通过namespace技术把docker实例和宿主机分隔开。 但docker又是通过什么做到每个docker实例之间的资源竞争不受影响呢?这就是google公司开源出来的cgroup技术。cgroup作用一句话即是:限制进程对系统资源的使用,不管是空间还是时间上的。

    基本使用

      配置源

      用阿里云的吧,快。在/etc/yum.repos.d/目录下,创建docker.repo的文件:

    [docker-ce-stable]
    name=Docker CE Stable - $basearch
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
    enabled=1
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-stable-debuginfo]
    name=Docker CE Stable - Debuginfo $basearch
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/stable
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-stable-source]
    name=Docker CE Stable - Sources
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/stable
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-edge]
    name=Docker CE Edge - $basearch
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/edge
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-edge-debuginfo]
    name=Docker CE Edge - Debuginfo $basearch
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/edge
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-edge-source]
    name=Docker CE Edge - Sources
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/edge
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-test]
    name=Docker CE Test - $basearch
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/test
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-test-debuginfo]
    name=Docker CE Test - Debuginfo $basearch
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/test
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-test-source]
    name=Docker CE Test - Sources
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/test
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-nightly]
    name=Docker CE Nightly - $basearch
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/nightly
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-nightly-debuginfo]
    name=Docker CE Nightly - Debuginfo $basearch
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/nightly
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    
    [docker-ce-nightly-source]
    name=Docker CE Nightly - Sources
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/nightly
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

      更新一下源: 

    yum -y update

    安装

      docker的linux安装非常简单,一条命令即可。但内核要求3.10以上。

      查看可用包列表:

    yum list docker-ce --showduplicates | sort -r

      安装:

    sudo yum install docker-ce-18.03.1.ce-1.el7.centos
    • 加入开机启动

        systemctl start docker

        systemctl enable docker

    • 查看镜像

        docker images [options] [REPOSITORY[:TAG]]

    • 拉取镜像

        docker pull [options] NAME[:TAG]

    • 运行镜像

        docker run [options] IMAGE[:TAG] [COMMAND] [ARG..]

      命令这玩意儿死记硬背没用,多用就知道了。一定记住多用--help, 例  docker run --help。

    网络模式

    • 桥接,默认

    • host模式,和宿主机公用。
    • none模式。
    • container模式。
    • 自定义模式。

    springboot部署到docker

    1. 在本地的虚拟机创建一个构建的目录,并把jar包传上来。

        

      2. Dockerfile文件编辑

        

       Dockerfile的元素解释,盗图一张,请阅;

        

      3.  构建build

        命令: docker build -t liaoday-gis . 

        用docker images 查看:

        

      4. 运行

        命令: docker run -d -p 8888:8888 d0ebf323acfb

        用docker run --help ,这里描述:

        -d, --detach                         Run container in background and print container ID,即-d后台运行。

        -p, --publish list                   Publish a container's port(s) to the host ,即后面容器的端口,映射前面宿主机的端口。

        -P, --publish-all                    Publish all exposed ports to random ports, 即大P暴露容器的随机端口给宿主机。

        用docker ps 查看运行的容器:

        

       5. 成功访问

      

    命令 

    ##守护进程重启
    sudo systemctl daemon-reload
    ##重启docker服务
    sudo systemctl restart docker
    ## 关闭docker
    sudo systemctl stop docker
    ## 重启docker服务
    sudo service docker restart
    ## 关闭docker
    sudo service docker stop

     参考

      https://www.cnblogs.com/kaye/p/10508800.html

    目录

      https://www.cnblogs.com/lioa/p/12664686.html

  • 相关阅读:
    DML-DDL-DCL
    FastDFS常见场景模拟
    如何定义软件版本
    鸟哥的linux私房菜学习-(七)改变文件属性与权限
    鸟哥的linux私房菜学习-(六)Linux 文件权限介绍
    二、基本语法
    一、JavaSE语言概述
    鸟哥的linux私房菜学习-(五)补充:重点回顾
    鸟哥的linux私房菜学习-(五)Linux系统的在线求助man page与info page
    鸟哥的linux私房菜学习-(四)linux命令的基本概念
  • 原文地址:https://www.cnblogs.com/lioa/p/12610810.html
Copyright © 2011-2022 走看看