Docker 基本管理及部署

news2024/9/20 23:25:38

目录

1.Docker概述

1.1 Docker是什么?

1.2 Docker的宗旨

1.3 容器的优点

1.4 Docker与虚拟机的区别

1.5 容器在内核中支持的两种技术

1.6 namespace的六大类型

2.Docker核心概念

2.1 镜像

2.2 容器

2.3 仓库

3.安装Docker

3.1 查看 docker 版本信息

4.Docker镜像操作

5.Docker容器操作

6.总结


1.Docker概述

1.1 Docker是什么?

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

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

容器引擎:docker、containered、podman、rocket

1.2 Docker的宗旨

即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“ 一次封装、到处运行 “ 的目的,这里的应用既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

1.3 容器的优点

  • 灵活:即使是最复杂的应用也可以集装箱化
  • 轻量级:容器利用并共享主机内核
  • 可互换:可以及时部署更新和升级
  • 便携式:可以在本地构建,部署到云,并在任何地方运行
  • 可扩展: 可以增加并自动分发容器副本
  • 可堆叠:可以垂直和即时堆叠服务

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

1.4 Docker与虚拟机的区别

特性Docker容器虚拟机
启动速度秒级分钟级
计算能力损耗几乎无损耗 50%左右
性能接近原生弱于
系统支持量(单机)上千个几十个
隔离性资源隔离/限制完全隔离

1.5 容器在内核中支持的两种技术

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

1.6 namespace的六大类型


2.Docker核心概念

2.1 镜像

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

2.2 容器

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

2.3 仓库

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

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

3.安装Docker

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

systemctl disable --now firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled

导入阿里云镜像源

cd /etc/yum.repos.d
mv local.repo repo.bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

安装依赖包

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。

设置阿里云docker镜像源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

安装 Docker-CE并设置为开机自动启动

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

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

3.1 查看 docker 版本信息

docker version  #查看docker版本

#docker详细信息查看
docker info  

4. Docker镜像操作

镜像加速下载

浏览器访问阿里云官网>产品>容器>容器镜像服务 ACR>管理控制台>镜像工具>镜像加速器



搜索镜像

docker search 关键字
docker search nginx

获取镜像

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

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

docker images等于docker image ls

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

docker images -q   #仅查看镜像 id号



查看镜像信息

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

查看下载的镜像文件信息

cat /var/lib/docker/image/overlay2/repositories.json

根据镜像的唯一标识ID号,获取镜像详细信息

docker inspect 镜像ID号
docker inspect 605c77e624dd

docker inspect 仓库名:标签
docker inspect nginx:1.20

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


为本地的镜像添加新的标签

docker tag 名称:[标签] 新名称:[新标签]

docker tag nginx:latest nginx:1.21
docker tag nginx:latest xy101/nginx:1.21


删除镜像

docker rmi 镜像名称:标签		  #当一个镜像有多个标签时,只是删除其中指定的标签
或者
docker rmi 镜像ID号			  #会彻底删除该镜像
docker rmi 镜像ID号	-f        #强制删除所有的镜像

快速删除所有镜像方法:
docker rmi $(docker images -q)

docker rmi nginx:1.18
docker rmi 50fe74b50e0d
docker rmi 605c77e624dd -f




存出镜像:将镜像保存成为本地文件

docker save -o 镜像文件路径  镜像名或镜像ID       #将镜像导出为文件

docker save -o /opt/nginx-1.20.tar nginx:1.20
ls /opt
scp /opt/nginx-1.20.tar 192.168.9.111:/opt

192.168.9.111服务器查看


载入镜像:将镜像文件导入到镜像库中

docker load < 存出的文件
或者
docker load -i 存出的文件

docker load < nginx
docker load -i nginx

上传镜像

docker账户

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

docker login  #输入用户名及密码
docker tag nginx:1.20 别名   #添加别名
docker push 别名   #上传即可

阿里云账户上传示例

docker login --username=aliyun6939554239 registry.cn-hangzhou.aliyuncs.com #登录,输入密码
docker tag nginx:1.20 registry.cn-hangzhou.aliyuncs.com/aliyun-xy101/nginx-xy101:1.20   #为nginx:1.20创建别名ginx-xy101:1.20
docker push registry.cn-hangzhou.aliyuncs.com/aliyun-xy101/nginx-xy101:1.20  #上传

阿里云官方进行查看


5.Docker容器操作

容器创建:就是将镜像加载到容器的过程。

新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。

docker create [选项] 镜像名:标签 [容器启动命令]    #创建容器
常用选项:
-i:让容器开启标准输入接受用户输入命令
-t:让Docker分配一个伪终端tty
-it :合起来实现和容器交互的作用,运行一个交互式会话shell 
--name : 指定容器名

docker create -it nginx:latest /bin/bash

查看容器的运行状态

docker ps -a			#-a选项可以显示所有的容器
docker ps -a -q  #查看容器id号
docker inspect 容器名/容器id  #查看容器详细信息



启动容器

docker start 容器的ID/名称
docker ps -a    #查看所有容器
docker ps       #查看正在运行的容器


停止容器

docker stop 容器的ID/名称 [-t 等待时间]   #停止容器,发送SIGTERM信号,默认等待10d 
docker kill 容器的ID/名称      #强制退出容器,默认发送SIGKILL信号

删除容器

docker rm [-f] 容器ID/名称   #删除已经停止的容器  [-f]选项强制删除

若想删除正在 运行的容器,必须先暂停该容器的启动状态,在进行删除或使用-f选项,否则无法删除


批量清理后台停止的容器

docker rm $(docker ps -a -q)	


批量清理后台所有容器

docker rm $(docker ps -a -q) -f


创建并启动容器

可以直接执行docker run命令, 等同于先执行docker create命令,再执行docker start命令。


注意: 容器是一个与其中运行的shell命令/进程共存亡的终端,命令/进程运行容器运行, 命令/进程结束容器退出。
docker容器默认会把容器内部第一个进程,也就是pid=1的程序作为docker容器是否正在运行的依据,如果docker容器中pid = 1的进程挂了,那么docker容器便会直接退出,也就是说Docker容器中必须有一个前台进程,否则认为容器已经挂掉。

当利用docker run来创建容器时, Docker在后台的标准运行过程是:

(1)检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载;
(2)利用镜像创建并启动一个容器;
(3)分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;
(4)从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中;
(5)分配一个地址池中的IP地址给容器;
(6)执行用户指定的应用程序,执行完毕后容器被终止运行。

容器的进入

需要进入容器进行命令操作时,可以使用docker exec命令进入运行着的容器。

docker exec -it 容器ID/名称 /bin/bash
-i 选项表示让容器的输入保持打开;
-t 选项表示让Docker分配一个伪终端。
#进入容器前,确保容器正在运行
docker exec -it c3 /bin/sh
ls
exit				#退出容器后,容器仍在运行

将本地文件复制到容器中

docker cp 宿主机文件路径  容器名或容器ID:绝对路径                      #复制宿主机文件到容器中
docker cp /etc/yum.repos.d/CentOS-Base.repo c3:/lib

从容器复制文件到本地主机

cp 容器名或容器ID:绝对路径  宿主机文件路径                      #复制容器文件到宿主机中
docker cp c3:/lib/systemd /root/
docker cp c3:/lib/init /root/

查看容器日志

docker logs 容器名/容器id    #查看容器中PID=1的主进程的日志

6.总结

docker是什么?

docker是用go语言开发并开源的容器引擎,用来运行容器里的应用。docker也是用来管理容器和镜像的工具。

Docker与虚拟机的区别

docker容器虚拟机
所有容器共享宿主机的内核每个虚拟机都有独立的操作系统和内核
通过namespace实现资源隔离,通过cgroup实现限制资源的最大使用量完全隔离,每个虚拟机都有独立的硬件资源分配
秒级启动速度分钟级启动速度
容器相当于宿主机的进程,性能几乎没有损耗需要通过hypervisor虚拟机管理程序对宿主机资源虚拟访问,会有一定的性能损耗
一个宿主机可以启动成百上千个容器最多几十台虚拟机

Linux6大namespace(资源隔离)

MNT/MOUNT隔离文件系统
NET/Network网络资源隔离
PID进程的pid隔离
IPC进程间通信隔离
UTS隔离主机名
USER隔离用户

docker run的启动过程

1.检查本地是否有指定镜像,如果有则直接使用本地镜像创建容器,如果没有则从仓库拉取镜像再创建容器

2.在只读的镜像层上再挂载一层可读可写的容器层

3.从docker网桥给容器分配一个虚拟接口和IP地址

4.使用镜像的默认启动命令或docker run 指定的命令来启动容器,直到容器中的PID=1的主进程退出为止
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1919218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hvv工具推荐——IWannaGetAll

OA基本上是每次hvv中都会被突破的&#xff0c;基本上也都会爆出各种各样的0day&#xff0c;如果真的0day防不住&#xff0c;那我们必须要把1day、nday做一遍检查。 IWannaGetAll 是一款专门针对主流OA&#xff08;办公自动化&#xff09;系统的漏洞检测和利用工具。 IWannaGe…

C# WinForm —— 37 TabControl 控件介绍

1. 简介 管理一个TabPages集合的控件&#xff0c;也是一个分组控件 如果一个模块有多个子页面&#xff0c;可以使用TabControl控件进行页面切换 2. 属性 属性解释(Name)控件ID&#xff0c;在代码里引用的时候会用到Enabled控件是否启用Alignment确定选项卡是否显示在控件的…

每日刷题(二分图,二分查找,dfs搜索)

目录 1.P3853 [TJOI2007] 路标设置 2.P1129 [ZJOI2007] 矩阵游戏 3.P1330 封锁阳光大学 4.Trees 5.P1141 01迷宫 1.P3853 [TJOI2007] 路标设置 P3853 [TJOI2007] 路标设置 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 先求出每个路标之间的距离&#xff0c;再二分查找每…

渔人杯——RE

贪吃蛇的秘密 修改代码后&#xff0c;报了一个错 # uncompyle6 version 3.9.1 # Python bytecode version base 3.7.0 (3394) # Decompiled from: Python 3.11.8 (tags/v3.11.8:db85d51, Feb 6 2024, 22:03:32) [MSC v.1937 64 bit (AMD64)] # Embedded file name: snake1.py…

渐变且描边文字

效果&#xff1a; 用 background-image&#xff1a;linear-gradient实现渐变、 text-shadow实现描边 元素同时添加&#xff1a; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 1), rgba(143, 180, 253, 1));-webkit-background-clip: text;background-…

笔记本电脑数据丢失如何恢复?

在计算机网络日益普及的今天&#xff0c;计算机已波及到人们的生活、工作、学习及消费等广泛领域&#xff0c;其服务和管理也涉及政府、工商、金融及用户等诸多方面。笔记本电脑等电子产品被各行各业的人所喜爱和接受&#xff0c;早已成为人们出差的必备品&#xff0c;可以用来…

彻底解决找不到d3dcompiler_43.dll问题,总结几种有效的方法

运行软件时提示找不到d3dcompiler_43.dll无法继续执行代码&#xff0c;如何解决&#xff1f;解决这个问题的方法有很多&#xff0c;但具体问题需要具体分析&#xff0c;有些方法可能并不适用于解决d3dcompiler_43.dll的问题。因此&#xff0c;需要根据实际情况来选择合适的方法…

【LeetCode:1071. 字符串的最大公因子 + 模拟 + 最大公约数】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【全面介绍Oracle】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 目录 🎥前言🎥基本概念和安装🎥SQL语言🎥PL/SQL编程🎥数据库…

基于webpack创建plugin并发布npm包

webpack 1. 什么是webpack webpack是一个模块化打包工具&#xff0c; 可以将零散的js文件打包到一个js文件中可以使用loader对对模块的源代码进行转换 再打包可以支持载入任何类型的文件有代码拆解能力 2.webpack中有两个重要的概念 loader: loader 让 webpack 能够去处理…

paddla模型转gguf

在使用ollama配置本地模型时&#xff0c;只支持gguf格式的模型&#xff0c;所以我们首先需要把自己的模型转化为bin格式&#xff0c;本文为paddle&#xff0c;onnx&#xff0c;pytorch格式的模型提供说明&#xff0c;safetensors格式比较简单请参考官方文档&#xff0c;或其它教…

Tomcat优化和动静分离

Tomcat优化和动静分离 一、Tomcat优化 Tomcat&#xff1a;自身优化、内核优化和jvm优化 tomcat的并发处理能力不强&#xff0c;大项目一般不使用tomcat作为转发的中间件&#xff08;k8s集群、Python、rubby&#xff09;&#xff0c;小项目会使用&#xff08;内部使用&#x…

Python功能制作之获取CSDN所有发布文章的对应数据

大家好&#xff0c;今天我要分享的是一个实用的Python脚本&#xff0c;它可以帮助你批量获取CSDN博客上所有发布文章的相关数据&#xff0c;并将这些数据保存到Excel文件中。此外&#xff0c;脚本还会为每篇文章获取一个质量分&#xff0c;并将这个分数也记录在Excel中。让我们…

探索IP形象设计:快速掌握设计要点

随着市场竞争的加剧&#xff0c;越来越多的企业开始关注品牌形象的塑造和推广。在品牌形象中&#xff0c;知识产权形象设计是非常重要的方面。在智能和互联网的趋势下&#xff0c;未来的知识产权形象设计可能会更加关注数字和社交网络。通过数字技术和社交媒体平台&#xff0c;…

Nuxt3封装网络请求 useFetch $fetch

前言&#xff1a; 刚接触、搭建Nuxt3项目的过程还是有点懵的&#xff0c;有种摸石头过河的感觉&#xff0c;对于网络请求这块&#xff0c;与之前的Vue3项目有所区别&#xff0c;在Vue项目通常使用axios这个库进行网络请求&#xff0c;但在Nuxt项目并不推荐&#xff0c;因为有内…

SAP SD销售寄售转销售订单简介

前面的几篇文章都演示了寄售模式下的系统操作的步骤和后台相关配置的演示,本文将演示客户寄售库存的消耗。 还是看下下图中的寄售四种的订单类型,我们演示的就是寄售的消耗,同样也可以理解为我们借出的东西转换成了销售订单买给客户的这的场景。 首先还是从创建销售订单开…

【刷题汇总 -- 最长回文子串、买卖股票的最好时机(一)、[NOIP2002 普及组] 过河卒】

C日常刷题积累 今日刷题汇总 - day0101、最长回文子串1.1、题目1.2、思路1.3、程序实现 2、买卖股票的最好时机(一)2.1、题目2.2、思路2.3、程序实现2.4、程序实现 -- 优化 3、[NOIP2002 普及组] 过河卒3.1、题目3.2、思路3.3、程序实现 -- dp 4、题目链接 今日刷题汇总 - day0…

全球首款集成GPT-4o的智能眼镜AirGo Vision:AI眼镜的未来

引言 在人工智能和大模型技术迅猛发展的今天&#xff0c;AI硬件产品逐渐走入人们的生活。继Meta Ray-Ban智能眼镜之后&#xff0c;Solos公司在最近的香港智能眼镜峰会上发布了全球首款集成GPT-4o的智能眼镜AirGo Vision。本文将深入探讨这款AI智能眼镜的功能、技术特点以及其在…

Docker 使用基础(3)—容器

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;秒針を噛む—ずっと真夜中でいいのに。 0:34━━━━━━️&#x1f49f;──────── 4:20 &#x1f504; ◀️ ⏸ …

轻松搭建 VirtualBox + Vagrant + Linux 虚拟机

一、准备工作 首先&#xff0c;我们来了解一下搭建 VirtualBox Vagrant Linux 虚拟机所需的软件准备工作。 VirtualBox 的下载地址&#xff1a;您可以通过访问https://www.virtualbox.org/wiki/Downloads获取适用于您系统的版本。 Vagrant 的下载地址&#xff1a;前往http…