zoukankan      html  css  js  c++  java
  • window10下安装Docker

    linux下

    1:docker介绍

    2013年发布至今,Docker一直广受瞩目,被认为可能会改变软件行业。

    但是,许多人并不清楚Docker到底是什么,要解决什么问题,好处又在哪里?

    img

    一,环境配置的难题

    软件开发最大的麻烦事之一,就是环境配置。用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来?

    用户必须保证两件事:操作系统的设置,各种库和组件的安装。只有它们都正确,软件才能运行。解释来说,安装一个Python应用程序,计算机必须有Python引擎,还必须有各种依赖,可能还要配置环境变量。

    开发者常常会说:“它在我的机器可以跑了”(在我的机器上工作),言下之意就是,其他机器很可能跑不了。

    很多人想到,能不能从根本上解决问题,软件可以带环境安装?而不是安装的时候,把原始环境一模一样地复制过来。

    二,虚拟机

    虚拟机(virtual machine)就是带环境安装的一种解决方案。它可以在一种操作系统里面运行另一种操作系统,例如在Windows系统内部运行Linux系统。应用程序无需感知,因为虚拟机看上去跟真实系统一模一样,而对于过多系统而言,虚拟机就是一个普通文件,不需要了就删掉了,对其他部分毫无影响。

    虽然用户可以通过虚拟机还原软件的原始环境。但是,这个方案有几个缺点。

    (1)资源占用多

    它运行的时候,其他程序就不能使用这些资源了。哪怕虚拟机里面的应用程序,真正使用的内存只有1MB,虚拟机仍然需要几百MB的内存才能运行。

    (2)冗余步骤多

    虚拟机是完整的操作系统,一些系统等级的操作步骤,经常无法跳过,某些用户登录。

    (3)启动慢

    启动操作系统需要多久,启动虚拟机就需要多久。可能要等几分钟,应用程序才能真正运行。

    三,Linux容器

    由于虚拟机存在这些缺陷,Linux发展出了另一种虚拟化技术:Linux容器(Linux Containers,简称为LXC)。

    Linux容器不是模拟一个完整的操作系统,还是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与脆弱系统的隔离。

    由于容器是进展等级的,大约虚拟机有很多优势。

    (1)启动快

    因此,启动容器相当于启动本机的一个进程,而不是启动一个操作系统,速度就快很多。

    (2)资源占用少

    容器只占用需要的资源,不占用那些没有用到的资源;虚拟机由于是完整的操作系统,因此要占用所有资源。另外,多个容器可以共享资源,虚拟机都是独享资源。

    (3)体积小

    容器只要包含用到到的组件即可,而虚拟机是整个操作系统的打包,那么容器文件比虚拟机文件要小很多。

    总之,容器有点像轻量级的虚拟机,能够提供虚拟化的环境,但是成本增加小幅度。

    四,Docker是什么?

    Docker属于Linux容器的一种封装,提供简单易用的容器使用接口。它是当前最流行的Linux容器解决方案。

    Docker将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了Docker,就不用担心环境问题。

    总体而言,Docker的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理,复制,共享,修改,就像管理普通的代码一样。

    五,Docker的用途

    Docker的主要用途,目前有三大类。

    (1)提供一次性的环境。例如,本地测试他人的软件,持续集成的时候提供单元测试和内置的环境。

    (2)提供弹性的云服务。因为Docker容器可以随开随关,很适合动态扩容和缩容。

    (3)组建微服务架构。通过多个容器,一台机器可以运行多个服务,因此在本机就可以模拟出微服务架构。

    Docker部署与VM部署区别:

    imgimg

    2:安装docker官方安装文档地址:https : //docs.docker.com/engine/install/ubuntu/

    Linux ubuntu18.04:

    1:卸载旧版本(如果安装过):

    $ sudo apt-get删除docker docker-engine docker.io容器化runc

    2:删除/ var / lib / docker /目录(如果存在)
    3.1:通过OS的软件仓库安装

    1:sudo apt-get update#更新下软件源信息

    2:sudo apt-get install #安装必要的软件,让apt可以通过https安装docker

    apt-transport-https

    ca证书

    卷曲

    gnupg-agent

    常用软件属性

    3: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add-#添加Docker官方的密钥

    4: sudo add-apt-repository #添加apt仓库地址,安装当前操作系统版本可用的docker相关软件

    “ deb [arch = amd64] https://download.docker.com/linux/ubuntu

    $(lsb_release -cs)

    稳定”

    5:

    sudo apt-get update#更新源

    sudo apt-get install docker-ce docker-ce-cli containerd.io#安装docker软件

    额外信息:

    安装指定版本docker相关软件:

    1:查看一些码头工人版本可用

    img

    2:安装指定版本

    img

    <VERSION_STRING>指的是执行查看可用版本命令时,第二列里的值

    img

    3.2:离线安装方式

    1:通过以下连接下载当前操作系统可用的docker版本

    https://download.docker.com/linux/ubuntu/dists/

    img

    img

    img

    img

    img

    2:安装.deb包

    路径表示下载地址,xxxx代表我们下载的串联

    须藤dpkg -i /path/xxxxx.deb

    4:安装后相关配置

    sudo groupadd docker#只要不报错就可以,可能会提示用户组已经存在,不用理会

    sudo usermod -aG泊坞窗$ USER

    4:验证是否安装成功

    docker run hello-world#输出hello world表示成功

    3:Docker架构:

    Docker架构图

    名字解释:

    Docker守护进程:Docker守护进程

    Docker守护进程(dockerd)侦听Docker API请求并管理Docker对象,如图像,容器,网络和卷。守护进程还可以与其他守护进程通信来管理Docker服务。

    Docker客户端:Docker客户端:

    Docker客户端(Docker)是Docker用户与Docker daemon交互的主要方式。

    当您使用docker run之类的命令时,将这些命令发送给dockerd,dockerd执行这些命令。

    docker命令使用dockerAPI。Docker客户端可以与多个守护进程通信

    Docker注册表:Docker XML

    存储Docker映像的地方,Docker中心是一个公共的注册地,任何人都可以通过docker pull

    Docker对象:

    图片:总计:

    一些列文件的封装,包括我们自己的写的程序和依赖程序,也是一个模板文件,可以基于这个并运行多个程序实例(容器)

    完全可以继承,至少基于一个ubuntu扩展,我们可以在里面安装Nginx,python等软件形成新的替代

    容器:容器:

    基于总体运行时生成的实例,也就是程序运行时

    3:常用命令介绍:

    泊坞窗运行

    docker启动/停止/重启

    码头工人

    码头工人rmi

    码头工人

    码头工人ps

    码头工人图像

    码头工人提交

    码头工人搜索

    4:基于docker安装mysql

    码头工人运行-d --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD = 123456 mysql

    5:安装redis

    docker运行-itd --name redis-test -p 6379:6379 redis

    6:Dockerfile文件

    7:制作自己的Docker实质上

  • 相关阅读:
    Linux_文件权限
    离殇
    Oracle数据库软件标准版的一个限制:仅仅能用一个rman channel
    数据结构和算法设计专题之---推断两个链表是否相交并找出交点
    Test for Job (poj 3249 记忆化搜索)
    表达式求值
    HDOJ 2196 Computer 树的直径
    ListView的position的保持
    Django訪问量和页面PV数统计
    【oracle 11G Grid 】Crsctl start cluster 和 crsctl start crs 有差别么?
  • 原文地址:https://www.cnblogs.com/songkaixuan/p/13689097.html
Copyright © 2011-2022 走看看