Docker容器基本部署安装与基本命令_ㅤChen的博客-程序员宝宝_加载yum源的指令

技术标签: Docker  

前言:

  • Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口

Docker基本概念

Docker概述

  • Docker是一个用于开发,交付和运行应用程序的开放平台,Docker可以将应用程序和基础架构分开,从而快速的交付软件,借助Docker,可以以与管理应用程序相同的方式来管理基础架构,通过利用Docker的快速交付、测试和部署代码的方法,可以大大减少编写代码和在生产环境中运行代码之间的延迟

Docker 平台

  • Docker以容器的方式实现了应用程序的隔离,隔离和安全性可以给主机上同时运行多个容器。容器时轻量级的,因为不需要要管理撑的额外负担,而时直接在主机的内核中运行。

  • 与vm虚拟机相比,可以在给定的硬件组合上运行更多的容器。甚至可以在虚拟机的主机中运行docker,以下为Docker与VM之间部分区别

container VM
启动速度 秒级 分钟级
运行性能 接近原生 5%左右损失
磁盘占用 MB GB
数量 成百上千 一般几十台
隔离性 进程级别 系统级
操作系统 主要支持linux 几乎支持所有系统
封装程度 之打包项目代码和依赖关系,共享宿主内核 完整得操作系统

docker提供了工具和平台来管理容器的生命周期:

① 使用容器开发应用程序及其支持组件
② 容器称为分发和测试应用程序的单元
③ 准备就绪后,可以将应用程序作为容器或协调服务器部署到生产环境中,无论生产环境是本地数据数据中心,云提供商还是两者的混合,其工作原理都相同

Docker引擎

Docker Engine是具有以下主要组件的客户端—服务器应用程序
① 服务器是一种长期运行的程序,称为守护进程(dockerd 命令)
② REST API,它指定程序可以用来与守护程序进行通信并指示其操作的接口
③ 命令行界面(CLI)客户端(docker命令)

  • CLI使用Docker REST API通过脚本或直接CLI命令控制,或者与Docker守护程序交互。许多其他Docker应用程序都使用基础API和CLI
  • 守护程序创建和管理Docker对象,例如 图像、容器、网络和卷

Docker应用

快速交付应用程序

  • Docker通过允许开发人员使用提供应用程序和服务的本地容器在标准化环境中工作,从而简化了开发声明周期。容器非常适合持续集成和持续交付(CI/CD) 工作流程

响应式部署和扩展

  • Docker基于容器的平台允许高读可移植的工作负载。Docker容器可以在开发人员的笔记本电脑、数据中心的物理或虚拟机、云提供商或混合环境中运行
  • Docker的可移植性和轻量级的特性还可以让运维人员轻松的动态管理工作负载,并根据业务需求指示实时扩展或关闭应用程序和服务

更多工作负载

  • Docker轻巧快速,它为基于虚拟机管理程序的虚拟机提供了可行且经济高效的替代方案,因此可以利用更多的计算能力来实现业务目标,Docker非常适合高密度环境和中小型部署。

Docker 架构

  • Docker 使用客户端—服务器架构,Docker客户端与Docker守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。Docker客户端和守护程序可以在统一系统上运行,或者可以将Docker客户端连接到远程Docker守护程序。Docker客户都安和守护程序在UNIX套接字或网络接口上使用REST API进行通信

Docker 主要组成

Docker Client :客户端
Docker Daemon :守护进程
Docker Images:镜像
Docker Container:容器
Docker Registry:镜像仓管

Docker守护进程

  • Docker守护程序倾听Docker API请求并管理Docker对象,例如图片、容器、网络和卷,守护程序还可与其他守护程序通信以管理Docker服务

Docker 客户端

  • Docker 客户端是许多Docker用户与Docker交互的主要方式。当使用诸如 docker run此类命令的适合,客户端会将这些命令发送到dockerd(守护进程命令) 以执行这些命令,该docker命令使用Docker API。Docker 客户客户端可以与多个守护进程通信

Docker 注册表

  • Docker 注册表存储Docker镜像。Docker Hub是所有人都可以使用的公共注册表,并且Docker配置为默认在Docker Hub上查找镜像。甚至可以建立自己的私人注册表。如果使用Docker数据中心(DDC),则其中包括Docker可信注册表(DTR)

底层技术

  • Docker使用GO语言编写,并利用Linux内核的多个功能来交付其功能

命名空间

  • Docker使用 namespace 提供容器的隔离工作区的技术。运行容器时,Docker会为该容器创建以组名称空间

  • 这些名称空间提供了一层隔离。容器的每个方面都在单独的名称空间内运行,并且其访问仅限于该名称空间

Docker Engine在Linux上使用以下名称空间:

pid 名称空间:进程隔离(PID:进程ID)
net 名称空间:管理网络接口(NET:网络)
ipc 名称空间:管理访问IPC资源(IPC:进程间通信)
mnt 名称空间:管理文件系统挂载点(MNT)
uts 名称空间:隔离内核和版本标识符 (UTS:Unix时间共享系统)

对照组

  • Linux上的Docker引擎还依赖于另一种控制组(cgroups)的技术。cgroup将应用程序限制为一组特定的资源。控制组允许 Docker Engine 将可用的硬件资源共享给容器,并由选择的实施限制和约束,例如:限制特定容器可用的内存

联合文件系统

  • 联合文件系统或UnionFS是通过创建图层进行操作的文件系统,使其非常轻便且快速。Docker Engine使用UnionFS为容器提供构建模块。Docker Engine可以使用多个UnionFS变体,包括AUFS,btrfs,vfs和DeviceMapper。

容器格式

  • Docker Engine 将名称空间,控制组和UnionFS组合到一个称为容器格式的包装器中,默认容器格式为libcontainer。

Docker 基础安装部署

先关掉防火墙、核心防护

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i  "7s/enforcing/disabled/" /etc/selinux/config

安装Docker引擎依赖包

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

设置阿里云镜像源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#在阿里云的yum源点中下载repo配置文件
#生成的为置在本机的/etc/yum.d/目录下
#只有在下载完docker-ce.repo配置文件后,才可以正常安装Docker-CE(社区版Docker引擎)

安装Docker-CE引擎

yum install -y docker-ce

开启Docker,并设置为开启自启

systemctl start docker.service 
systemctl enable docker.service 

常用命令

查询Docker版本

docker version

在这里插入图片描述

镜像加速、网络优化

  • 这里我使用的镜像加速地址是在阿里云官方申请的:https://82q0z7ak.mirror.aliyuncs.com,此处不再赘述

  • 需注意:镜像加速加载完成后需要重启进程和docker

     systemctl daemon-reload 
     systemctl restart docker
    

网络优化

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf 
sysctl -p
      net.ipv4.ip_forward = 1
service network restart
      estarting network (via systemctl):                        [  确定  ]
systemctl restart docker

镜像基本操作命令

  • 镜像搜索

  • 格式:dcoker search 关键字

  • 示例:

    docker search nginx
    

在这里插入图片描述

下载nginx镜像

  • 格式 :docker pull 关键字

  • 示例:

    docker pull nginx
    

查看镜像

  • 格式:docker images

  • 实例:

    docker images
    

在这里插入图片描述
查看镜像信息

  • 借助IMAGE ID标签 详细查看镜像信息

  • 格式:docker inspect 镜像ID

  • 实例:

    docker inspect 35
    

在这里插入图片描述
添加镜像标签

  • 格式:docker tag 镜像标签 新标签

  • 实例:

       docker tag nginx:latest nginx:chen
       docker images
    

在这里插入图片描述

删除镜像

  • 格式:docker rmi 镜像标签

  • 示例:

    docker rmi nginx:chen

在这里插入图片描述
镜像输出

  • 格式:docker save -o 导出的文件名 镜像标签

  • 示例:

    docker save -o nginx nginx:latest
    ls
    

在这里插入图片描述
镜像导入

  • 格式:docker load < 镜像文件

  • 实例:

      先删除镜像   docker rmi 35
      再把上一步导出的 导入
      docker load < nginx
    

在这里插入图片描述
容器操作基本命令

  • 容器列表查询

  • 格式:docker ps -a (-a 列出最近一次启动的容器)

  • 示例:

    docker ps -a
    

在这里插入图片描述
创建容器

  • 格式:docker create -it 选项 /bin/bash

  • -i 让容器的标准输入保持打开

  • -t 让Docker分配一个伪终端

  • 示例:

    docker create -it nginx:latest /bin/bash
    #/bin/bash 指定终端
    #statys :created 创建状态,暂时还未开启
    #container id  容器ID
    

在这里插入图片描述
启动容器

  • 格式:docker start 容器ID

  • 示例

    docker start f5
    

在这里插入图片描述
一次性执行容器操作

  • 格式:docker run 镜像名称 操作指令
  • 示例:

#docker run 一次性运行centos:7镜像(如在本地未发现镜像会自动在容器仓库中下载该镜像) -c (command指令,进入到centos:7容器) ls / (执行ls /命令)

	docker run centos:7 /usr/bin/bash -c ls /

在这里插入图片描述
如果不希望执行完命令后结束进程,可以给一条循环语句命令,如下:

docker run -d centos:7 /bin/bash -c "while true;do echo hello;done"

进入容器

  • 格式:
    ① docker run -it 容器名 容器环境
    ② 在容器为运行状态下:docker e’x’ec -it 容器ID 容器环境

  • 示例:

      docker run -it nginx:latest /bin/bash
    

在这里插入图片描述
容器导出、导入

  • 格式:
    docker export 容器ID > 导出的容器名 (容器导出)
    cat 容器名 | docker import - 镜像名 (生成镜像,不会生成容器)

  • 示例:

      docker export 079  > centos
      ls
    

在这里插入图片描述
容器删除

  • 格式:docker rm 容器ID (必须先停止再删除)

  • 示例:

      docker rm 07
    

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_50399006/article/details/114008545

智能推荐

杨辉三角的重要结论_Error Man的博客-程序员宝宝_杨辉三角结论

第n行的m个数可表示为C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。 第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一。 每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即C(n+1,i)=C(n,i)+C(n,i-1)。 (a+b...

外媒测评iPhone新机:性能卓越,但续航令人失望_网易智能的博客-程序员宝宝

尽管苹果iPhone 12和iPhone 12 Pro即将于10月23日正式开售,但许多媒体已经抢先拿到样机,并对它们进行了测评。今年新款iPhone最大卖点就是支持5G,同时在性能、显...

vivago教程,Ego1实验五,串口无法打开(解决)_Ocean_VV的博客-程序员宝宝

最近把vivado实验教程都实现了一遍,Ego1的口袋板,关于实验五中串口无法打开的问题,耽误了好几天终于碰巧解决了。下载完成后,打开板卡的使能开关(SW15),串口调试助手参数配置也正确了,可是串口就是无法打开各种折腾之后,终于知道了。。bit文件加载到板卡之后,就把vivado中的Hardware Manager关闭,就可以打开串口了,不然它会一直占着串口。(把下面这个界面关闭就ok了)最后,...

Python 字符串驻留机制(intern 机制)_疯魔coding君的博客-程序员宝宝

每个单词(字符串),不夹杂空格或者其他符号,只由大小写字母、数字和下划线组成时,默认开启 intern 机制,共享内存,靠引用计数决定是否销毁。案例1:Python 交互式环境&gt;&gt;&gt; a = 'HelloWorld'&gt;&gt;&gt; b = 'HelloWorld'&gt;&gt;&gt; a is bTrue&gt;&gt;&gt; a = 'Hello World'&gt;&gt;&gt; b = 'Hello World'&gt;&gt;&gt; a .

测试驱动开发 测试前移_我们为什么进行测试-通过测试驱动的开发更快地做事..._cumifi2519的博客-程序员宝宝

测试驱动开发 测试前移by Rainer Hahnekamp 通过Rainer Hahnekamp 我们为什么进行测试-通过测试驱动的开发更快地做事 (Why we test — do things faster with Test-Driven Development)As we all know, unit tests provide us with some kind of safet...

【C++ STL 温故而知新 001】vector容器和iterator迭代器_DaveBobo的博客-程序员宝宝

一、vector容器二、iterator迭代器三、C++中用new和不用new创建对象区别

随便推点

Activiti7 监听器如何实现参数传递_何以解忧,唯有敲敲敲的博客-程序员宝宝_activiti 参数传递

Activiti7 监听器如何实现参数传递实现ExecutionListener接口Expression 字段注入监听器代码 * @Author: run * @Date: 2021/3/26 17:00 */public class StatusListener implements ExecutionListener { //设置字段, 给监听器注入 private Expression listenet; @Override public

轻量型thttpd+php5_weixin_33831673的博客-程序员宝宝

thttpd是一个非常小巧的轻量级web server,它非常非常简单,仅仅提供了HTTP/1.1和简单的CGI支持,thttpd 也类似于lighttpd,对于并发请求不使用fork()来派生子进程处理,而是采用多路复用(Multiplex)技术来实现。因此效能很好。thttpd还有一个较为引人注目的特点:基于URL的文件流量限制,这对于下载的流量控制...

《机器学习实战》 第二章【k-近邻算法】_小风_的博客-程序员宝宝

作为本书的第一个算法,k-近邻算法简单易懂,在分类任务中起到很重要的作用目录算法描述算法简述优缺点一般流程实例0.一个简单的例子实例1.约会网站配对实例2.手写数字识别算法描述算法简述简单的说,k-近邻算法采用测量不同特征值之间的距离方法进行分类。即如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。Step1.计算已...

Linux调用X11窗口转发功能_ໂ的博客-程序员宝宝_x11 web

Linux操作系统逐渐的应用至各大中小型企业中,其中部分web服务需要调用X11窗口转发功能,在web前台展示各种图形。如未设置,则会导致功能正常,但图形不显示,以下为解决办法。1、ssh开启 X11 forward2、echo $DISPLAY 查看配置的地址3、如果没有显示,可以使用 export DISPLAY=:0.0 进行临时配置4、写入/etc/profile 即可永久...

JSP-使用JSTL-out、set、remove、catch捕捉异常、条件判断、流程控制、字符截取 ..._weixin_34302798的博客-程序员宝宝

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/twilight_karl/article/details/75804793 ...

思考人生_headwater的博客-程序员宝宝

空闲的时,想想前途。做程序员终究不是个事,项目经理才是光明前程。了解下项目经理职责1、扎实的技术为基础这是没说的。2、管理能力3、其他的还不清楚先去查查看吧,哎Project Manager{ 协调,要罩得住方方面面,客户、公司高层、手下、市场部的等等 所谓背黑锅我来送死你去,唐僧就是个好的项目经理,好好学习吧}...

推荐文章

热门文章

相关标签