【云原生】初识Docker,安装以及了解操作命令

这篇具有很好参考价值的文章主要介绍了【云原生】初识Docker,安装以及了解操作命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、为什么要使用容器?

背景:以前开发、测试、生产为不同的环境,痛点是发现开发测试以后没问题,但是在生产环境无法运行。给测试、开发、运维人员造成了大量的工作。最终结果是发版更新速度也跟不上,效率低

我认为使用容器的核心原因:降本增效

容器可以屏蔽底层操作系统的差异性,让业务应用无论在哪里都使用容器的环境运行,可以保证开发测试环境与生产环境的一致性;

容器部署起来非常便捷,可以缩短开发测试部署的周期,极大提高了效率;

容器相当于宿主机进程,几乎没有性能损耗,资源利用率高

二、docker概述

1、docker是什么

Docker是一个开源的应用容器引擎基于go语言开发并遵循了apache2.0协议开源。
Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。
Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。
鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。

Docker的设计宗旨:Build,Ship and Run Any App,Anywhere,
即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

2、docker有哪些特点

容器化越来越受欢迎,因为容器是:
●灵活:即使是最复杂的应用也可以集装箱化。(比如ELK)
●轻量级:容器利用并共享主机内核。(共享!!)
●可互换:可以即时部署更新和升级。
●便携式:可以在本地构建,部署到云,并在任何地方运行。(一次封装,到处运行)
●可扩展:可以增加并自动分发容器副本。
●可堆叠:可以垂直和即时堆叠服务。


容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序Hypervisor
对主机资源进行虚拟访问,相比之下需要的资源更多。

二、容器与虚拟机的区别是什么

1、底层系统

每个容器是共享宿主机的内核

每个虚拟机拥有独立的操作系统和内核

2、隔离性

容器通过namespace做资源隔离,通过cgroup限制资源使用量比如cpu 内存 磁盘等;

虚拟机之间完全隔离,每个虚拟机拥有独立的硬件资源

3、启动速度

容器是秒级启动

虚拟机是分钟级启动

4、计算能力消耗

容器几乎没有性能损耗

虚拟机是通过Hypervisor虚拟机管理程序对宿主机资源访问,通常由20%的性能损耗

5、系统支持量

一个宿主机可以支持上千个容器,但是最多只能支持几十个虚拟机

6、性能

容器接近原生,能够保证开发测试与生产环境一致

三、docker的核心概念

1、docker的核心技术

容器在内核中支持2种重要技术:
docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g,只有当需要修改时才复制一份数据)。

 六大namespace

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

2、docker的三大核心概念

●镜像
Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。
通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。
Docker镜像也是一个压缩包,只是这个压缩包不只是可执行文件,环境部署脚本,它还包含了完整的操作系统。因为大部分的镜像都是基于某个操作系统来构建,所以很轻松的就可以构建本地和远端一样的环境,这也是Docker镜像的精髓。

●容器
Docker的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,以保证平台的安全性。
可以把容器看做是一个简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序。

●仓库
Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公有仓库(Public)或者私有仓库(Private)。当下次要在另外一台机器上使用这个镜像时,只需从仓库获取。

Docker 的镜像、容器、日志等内容全部都默认存储在 /var/lib/docker 

总结

镜像:镜像是容器的基础,是一个只读的模板,存放着容器运行应用程序所需要的所有内容,包含应用程序、配置文件、运行库文件、依赖环境包等

容器:用镜像运行的实例,容器可以被创建、启动、停止、删除,每个容器默认相互隔离

仓库:用于集中存放镜像的地方,分为公有库和私有库

四、yum部署docker

目前 Docker 只能支持 64 位系统。

systemctl stop firewalld.service
setenforce 0

#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2 
--------------------------------------------------------------------------------------------
yum-utils:提供了 yum-config-manager 工具。
device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
--------------------------------------------------------------------------------------------

#设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

##需要epel源
yum install -y epel-release.noarch

#安装 Docker-CE并设置为开机自动启动
yum install -y docker-ce docker-ce-cli containerd.io

systemctl start docker.service
systemctl enable --now docker.service 
--------------------------------------------------------------------------------------------
安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。
--------------------------------------------------------------------------------------------

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

安装好的Docker系统有两个程序,Docker服务端和Docker客户端

Docker服务端是一个服务进程,负责管理所有容器。

Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。

二进制部署

curl https://download.docker.com/linux/static/stable/x86_64/docker-19.03.9.tgz -o docker-19.03.9.tgz
tar zxvf docker-19.03.9.tgz
mv docker/* /usr/bin

cat > /usr/lib/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
EOF

systemctl enable --now docker.service

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

五、认识docker命令

1、查看docker版本

[root@localhost yum.repos.d]#docker version

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

2、查看docker详细信息

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

3、镜像操作命令

1)镜像查看

[root@localhost ~]#docker search nginx

#搜索镜像
格式:docker search 关键字
docker search nginx

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

2)拉取镜像

[root@localhost ~]#docker pull nginx
[root@localhost ~]#docker images

[root@localhost ~]#docker pull nginx:1.18
[root@localhost ~]#docker images

#获取镜像
格式:docker pull 仓库名称[:标签]
#如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

3)查看本地有哪些镜像

--------------------------------------------------------------------------------------------
REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小;
--------------------------------------------------------------------------------------------

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

4)修改镜像名称或标签

[root@localhost ~]#docker tag nginx:latest lxy/nginx:1.25
[root@localhost ~]#docker tag nginx:latest nginx:lxy

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

5)删除镜像

[root@localhost ~]#docker rmi test:1

[root@localhost ~]#docker rmi c2c45d506085

[root@localhost ~]#docker rmi a8758716bb6a -f

#删除镜像
格式:
docker rmi 仓库名称:标签				#当一个镜像有多个标签时,只是删除其中指定的标签
或者
docker rmi 镜像ID号						#会彻底删除该镜像

注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。

docker rmi nginx:web

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

6)镜像迁移到另一台主机

#存出镜像:将镜像保存成为本地文件
格式:docker save -o 存储文件名 存储的镜像
docker save -o http.tar httpd:latest			#存出镜像命名为nginx存在当前目录下
ls -lh

#载入镜像:将镜像文件导入到镜像库中
格式:
docker load < 存出的文件
或者
docker load -i 存出的文件

docker load < http.tar

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

7)镜像上传

#上传镜像
默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。

docker tag soscscs/myapp:v1 longxiangc0123/sos0123:lxy		#添加新的标签时必须在前面加上自己的dockerhub的username
docker login								#登录公共仓库
Username:用户名
password:密码
docker push longxiangc0123/sos0123:lxy					#上传镜像


docker tag nginx:1.20 longxiangc0123/mynginx:lxy  ##先修改tag标签
docker push longxiangc0123/mynginx:lxy

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk 

 8)镜像加速下载

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

#镜像加速下载
浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://jo2gtsgr.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

#查看镜像信息
镜像下载后存放在 /var/lib/docker 。
Docker 相关的本地资源存放在 /var/lib/docker/ 目录下,其中 containers 目录存放容器信息,image 目录存放镜像信息,overlay2 目录下存放具体的镜像底层文件。

#查看下载的镜像文件信息
cat /var/lib/docker/image/overlay2/repositories.json

#查看下载到本地的所有镜像
docker images

9)查看镜像的详细信息

#根据镜像的唯一标识 ID 号,获取镜像详细信息
格式:docker inspect 镜像ID号
docker inspect d4a5e0eaa84f

●lowerdir是镜像层,目录或者文件是只读的,其实就是rootfs,image layer可以分很多层,所以对应的lowerdir是可以有多个目录
●upperdir是在lowerdir之上的容器层,这层是可读可写的,在启动一个容器时候会进行创建,所有的对容器数据更改都发生在这里层
●MergedDir是表现层,是容器的挂载点

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk 【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk

【云原生】初识Docker,安装以及了解操作命令,云原生,docker,spring cloud,分布式,容器,运维,elk 文章来源地址https://www.toymoban.com/news/detail-819986.html

到了这里,关于【云原生】初识Docker,安装以及了解操作命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker命令操作以及防火墙的开启和关闭

    1.停止运行所有的容器 docker container stop $(docker container ps -aq) 2.删除正在运行的容器 docker container rm 0c -f 3.把attached后台运行的容器转换为前台detached运行模式 docker attach +id 4. 跟踪日志 docker container logs -f +id 5. CentOS 5/CentOS 6 在CentOS 5和CentOS 6系统中,关于如何开启防火墙、关闭防

    2024年02月03日
    浏览(47)
  • 【云原生】Docker的初步认识,安装与基本操作

    Docker是一个开源的 应用容器引擎 ,基于go语言开发并遵循了apache2.0协议开源。 Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。 Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。 Docker的Logo设计为蓝色

    2024年02月16日
    浏览(56)
  • docker的安装以及基本操作

    Docker是一种用于构建、打包和运行应用程序的开源平台。它基于操作系统级虚拟化技术,可以将应用程序和其依赖的库、环境等资源打包到一个可移植的容器中,形成一个轻量级、独立的可执行单元。 开发者在本地编译测试通过的容器可以批量地在生产环境中部署,包括VM

    2024年02月11日
    浏览(43)
  • Docker的介绍及安装&基本操作命令

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

    2024年02月02日
    浏览(55)
  • Docker的安装部署以及配置的操作流程(图文)

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

    2024年02月01日
    浏览(39)
  • 【云原生】 一文了解Docker到底是什么?

    目录 1.docker是什么? 2.为什么需要docker? 3.docker特点 4.docker架构 5.云计算中的服务包括三个层面 6.传统虚拟化架构 7.容器架构 8.docker系统架构 Docker 守护进程 Docker 客户端 Docker 仓库 Docker 对象 Images(镜像) Containers (容器) Service (服务) 9.docker底层技术 命名空间(namespac

    2024年02月13日
    浏览(47)
  • 【云原生】· 一文了解docker中的网络

    目录 🍒查看docker网络 🍒bridge网络 🍒none网络 🍒host网络 🍒自定义容器网络     🦐博客主页:大虾好吃吗的博客     🦐专栏地址:云原生专栏         根据前面的学习,已经对docker有了一些简单的概念。这里在啰嗦一句, 容器是一个独立的环境 ,可以理解为一个小

    2024年02月09日
    浏览(42)
  • 【云原生】 一文了解docker中的网络

    例如:bridge(桥接)、host(主机)、overlay(覆盖)和macvlan(MACVLAN)等。这意味着可以根据具体的场景和需求来选择使用哪一种网络驱动程序。 在该模式下,容器将配置为使用Docker守护进程上的bridge网络。这使得所有同一网络的容器都能够相互通信,并且可以使用连接到宿

    2024年02月14日
    浏览(40)
  • 【Docker】初识 Docker,Docker 基本命令的使用,Dockerfile 自定义镜像的创建

    在部署大型项目时,常常面临多组件、复杂的依赖关系和不同环境之间的差异,这些因素可能导致以下问题: 复杂的依赖关系: 由于项目组件众多,各个组件之间的依赖关系变得复杂,容易出现版本不匹配或兼容性问题。 兼容性问题: 项目在不同的环境中可能会遇到兼容性

    2024年02月05日
    浏览(61)
  • Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)

    Redis为键值型数据库,数据以键值形式存储。没有表,没有约束。  mysql就是典型的关系型数据库(SQL)。 目的都是数据的增删改查,但数据存储方式不一样。   关系型和非关系型在结构上有差异 关系型的结构一般定好后就很少修改,非关系型的就更加自由  关系型数据库的关

    2024年02月13日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包