• Docker在虚拟机中的安装


    一、Docker简介

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

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

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

    Docker支持将软件编译成镜像;在镜像中支持各种软件配置好并发布,其他使用者可以直接使用配置好的镜像。运行中的镜像称之为容器,容器启动速度很快。类似于封装好的Windows系统,通过U盘直接安装即可,不需要进行系统配置软件

    Docker的应用场景:

    • Web应用的自动化打包发布;
    • 自动化测试和持续集成、发布;
    • 在服务型环境中部署调整数据库或其他的后台应用;
    • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

    Docker的优点:

    • 快速、一致性的交付应用程序
    • 响应式部署和扩展
    • 充分利用虚拟机资源

    二、Docker核心概念

    Docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统中)

    Docker客户端(Client):连接Docker主机进行操作;

    Docker容器(Container):镜像启动后的实例,独立运行的一个或一组应用;

    Docker镜像(Image):打包好的软件,用于创建Docker容器的模板;

    Docker仓库(Respository):用于保存打包好的软件镜像;

    关系示意图:

                 

       Docker的基本使用方式:

      ① 在机器中安装Docker;

      ② 在Docker仓库中寻找这个软件对应的镜像;

      ③ 使用Docker运行镜像,生成一个Docker容器;

      ④ 容器的启动或停止相当于对软件的启动和停止;

    三、Docker的搭建

    Docker版本要求

    更新yum

    安装docker ce即社区免费版,先安装必要的软件包,安装yum-utils,它提供一个yum-config-manager单元,同时安装的device-mapper-persistent-data和lvm2用于储存设备映射(devicemapper)必须的两个软件包。

    要求 CentOs7 系统的内核版本高于 3.10,可通过如下指令查看版本

    uname -r

    1.更新yum

    安装docker ce即社区免费版,先安装必要的软件包,安装yum-utils,它提供一个yum-config-manager单元,同时安装的device-mapper-persistent-data和lvm2用于储存设备映射(devicemapper)必须的两个软件包。

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

    紧接着配置一个稳定(stable)的仓库 ,仓库配置会保存到/etc/yum.repos.d/docker-ce.repo文件中。此处我们使用阿里云。

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

    更新Yum安装的相关Docke软件包

    sudo yum makecache fast

    出现如下错误:

    yum makecache: error: argument timer: invalid choice: ‘fast’ (choose from ‘timer’)

            

    更新索引的时候出错,即centos8没有该参数,解决办法为:去掉fast参数

    sudo yum makecache

          

    查看仓库版本,并指定版本安装

         查看版本

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

      

       安装yum install -y docker-ce docker-ce-cli  最新的版本

    yum install -y docker-ce docker-ce-cli
    
    卸载:
    yum list installed | grep docker
    yum remove 移除需要卸载的组件

     出现如下错误: Problem: package docker-ce-3:18.09.9-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed,根据提示,需要containerd.io的版本 >= 1.2.2-3

      

     也有可能出现此错误

       

      解决方式:

    yum erase podman buildah

     (1)安装wget指令

    yum install wget

    (2)获取rpm包

    wget http://docker-release-purple-prod.s3-website-us-east-1.amazonaws.com/linux/centos/8/x86_64/edge/Packages/containerd.io-1.3.7-3.1.el8.x86_64.rpm

    (3)升级containerd.io(安装rpm包)

    yum -y install containerd.io-1.2.6-3.3.el7.x86_64.rpm

    (4)重新安装docker-ce

    yum install docker-ce

    出现这个就表示已经安装完成了;   

     

    启动docker

     我们执行docker info看看结果

    docker info

      如果出现如下警告:

      Server:
      ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon runming?

      

    那是docker服务没有启动,解决办法:
    sudo systemctl start docker

      设置为开机自启动

    sudo systemctl enable docker

    可:

    sudo systemctl start docker && sudo systemctl enable docker

     验证查看版本:

    docker version

       

     或者:

    sudo docker ps

     说明安装,并且服务已经启动成功啦

      查看docker运行状态

    systemctl status docker

    四、Docker常用的命令

     安装Nginx

    docker pull nginx

      

     拉取镜像:

    docker pull busybox

      

      拉取镜像慢,配置加载镜像地址:

    {
        "registry - mirrors ": ["https: //ebkn7ykm.mirror.aliyuncs.com",
            "https: //docker.mirrors.ustc.edu.cn",
            "http: //f1361db2.m.daocloud.io",
            "https: //registry.docker-cn.com"
        ]
    }

     查看镜像列表:

    docker images

      

     前端界面新增一个容器,我们一般不用这个:

    docker run  +名字+nginx镜像列表对应的ID

    docker run --name nginx-container 605c77e624dd

    如果要使用后端新增的话,用以下命令:加上-d

    docker run -d --name nginx-container 605c77e624dd

    就可以看到我们已经把它新建出来了 

      

     用此命令可以查看它的log

    docker log e488175ea6b1

    如果我们想给它做个端口映射:+ “-P”【大写】

    docker run -d -P --name nginx-container-1 605c77e624dd

     上面端口是随机的,我们也可以指定端口:docker+run+-d(后端运行)+-p(小写) +对应端口+名称+nginx:latest(镜像列表的名字)

    docker run -d -p 12300:80 --name nginx-container-2 nginx:latest 

       

      同样看一下效果:

      

    作者:wangwangwangMax
    出处http://www.cnblogs.com/wangwangwangMax/

  • 相关阅读:
    小数据池与编码新知
    你确定自己用过字典?
    Django基础三之视图函数
    Django基础二之URL路由系统
    Django基础一之web框架的本质
    CSS
    前端HTML
    MySQL创建用户和授权
    MySQL之索引原理
    Mysql之视图,触发器,事物,存储过程,函数
  • 原文地址:https://www.cnblogs.com/wangwangwangMax/p/15754211.html
Copyright © 2020-2023  润新知