云原生之docker命令详解

 更新时间:2023年06月05日 09:34:59   作者:山河亦问安  
Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化,本文就给大家介绍了云原生中的docker命令

1.云原生概念

1.1 云原生定义

云原生”顾名思义,就是“生在云上、长在云上”。
云原生是一种以云计算技术为基础,利用容器、微服务、DevOps 和自动化等技术实现敏捷开发、快速部署的应用程序架构,这就是云原生。

云原生是面向“云”而设计的应用,因此技术部分依赖于传统云计算的 3 层概念,基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。

1.2 云原生元素

云原生元素如下图:

1.2.1 微服务

微服务解决的是我们软件开发中一直追求的低耦合+高内聚,记得有一次我们系统的接口出了问题,结果影响了用户的前台操作,于是黎叔拍案而起,灵魂发问:“为啥这两个会互相影响?!”

微服务可以解决这个问题,微服务的本质是把一块大饼分成若干块低耦合的小饼,比如一块小饼专门负责接收外部的数据,一块小饼专门负责响应前台的操作,小饼可以进一步拆分,比如负责接收外部数据的小饼可以继续分成多块负责接收不同类型数据的小饼,这样每个小饼出问题了,其它小饼还能正常对外提供服务。

1.2.2 DevOps

DevOps 的意思就是开发和运维不再是分开的两个团队,而是你中有我,我中有你的一个团队。我们现在开发和运维已经是一个团队了,但是运维方面的知识和经验还需要持续提高。

1.2.3 持续交付

持续交付的意思就是在不影响用户使用服务的前提下频繁把新功能发布给用户使用,要做到这点非常非常难。我们现在两周一个版本,每次上线之后都会给不同的用户造成不同程度的影响。

1.2.4 容器化

容器化的好处在于运维的时候不需要再关心每个服务所使用的技术栈了,每个服务都被无差别地封装在容器里,可以被无差别地管理和维护,现在比较流行的工具是 docker 和 k8s

所以你也可以简单地把云原生理解为:云原生 = 微服务 + DevOps + 持续交付 + 容器化

2. Docker

2.1 Docker概述

2.1.1 Docker 定义

Docker 是一个开源的应用容器引擎,基于Go 语言并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

2.1.2 Docker应用场景

  • Web 应用的自动化打包和发布。

  • 自动化测试和持续集成、发布。

  • 在服务型环境中部署和调整数据库或其他的后台应用。

  • 解决软件跨境迁移的问题

2.1.3 Docker的架构

镜像(image)

Docker镜像(Image)就是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建很多容器。

容器(container)

Docker利用容器(Container)独立运行一个或一组应用。容器是使用镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台,容器是一个简易版的Linux环境和运行在其中的应用程序。

仓库(Repository)

仓库(Repository)是集中存放镜像文件的场所。仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云、网易云等。

2.2 Docker命令

2.2.1 docker进程相关命令

#启动docker
systemctl start docker
#停止docker
systemctl stop docker
#查看docker状态
systemctl status docker
#重启docker
systemctl restart docker
#设置开机启动
systemctl enable docker

2.2.2 docker镜像相关命令

#查看镜像,查看本地所有的镜像
docker images
docker images 
    -q #查询所有镜像的ID
    -a #列出所有的镜像
    --help #命令帮助
#查询如下
#镜像的仓库源, 镜像的标签,镜像的id,     镜像的创建时间,   镜像的大小
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    feb5d9fea6a5   14 months ago   13.3kB
#搜索镜像:从网络中查询需要的镜像
docker search 镜像的名称
#拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号, 如果不指定,则是最新版,如果不知道镜像的版本号,可以去hub.docker.com去查询
docker pull 镜像名称
#删除指定镜像
docker rmi 镜像id 

2.2.3 docker容器相关命令

docker run 参数 镜像名称:版本号

参数说明:
    * -i:保持容器运行,通常与-t同时使用,加上 it 这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭,
    * -d:以守护(后台)模式运行容器,创建一个容器在后台运行,需要使用docker exec 进入容器,退出后,容器不会关闭。
    * --name: 为创建的容器命名
    * -p 宿主机端口:容器端口

#查看正在运行容器
docker ps
#查看所有容器
docker ps -a
#创建并启动容器
docker run -d --name nginx1 -p 4200:80 nginx
#进入容器
docker exec -it ngnix1 /bin/bash
#停止容器
docker stop 容器名称或者容器id
#启动容器
docker start 容器名称或者容器id
#删除容器:如果是运行状态则删除失败,需要停止容器才能删除
docker rm 容器名称或者容器id
#查看容器信息
docker inspect 同期名称或者容器id

2.2.4 日志进程

#查看最近日志
docker logs -f 容器名/容器ID
#最近30分钟的日志
docker logs
#查看某时间之后的日志
docker logs -t  --since="2022-08-08T18:08:08" 容器ID
#查看某时间段日志
docker logs  -t  --since="2022-08-08T18:08:08" --until "2022-08-08T20:08:08" 容器ID
 

2.2.5 数据卷容器

卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性,卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。数据卷可在容器之间共享或重用数据并且卷中的更改可以直接实时生效,数据卷的生命周期一直持续到没有容器使用它为止。

配置数据卷

docker run  ... -v 宿主机目录(文件):容器内目录(文件)...

注意事项

  • 目录必须是绝对路径
  • 如果目录不存在,会自动创建
  • 可以挂在多个数据卷
#mysql 同步数据
docker run -d -p 3310:3306 -v /www/server/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql1 mysql:5.5

2.2.6 dockerfile构建docker镜像文件

  • Dockerfile 是一个文本文件
  • 包含了一条条的指令
  • 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
  • 对于开发人员:可以为开发团队提供一个完全一直的开发环境
  • 对于测试人员:可以直接那开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作
  • 对于运维人员:在部署时,可以实现应用的无缝移植

构建自己的centos镜像如下图

执行dockerfile生成镜像

docker build -f dockerfile文件的路径 -t 设置新的镜像的名称和版本号 .  # 注意最后的点,代表生成的镜像路径

 -f 表示dockerfile路径
  -t 设备新镜像的名称和版本号
最后的. 表示生成镜像的路径,为当前路径

2.2.7 Docker Compose

我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知。

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose 使用的三个步骤:

  • 使用 Dockerfile 定义应用程序的环境。
  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

以上就是云原生之docker命令详解的详细内容,更多关于云原生 docker命令的资料请关注脚本之家其它相关文章!

相关文章

  • 详解在Ubuntu 14.04安装和使用Docker

    详解在Ubuntu 14.04安装和使用Docker

    Docker是一个开源软件,它可以把一个Linux应用和它所依赖的一切(比如配置文件)都封装到一个容器。本篇文章主要介绍了在Ubuntu 14.04安装和使用Docker,非常具有实用价值,需要的朋友可以参考下。
    2016-12-12
  • Docker安装FastDFS的方法步骤

    Docker安装FastDFS的方法步骤

    这篇文章主要介绍了Docker安装FastDFS的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • docker快速入门教程

    docker快速入门教程

    这篇文章主要为大家详细介绍了docker快速入门教程,知识结构简单,对docker有一个初步的认识,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Docker 教程之私有仓库详解

    Docker 教程之私有仓库详解

    这篇文章主要介绍了Docker 教程之私有仓库详解的相关资料,需要的朋友可以参考下
    2016-12-12
  • 阿里云esc服务器Docker部署单节点Mysql的讲解

    阿里云esc服务器Docker部署单节点Mysql的讲解

    今天小编就为大家分享一篇关于阿里云esc服务器Docker部署单节点Mysql的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • docker生产环境jvm性能优化方式

    docker生产环境jvm性能优化方式

    这篇文章主要介绍了docker生产环境jvm性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 3分钟带你学会docker搭建帕鲁服务器

    3分钟带你学会docker搭建帕鲁服务器

    幻兽帕鲁已经正式开服,目前在线人数已经超过7W+,很多玩家想自己创建服务器和朋友一起联机游玩,本文主要介绍了3分钟带你学会docker搭建帕鲁服务器,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • docker运行nginx镜像的实现步骤

    docker运行nginx镜像的实现步骤

    这篇文章主要介绍了docker运行nginx镜像的实现,并将配置文件和目录挂载到宿主机上,以实现方便统一的管理配置信息,感兴趣的可以了解一下
    2023-10-10
  • Ubuntu Docker 源码编译(1.9.1 )详解

    Ubuntu Docker 源码编译(1.9.1 )详解

    这篇文章主要介绍了Ubuntu Docker 源码编译(1.9.1 )详解的相关资料,这里对编译过程进行了详细的分析介绍,需要的朋友可以参考下
    2016-11-11
  • Windows Server 2016中文版安装docker的详细步骤

    Windows Server 2016中文版安装docker的详细步骤

    因业务需要所以需要安装Docker,但是在途中遇到了一些问题,所以下面这篇文章主要给大家介绍了关于Windows Server 2016中文版安装docker的详细步骤,需要的朋友可以参考下
    2022-07-07

最新评论