zoukankan      html  css  js  c++  java
  • linux:docker入门

    了解

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

    Docker的应用场景

    Web 应用的自动化打包和发布。

    自动化测试和持续集成、发布。

    在服务型环境中部署和调整数据库或其他的后台应用。

    从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境

    说明:

    PaaS:

    把服务器平台作为一种服务提供的商业模式,通过网络进行程序提供的服务

    基本概念

    镜像(Image):Docker 镜像(Image),就相当于是一个 完整的镜像(包含程序、环境、编译器等)

    容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,某一个镜像的实例就是容器,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

    仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。仓库和仓库注册服务器是不同的:仓库注册服务器上存放着多个仓库,每个仓库中包含多个镜像。仓库又可以分为公开仓库和私有仓库,例如:Docker Hub、阿里云、网易云等

    Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

    Docker 容器通过 Docker 镜像来创建。

    容器与镜像的关系类似于面向对象编程中的对象与类

    Person p1=new Person();
    Person p2=new Person();
    Person p3=new Person();
    -----------------------------
    p1,p2,p3 就是三个容器(实例)
    Person  就是镜像(类)
    -----------------------------

    用Dcoker的LOGO来形象介绍容器、宿主机、镜像的关系:

    大海  --- 就是宿主机(环境、系统)

    鲸鱼  ---就是docker(软件)

    小箱子   ---就是容器实例,这些实例来自镜像的实例化

    安装

    注释:Docker只支持Centos6.8以上的系统版本

    Docker 分为社区版(CE)企业版(EE)

    社区版免费、企业版收费

    Centos6.8以上

    Centos7安装

    yum install docker-ce
    

    Centos8安装

    参考:链接

    1. 安装检查

      Docker要求安装环境为 64位系统,且内核在3.8以上。可用uname -r 查看。

    2. 安装依赖 

    yum install -y yum-utils  device-mapper-persistent-data  lvm2

    3. 设置yum源,我使用的是阿里云镜像(官方地址直接连接失败了,估计是服务器网络问题)

    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  

    4. 安装

    yum install docker-ce

    5. 故障处理 

      第4步安装时,报错: Problem: package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3,

    根据提示,需要使用版本大于1.2.2-3的 containerd.io,直接使用wget从官方下载不了,直接在  下载 ,containerd.io-1.2.6-3.3.el7.x86_64.rpm,然后上传至服务器。

    安装containerd.io:dnf install containerd.io-1.2.6-3.3.el7.x86_64.rpm

    6. 继续安装

    yum install docker-ce

    一路输入y,安装完成。

    7. 安装完成

    docker -v

    查看安装版本(Docker version 19.03.8, build afacb8b)

    8、启动docker

    docker启动       

    systemctl start docker
    service docker start

    重启docker服务

    systemctl restart  docker
    sudo service docker restart

    关闭docke

    systemctl stop docker
    service docker stop

    查看是否启动成功

    docker ps -a

    运行Hello World

    1、Hello World 程序在远程仓库(Docker Hub)上

    2、Docker host(主机)上从远程仓库拉取,获得镜像

    3、然后创建容器,开始运行

    阿里云镜像加速

    Docker Hub 服务器在国外,从上面拉取超级慢,换到国内的镜像厂商比较快,这里以阿里云为例:

    1、在  容器镜像服务控制台 中获取加速地址

    2、将加速器地址配置到 Docker 主机上

    vim /etc/docker/daemon.json  //若没有改文件,则手动创建
    
    {
      "registry-mirrors": ["https://geqvsh14.mirror.aliyuncs.com"]
    }
    
    systemctl daemon-reload  //加载文件
    systemctl restart docker  //重启服务 

    运行

    docker run hello-world
    

    注释:本地没有hello-world镜像,所以会从仓库下载(拉取)镜像,并在容器中运行

    底层原理

    Docker是怎么工作的?

    Docker是一个CS结构的系统,Go语言编写,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接收命令并管理运行在主机上的容器

    容器就是运行的环境,就是一个一个箱子

    为什么Docker比VM运行快?

    1、Docker比虚拟机有更少的抽象层,Docker不需要硬件资源,直接使用实际主机上的硬件资源,不需要 Hypevisor 实现硬件资源虚拟化

    2、Docker使用的是宿主机的内核,当新建一个容器时,不需要和虚拟机一样重新加载一个操作系统内核。因此新建一个容器,只需几秒

    常用命令

    docker version

    显示版本信息

    docker info

    显示版本号、存储驱动、可用内存、宿主机的名字等

    Client:
     Context:    default
     Debug Mode: false
     Plugins:
      app: Docker App (Docker Inc., v0.9.1-beta3)
      buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
      scan: Docker Scan (Docker Inc.)
    
    Server:
     Containers: 2
      Running: 1
      Paused: 0
      Stopped: 1
     Images: 3
     Server Version: 20.10.6
     Storage Driver: overlay2
      Backing Filesystem: extfs
      Supports d_type: true
      Native Overlay Diff: true
      userxattr: false
     Logging Driver: json-file
     Cgroup Driver: cgroupfs
     Cgroup Version: 1
     Plugins:
      Volume: local
      Network: bridge host ipvlan macvlan null overlay
      Log: awslogs fluentd gcplogs gelf journald json-file local logentries spl
     Swarm: inactive
     Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
     Default Runtime: runc
     Init Binary: docker-init
     containerd version: 269548fa27e0089a8b8278fc4fc781d7f65a939b
     runc version: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
     init version: de40ad0
     Security Options:
      seccomp
       Profile: default
     Kernel Version: 3.10.0-957.21.3.el7.x86_64
     Operating System: CentOS Linux 7 (Core)
     OSType: linux
     Architecture: x86_64
     CPUs: 1
     Total Memory: 1.795GiB
     Name: iZuf6ece4mm10ixp4atj39Z
     ID: D42R:EIYV:I4YK:JO4I:TPBL:AT5R:2KM5:42GK:4R2E:CCE5:WNID:PIQE
     Docker Root Dir: /var/lib/docker
     Debug Mode: false
     Registry: https://index.docker.io/v1/
     Labels:
     Experimental: false
     Insecure Registries:
      127.0.0.0/8
     Registry Mirrors:
      https://geqvsh14.mirror.aliyuncs.com/
     Live Restore Enabled: false
    

    docker --help

    帮助文档

    --镜像命令--

    docker images

    列出本地主机的镜像

    各个字段说明:

       

    PS:TAG:表示标签,可以有多个,表示这个仓库源的不同版本

    选项说明:

    docker images -a
    

    列出本地主机上所有的镜像

    docker images -qa
    

    只显示镜像ID

    docker images --digests
    

    显示镜像的摘要信息

    docker images --digests --no-trunc

    显示完整的镜像信息  

    docker search tomcat
    

    在docker Hub上查询镜像

    选项说明:

    docker search tomcat --no-trunc
    

    显示完整的镜像描述

    docker search tomcat --limit 5
    

    限制显示个数

    docker pull tomcat

    从远程Hub中拉取镜像源,默认最新版本

    docker rmi  -f hello-world

    强制(-f)删除镜像

    选项介绍:

    docker rmi  -f 镜像ID
    

    删除单个镜像

    docker rmi  -f 镜像名1 镜像名2
    

    删除多个镜像

    docker rmi  -f $(docker images -qa)
    

    删除全部镜像

    --容器命令--

    1、首先在docker中拉取一个Centos镜像,下面的实验在该容器中进行:

    docker pull centos
    

    2、启动该系统(容器)

    docker run -it 300e315adb2f

    选项:

    docker ps

    显示所有正在使用的容器

    选项介绍:

    退出容器

    1、exit :容器停止并退出

    2、Ctrl+P+Q :容器随处不停止

    启动容器

    docker start 容器ID/容器名

    重启容器

    docker restart 容器ID/容器名 

    停止容器

    docker stop 容器ID/容器名

    强制停止容器

    docker kill 容器ID/容器名

    删除已停止的容器

    docker rm -f $(docker ps -aq)
    
    docker ps -qa | xargs dockers rm
    

      

    参考

    1、官方文档

    2、Centos 官方文档

    3、Docker从入门到精通

    作者: Pam

    出处: https://www.cnblogs.com/pam-sh/>

    关于作者:网安在读

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(mir_soh@163.com)咨询.

  • 相关阅读:
    vs13的内存占用 关闭之
    Java基础 -5
    Java基础 -4.6
    Java基础 -4.5
    Java基础 -4.4
    Java基础 -4.3
    Java基础 -4.2
    Java基础 -4
    Java基础 -3.5
    Java基础 -3.4
  • 原文地址:https://www.cnblogs.com/pam-sh/p/13192295.html
Copyright © 2011-2022 走看看