docker系列:全面认识docker和基本指令

lonelyxmas lonelyxmas     2023-03-14     652

关键词:

原文:【Docker系列】:全面认识Docker和基本指令

Docker逐渐成为虚拟化技术的佼佼者,Docker技术也是架构师的必备技能。

什么是Docker

Docker 是一个开源的应用容器引擎,基于Go语言,诞生于2013年初,最初发起者是dotCloud公司,开发者可以打包应用到一个轻量级、可移植的容器中,然后发布到主流Linux系统上运行。

为什么用Docker

  • 持续交付和部署:使用Docker可以通过定制应用镜像来实现持续集成,持续交付,部署。开发人员构建后的镜像,结合持续集成系统进行集成测试,而运维人员则可以在生产环境中快速部署该镜像,也可以结合持续部署系统进行自动部署。

  • 更高效的资源利用:Docker是基于内核级的虚拟化,可以实现更高效的性能,同时对资源的额外需求很低,相比传统虚拟机方式,相同配置的主机能够运行更多的应用。

  • 更轻松的迁移和扩展:Docker容器几乎可以在任何平台上运行,同时支持主流的操作系统发行版本。

  • 更快速的启动时间:传统的虚拟机技术启动应用服务往往需要数分钟,而Docker容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到妙级,甚至毫秒级的启动时间,大大的节约了开发,测试,部署的时间。

Docker与传统虚拟机差异

技术图片?

技术图片

传统虚拟化方式

 

技术图片?

技术图片

 Docker虚拟化方式

 

传统虚拟化是在硬件层面实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作系统层,而Docker容器是在操作系统层面实现虚拟化,直接复用本地主机操作系统,更加轻量级。

核心概念

  • Docker镜像:类似于虚拟机里的镜像,是一个只读的模板,一个独立的文件系统,使用镜像可以创建容器,可以理解为镜像是容器的基石。

  • Docker容器:是由Docker镜像创建的运行实例,类似于轻量级的沙箱,每个容器之间都是相互隔离的。支持的操作有启动,停止,删除等。

  • Docker仓库:类似于经常使用的代码仓库,如github,它是Docker集中存放镜像文件的仓所,国内也有网易,阿里等镜像仓库。                    

镜像操作指令

  • 获取镜像:

    docker pull centos    (默认获取centos最新的镜像)

    docker pull centos:7 (获取指定标签镜像)

  • 查看本地镜像:

    docker images

  • 查看镜像详细信息:

    docker inspect centos:7 

  • 查看镜像历史:

    docker history centos:7

  • 删除镜像:

    A:使用标签删除:docker rmi centos

    B:使用ID删除:docker rimi

  • 构建镜像:

    A:使用docker commit命令

    B:使用Dockerfile构建

使用docker commit

例:构建一个带有jdk的镜像

按照如下步骤操作

[[email protected] ~]# docker run -it centos:7 /bin/bash
[[email protected]060793baf536 /]# yum install wget
[[email protected]060793baf536 /]# wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm

[[email protected]060793baf536 /]# rpm -ivh jdk-8u131-linux-x64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:jdk1.8.0_131-2000:1.8.0_131-fcs  ################################# [100%]
Unpacking JAR files...
        tools.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...
        rt.jar...
        jsse.jar...
        charsets.jar...
        localedata.jar...
[[email protected]060793baf536 /]# exit
[[email protected] ~]# docker commit 060793baf536 centos/jdk:2.0
技术图片

通过docker images命令可以看到新增了centos/jdk 标签为2.0的镜像

使用Dockerfile构建

实际使用中不推荐使用docker commit构建,应使用更灵活和强大的Dockerfile构建docker镜像,直接举例来认识Dockerfile。

例:构建一个带有jdk的centos7镜像

[[email protected] Dockerfile]# mkdir Dockerfile
[[email protected] Dockerfile]# cd Dockerfile
技术图片

编写Dockerfile:

FROM centos:7
MAINTAINER  Java-Road "[email protected]"

RUN mkdir /usr/local/jdk
COPY jdk-8u171-linux-x64.rpm /usr/local/jdk/
RUN rpm -ivh /usr/local/jdk/jdk-8u171-linux-x64.rpm
技术图片

执行如下指令:

[[email protected] Dockerfile]# docker build -t centos/jdk .
技术图片

运行结果如下:

技术图片技术图片?

docker images可以看到新生成的centos/jdk镜像。

容器操作指令

  • 创建启动容器:

    [[email protected] ~]# docker run centos:7 /bin/echo‘hello world‘
    
    技术图片

        容器运行完后直接退出

  • 交互形式创建启动容器

    [[email protected] ~]# docker run -it centos:7 /bin/bash
    [[email protected] /]# ps
       PID TTY          TIME CMD
         1 ?        00:00:00 bash
        13 ?        00:00:00 ps
    [[email protected] /]# exit
    
    技术图片

    执行exit才能退出容器

  • 守护状态运行容器

    [[email protected] ~]# docker run -d centos:7 /bin/sh -c "while true; do echo hello world; sleep 1; done"
    
    技术图片

 

  • 启动已有的容器:

    docker start 容器ID
    例:
    [root@localhost ~]# docker start 802e3623e566
    
    技术图片

     

  • 停止运行的容器:

    docker stop 容器ID
    例:
    [root@localhost ~]# docker stop 802e3623e566
    
    技术图片

     

  • 删除容器:

    [[email protected] ~]# docker stop 89566e38c7fb
    [[email protected] ~]# docker rm 89566e38c7fb
    
    技术图片

     

  • 进入运行的容器:

    [[email protected] ~]# docker exec -it cbd8b1f35dcc /bin/bash
    
    技术图片

     

  • 导出容器:

    导出容器cbd8b1f35dcc到centos_test.tar文件
    
    [[email protected] ~]# docker export -o centos_test.tar cbd8b1f35dcc
    
    导出的tar文件可以在其他机器上,通过导入来重新运行
    
    技术图片

     

  • 导入容器: 

    把导出的文件centos_test.tar通过docker import导入变成镜像
    
    [[email protected] ~]# docker import centos_test.tar test/centos
    
    通过docker images命令可以看到增加了个test/centos镜像
    技术图片

docker学习--docker的基本认识

1、Docker架构  Docker使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器。  Docker容器通过Docker镜像来创建。  容器与镜像的关系类似于面向对象编程中的对象与类。2、Ubuntu16.04上安装docker比... 查看详情

docker系列认识elk,docker安装elk和ik分词器

1.ELK简介ELK是三个开源软件的缩写,分别表示:Elasticsearch,Logstash,Kibana,它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方... 查看详情

docker系列docker基本常用命令(代码片段)

一、docker常用命令docker--help#查看docker命令dockerinfo#docker详细信息,镜像和容器dockerversion#查看docker版本#帮助文档地址:https://docs.docker.com/reference/二、镜像命令dockerimages#查看docker镜像;具体列解释含义:REPOSI 查看详情

docker基本概念及操作指令

...容器镜像和仓库三部分组成;仓库:常用的官方仓库----dockerhub dockerhub仓库:分为公有和私有仓库;内包含着很多镜像,每个镜像可以创造出很多个独立容器;Docker镜像基本操作:1)docker--version //查看是否安装完成及版... 查看详情

docker篇章7:docker-dockerfile(代码片段)

Docker篇章7:Docker-DockerfileDockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成脚本。构建三个步骤:编写dockerfile文件,dockerbuild,dockerrundockerFile构建过程dockerfile内容基本要求:每条保留字指令都必须为大写字母... 查看详情

三分钟掌握docker基本指令

一下内容是我用markdown编辑的,所以排版不是太ok~ #Docker##1.核心概念docker主机(Host):安装了docker程序的机器。docker直接安装再操作系统上。docker客户端(Client):连接docker主机进行操作。docker仓库(Registry):软件打包好的镜... 查看详情

docker从入门到实践系列五-dockerfile文件(代码片段)

文章目录什么是DockerFile文件DockerFile基本结构DockerFile指令详解1.FROM2.MAINTAINER3.RUN4.CMD5.COPY6.ENV7.ADD8.ENTRYPOINT9.VOLUME10.WORKDIR11.EXPOSEDockerFile创建镜像镜像管理DockerFile模版JDK镜像模版Docker数据持久化构建过程解析构建步骤基础知识Dockerfi... 查看详情

菜鸟入门docker—练习使用docker(代码片段)

前面我们大致搞清楚了docker的形态、基本构成,使用的基本流程。接下来我们需要练个手,在实际使用中体会Docker,使我们对它的认识更全面。  一般在实际项目应用中都是在Linux系统上部署Docker的,所以我们在l... 查看详情

docker系列-第六篇dockerfile解析(代码片段)

1.手动编写一个dockerfile文件,当然必须要符合file的规则2.有了这个文件,直接dockerbuild命令执行,获得一个自定义的镜像3.run1.是什么Dockerfle是一个文本格式的配置文件,用户可以使用Dockerfle来快速创建自定义的镜像。Dockerfile是... 查看详情

docker-基础使用:安装,启用,基本命令,数据卷

目录:一、认识Docker二、Docker架构三、安装Docker四、启用Docker五、Docker的基本命令六、Docker数据卷七、Docker命令小结(仅看命令可跳到此处)一、认识Docker1、Docker解决依赖兼容问题①将应用的Libs(函数库)、Deps(依赖)、配置... 查看详情

docker——使用docker工具管理软件/组件的运行,镜像容器数据卷的基本概念,常用指令,使用docker搭建java微服务运行环境(代码片段)

Docker——使用docker工具管理软件/组件的运行,镜像、容器、数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境一、docker的安装和卸载1.卸载2.安装3.导入已有的镜像文件二、docker概念1.镜像和容器2.镜像和... 查看详情

dockerfile概念简述

Docker镜像的创建docker镜像是应用发布的标准格式可支撑一个Docker容器的运行docker镜像的创建方法Dockerfile基于已有的镜像容器创建镜像基于本地模板进行构建Dockerfile是干什么的?Dockerfile是用来构建Docker镜像的构建文件,是由一系... 查看详情

docker基本指令整理

安装Dockeryuminstalldocker1 1yuminstalldocker开机自启动--centos6servicedockerstartchkconfigdockeron--CentOS7新式systemd语法systemctlstartdocker.servicesystemctlenabledocker.service7 1--centos62serviced 查看详情

docker基本架构

Docker采用了C/S架构,包括客户端和服务端。Dockerdaemon作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。客户端和服务端既可以运行在一个机器上,也可通过socket或者RESTfulAPI来进行通信。 Dockerdaemo... 查看详情

docker系列之一image和container

dockerimages往往不知不觉就占满了硬盘空间,为了清理冗余的image,可采用以下方法:1.进入root权限sudosu2.停止所有的container,这样才能够删除其中的images:  dockerstop$(dockerps-a-q)如果想要删除所有container的话再加一个指令:d... 查看详情

docker基本命令与使用——dockerfile指令与构建

一.Dockerfile指令上1.指令格式#Comment注释,以#开头INSTRUCTIONargument以大写的指令+参数 #FirstDockerfile注释FROMubuntu:14.04MAINTAINERdormancypress"[email protected]"RUNapt-getupdateRUNapt-getinstall-ynginxEXPOSE80& 查看详情

docker学习docker常用基本命令(代码片段)

1、Docker常用命令Docker是一个Client—Server结构的系统,Docker守护进程运行在主机上,通过Socket从客户端访问。DockerServer接收到Docker-client的指令,就会执行这个命令1.1帮助命令#docker版本信息dockerversion#docker系统信息,... 查看详情

容器与docker简介docker相关术语——微软微服务电子书翻译系列

本节列出了在更加深入Docker之前应该熟悉的术语和定义。有关详细的定义,请参阅Docker提供的术语表。 容器镜像(Containerimage):具有创建容器所需要的所有依赖和信息的包。镜像包括所有依赖(如框架)以及容器运行时使... 查看详情