docker基础命令学习(代码片段)

大忽悠爱忽悠 大忽悠爱忽悠     2023-01-11     229

关键词:


Docker简介

Docker 将应用程序与该程序的依赖,打包在一个文件里面,该文件包括了所有打包的应用程序的所有依赖,像数据库等;直接运行该文件,就可以让程序跑起来,从而不用再去考虑环境问题。

虚拟机和Linux容器

  • 说到Docker就必须了解虚拟机和Linux容器,虚拟机可以实现在一种操作系统里面运行另一种操作系统,比如在 Windows 系统里面运行 Linux 系统等,而且不会对实际的电脑产生影响,不想用时将虚拟机相关文件删掉即可,用户可以通过虚拟机还原软件的原始环境,实际上就是解决了配置环境的问题。尽管它有资源占用多,启动慢等缺点。
  • Linux容器是为了解决虚拟机的确缺点而生的,Linux 发展出了另一种虚拟化技术:Linux 容器(Linux Containers,缩写为 LXC)。Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。由于容器是进程级别的,相比虚拟机有很多优势。像启动快、资源占用少等
  • 而Docker 就是属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。就像一开始说的,Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题


Docker中基本概念

镜像(Image)

镜像,从认识上简单的来说,就是面向对象中的类,相当于一个模板。从本质上来说,镜像相当于一个文件系统。Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。


容器(Container)

容器,从认识上来说,就是类创建的实例,就是依据镜像这个模板创建出来的实体

Docker利用容器独立运行一个或一组应用,容器是用镜像创建的运行实例

它可以被启动,开始,停止,删除,每个容器都是相互隔离的,保证安全的平台

可以把容器看做是一个简易版的LINUX环境(包括root用户权限,进程空间,用户空间和网络空间等)和运行在器中的应用程序。

容器的定义和镜像几乎一样,也是一堆层的统一视角,唯一的区别是容器的最上面那一层是可读可写的


仓库(Repository)

仓库,从认识上来说,就好像软件包上传下载站,有各种软件的不同版本被上传供用户下载。镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。


分层存储

因为镜像包含操作系统完整的root 文件系统,其体积往往是庞大的,因此在Docker设计时,就充分利用Union FS 的技术,将其设计为分层存储的架构。所以严格来说,镜像并非是像一个ISO 那样的打包文件,镜像只是一个虚拟的概念,其实际体现并非由一个文件组成,而是由一组文件系统组成,或者说,由多层文件系统联合组成。

镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。

分层存储的特征还使得镜像的复用、定制变的更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新的镜像。


Docker的安装

Centos 6安装Docker

  • yum install -y epel-release ----使用yum安装docker需要的依赖库
  • yum install -y docker-io ----正式安装docker-io
  • 安装后的配置文件: /etc/sysconfig/docker
  • 启动Docker后台服务: service docker start
  • docker version查看当前Docker的安装版本

或者通过下载源安装:
yum install https://get.docker.com/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rpm

或者离线安装:
下载rpm文件
rpm -ivh docker-engine-1.7.1-1.el6.x86_64.rpm


Centos 7安装Docker

先卸载老版本的Docker

 sudo yum remove docker \\
                  docker-client \\
                  docker-client-latest \\
                  docker-common \\
                  docker-latest \\
                  docker-latest-logrotate \\
                  docker-logrotate \\
                  docker-engine

正式安装

 sudo yum install -y yum-utils
 
 sudo yum-config-manager \\
    --add-repo \\
    https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager --enable docker-ce-nightly

sudo yum-config-manager --enable docker-ce-test

 sudo yum-config-manager --disable docker-ce-nightly

安装Docker引擎

sudo yum install docker-ce docker-ce-cli containerd.io

启动Docker

sudo systemctl start docker

参考官方文档:

https://docs.docker.com/engine/install/centos/


配置

阿里云镜像加速器配置

阿里云镜像加速,官网链接:

阿里云镜像加速

注册阿里云账号,点击容器镜像服务,镜像加速器,获取个人加速器地址。不同系统对应的配置方法在操作文档配置镜像加速器位置。Centos的配置加速器方法针对于centos7。

centos6在配置文件中配置阿里云镜像加速器

针对Centos6.8,编辑配置文件
vim /etc/sysconfig/docker

修改other_args后面的内容,改为–registry-mirror=个人镜像地址。

service docker restart 重启docker


验证镜像加速器是否配置成功:


查看docker进程属性,可见加速器配置成功。


centos7以上配置阿里云加速器

注意:daemon.json该文件可能不存在,这个时候正常创建即可

  • vim /etc/docker/daemon.json


  "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]

配置完重启服务即可

命令1:sudo systemctl daemon-reload

命令2:sudo systemctl restart docker


Hello World 镜像

启动docker后台容器,测试运行hello-world

docker run hello-world


底层运行原理

Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上, 然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。 容器,是一个运行时环境,就是我们前面说到的集装箱。


为什么Docker比较比VM快

(1)docker有着比虚拟机更少的抽象层。由亍docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。

(2)docker利用的是宿主机的内核,而不需要Guest OS。因此,当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。仍而避免引寻、加载操作系统内核返个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,返个新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返个过程,因此新建一个docker容器只需要几秒钟


Docker常用命令

帮助命令

docker version—查看当前Docker的版本信息

docker info----显示当前按照的Docker的详细信息

docker --help—查看帮助信息


镜像命令

docker images —查看当前主机上能够运行的所有镜像模板


选项说明:

  • REPOSITORY :表示镜像的仓库源
  • TAG:镜像的标签
  • CREATER: 镜像的创建时间
  • SIZE: 镜像的大小

同一个仓库源可以有多个TAG,代表这个仓库源的不同个版本,我们使用REPOSITORY :TAG来定义不同的镜像

如果你不指定一个镜像的版本标签,例如只适用ubuntu,docker将默认使用ubuntu:latest镜像

OPTIONS说明:

  • -a: 列出本地所有的镜像(含中间映像层)
  • -q:只显示镜像ID
  • –digest:显示镜像的摘要信息
  • –no-trunc:显示完整的镜像信息
docker images -a
docker images -qa
docker images --digests
docker images --no-trunc



docker search 某个镜像xxx镜像名字

网站:

https://hub.docker.com

命令:

docker search [OPTIONS] 镜像名字

OPTIONS说明:

–automated:弃用,只列出自动构建类型的镜像
–filter , -f:基于给定条件过滤输出
–format:使用模板格式化显示输出
–limit:Max number of search results ,默认值25
–no-trunc:禁止截断输出
–stars , -s:弃用,只显示收藏数不小于几颗星的镜像,移到–filter中使用

搜索镜像名中包含busybox的镜像

docker search busybox

搜索不小于3星,描述不截断,镜像名中包含busybox的镜像

docker search --filter=stars=3 --no-trunc busybox

限制搜索输出个数

docker search redis --limit 5

docker search的使用详解


docker pull 某个镜像xxx的名字—拉取镜像命令

docker pull tomcat 等价于 docker pull tomcat:latest,拉取最新版本

docker pull tomcat :8.0 拉取tomcat8.0版本


docker rmi 某个xxx镜像名字ID

  • 删除单个 docker rmi -f 镜像ID
  • 删除多个· docker rmi -f 镜像名1:TAG 镜像名2:TAG
  • 删除全部 docker rmi -f $(docker images -qa)

-f是强制删除


容器命令

首先下载一个Centos镜像演示: docker pull centos

新建并启动容器: docker run [OPTIONS] IMAGE [COMMAND ] [ ARG…]

以刚刚拉取的centos的镜像ID为模板生成一个对应的容器,30f779ea5784可以看做生成的容器的地址

-it:以交互模式运行,并生成一个伪终端


手动指定容器名字,此时会依照centos镜像重新生成一个容器实例,该容器的名字叫做mycentos01

交互式容器: -it


列出当前所有正在运行的容器: docker ps[OPTIONS]

NAMES如果不指定,默认是随机分配的


退出容器

  • exit :容器停止退出
  • ctrl+P+Q :容器不停止退出

启动容器

docker start 容器ID或者容器名


重启容器

docker restart 容器ID或者容器名


停止容器

docker stop 容器ID或者容器名


强制停止容器

docker kill 容器ID或者容器名


删除已停止容器

docker rm 容器ID

一次性删除多个容器:

  • docker rm -f $(docker ps -a -q) —找出当前全部的容器ID,并删除这些容器
  • docker ps -a -q | xargs docker rm —xargs是linux的可变参数,上一个命令返回的结果集返回给xagrs

加上-f就是删除已经关闭的容器,没有加上-f就是关闭当前容器然后删除


重要部分

启动守护容器—后台运行

docker run -d 容器名

返回的是容器ID

对比交互式容器: 使用centos:latest以交互模式启动一个容器,在容器内部指向/bin/bash命令

docker run -it centos /bin/bash (/bin/bash可以省略,因为默认都是以此种方式进行交互)


查看容器日志

docker logs -f -t --tail 容器ID

  • -t 是加入时间戳
  • -f 跟随最新的日志打印
  • --tail 数字 显示最后多少条

docker run -d centos /bin/sh -c “while true;do echo hello zzyy;sleep 2;done”

以后台的形式运行centos,循环打印hello zzyy,每隔两秒打印一次,这样前台就会有响应,以后台启动centos也不会被关闭




查看容器内部运行的进程

docker top 容器ID


查看容器内部细节

docker inspect 容器ID


进入正在运行的容器并以命令行交互

docker exec -it 容器ID bashShell

重新进入: docker arrach 容器ID

上面两个的区别:

  • attach直接进入容器启动命令的终端,不会启动新的进程
  • exec是在容器中打开新的终端,并且可以启动新的进程





exec命令可以直接进入容器,然后执行,或者可以直接在外面执行,获取到结果


从容器内拷贝文件到主机上

docker cp 容器ID: 容器内路径 目的主机路径

例如:

docker cp 容器ID:/tmp/yum.log /root


docker入门基础篇(代码片段)

查看docker教学视频,请点击《狂神说java》:https://www.bilibili.com/video/BV1og4y1q7M4?p=1记得投币三连呀~~Docker学习Docker概述Docker安装Docker命令镜像命令容器命令操作命令......Docker镜像容器数据卷DockerFileDocker网络原理Idea整合DockerDockerCompose... 查看详情

docker基础学习笔记(代码片段)

....通过命令使用数据卷查看数据卷匿名挂载具名挂载3.通过Dockerfile使用数据卷数据卷容器二、DockerFile1.什么是dockerfile?2.DockerFile构建过程3.DockerFile的指令4.实战测试三、综合实战:制作Tomcat镜像1.准备压缩包2.编写Dockerfile... 查看详情

docker基础学习三(代码片段)

一、Dockerfile学习由一系列的参数和命令构成的脚本。这些命令应用于基础镜像并最终创建一个新的镜像。基础镜像就是操作系统级别的镜像。常用命令FROMimage_name:tag定义了使用哪个基础镜像启动构建流程MAINTAINERuser_name声明镜像... 查看详情

docker学习dockerfile(代码片段)

一什么是Dockerfile:   Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。Dockerfile     从FROM命令开始,... 查看详情

docker基础命令(代码片段)

docker帮助命令1、查看版本。dockerversion2、docker详细信息dockerinfo3、docker帮助命令docker--help 查看详情

docker学习笔记-安装(代码片段)

Docker学习笔记基础概念/名词解释准备工作安装启动Docker服务Docker常用命令卸载参考资料基础概念/名词解释名词说明image镜像docker封装好的一个模板,里面是一个可运行的服务,以及运行此服务所需要的依赖环境。container... 查看详情

docker学习笔记-安装(代码片段)

Docker学习笔记基础概念/名词解释准备工作安装启动Docker服务Docker常用命令卸载参考资料基础概念/名词解释名词说明image镜像docker封装好的一个模板,里面是一个可运行的服务,以及运行此服务所需要的依赖环境。container... 查看详情

kaldi语音识别基础教程(代码片段)

...一个研究和使用的平台。Kaldi环境搭建本文主要通过使用Docker和Nvidia-docker构建Ubuntu环境对Kaldi进行搭建。Docker针对的是无GPU的环境,Nvidia-docker针对的是需要使用GPU计算的环境,如果读者机器上存在GPU计算资源,请使用Nvidia-docker... 查看详情

docker基础命令(代码片段)

Docker基础命令Docker基础命令1、查看Docker版本信息2、镜像操作搜索镜像下载镜像查看镜像信息/获取镜像信息添加新标签(打标签)删除镜像将镜像存储到本机上,命名为nginx_latest载入镜像上传镜像3、容器操作查询容... 查看详情

docker基础命令(代码片段)

Docker常用命令介绍1、docker常用命令命令作用dockersearch查询镜像dockerpull从网上拉取镜像dockercreate创建容器dockerps查看容器进程dockerstart启动容器进程dockerstop终止容器进程dockerlogs查看日志dockerimages查看docker中的镜像dockerrm删除镜像do... 查看详情

redis进阶学习01---基础回顾(代码片段)

Redis进阶学习01---基础回顾redis使用docker安装常用命令常用通用命令String类型常用命令key的层级表示Hash类型常用命令List类型set类型sortedSet类型Redis客户端JedisJedis连接池SpringDataRedis快速入门序列化问题+源码追踪分析替换序列化... 查看详情

linux学习-docker学习之dockerfile(代码片段)

dockerfile命令FROM:基础镜像FROMcentos:6.9FROMcentos@ImageIDRUN:构建镜像过程中运行的命令bash程序–使用&&连接多个命令#仅限bash程序,多个命令通过&&连接RUNcd/etc/yum.repos.d&&mkdirbak&&mv*. 查看详情

docker的基础命令(代码片段)

帮助命令dockerversion查看docker版本dockerinfo显示Docker系统信息,包括镜像和容器数。docker--help展示docker所有命令dockercommand--help更深入的了解指定的Docker命令使用方法。command为你想要的了解命令dockerrun--help案例Usage:dockerrun[OPTIONS]... 查看详情

004docker学习__dockerfile_build命令构建docker镜像(代码片段)

Dockerfile介绍  Dockerfile是一个文本文件,记录了镜像构建的所有步骤。 第一个Dockerfile,构建镜像的过程详解  用Dockerfile创建centos-vim,就是编写Dockerfile文件,在基础镜像centos:centos7.4.1708上安装vim,镜像构建的重要部分[root... 查看详情

docker-基础命令(代码片段)

docker容器,只能启动一个指定的程序,程序结束,容器退出查看命令:docker--help 总得来说,docker的命令为以下几种: 容器生命周期管理— docker[run|start|stop|restart|kill|rm|pause|unpause]容器操作运维— docker[ps|inspect|top|attach|events... 查看详情

3.docker学习之路——docker常用命令(代码片段)

Docker学习之路——Docker常用命令1.Docker系统级命令2.Docker镜像命令3.Docker容器命令4.Docker网络5.Docker其它常用命令6.命令练习一(Nginx)①搜索nginx(为了确认nginx在docker仓库中是否存在)②安装nginx镜像③后台运行nginx镜像生成容器,... 查看详情

docker---dockerfile学习(代码片段)

DockerFile学习DockerFile是什么whatisDockerFile构建三步骤DockerFile构建过程解析DockerFile内容基础知识Docker执行Dockerfile的大致流程小总结DockerFile的体系结构保留字指令小总结案例自定义镜像mycentos编写注意:dockerbuild命令最后有一个.,.代表... 查看详情

docker学习:docker基础容器构建(代码片段)

...ENAME=jammyDISTRIB_DESCRIPTION="Ubuntu22.04.1LTS"1.2.安装dockersudoaptinstalldocker#创建/etc/docker/daemon.jon文件,内容如下cat/etc/docker/daemon.json"registry-mirrors":["https://registry.docker-cn.com"]#启动dockersudosystemctlstartdocker#停止docke... 查看详情