Docker容器基础

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、Docker概述
    • 1、docker是什么
    • 2、Docker的设计宗旨
    • 3、容器在内核中支持2种重要技术:
  • 三、Docker的核心概念
  • 四、Docker相关命令
    • 1.安装依赖包
    • 2.设置阿里云镜像源
    • 3.安装Docker-CE
  • 五、Docker镜像的操作
    • 1.搜索镜像
    • 2.获取镜像
    • 3.镜像加速下载
    • 4.查看镜像信息
    • 5.添加新标签(打标签)
    • 6.删除镜像
    • 7.将镜像存储到本机上,命名为nginx_latest
    • 8.载入镜像
    • 9.上传镜像
  • 六、容器操作
    • ​1.容器创建​
    • 2.查看容器运行状态​
    • 3.启动、停止、重启容器
    • 4.运行容器
    • ​​5.进入、退出容器
    • ​​6.容器导出、导入
    • 7.删除容器
  • 总结


一、Docker概述

在这里插入图片描述

1、docker是什么

​​Docker 是在Linux容器例运行应用的开源工具,是一种轻量级的虚拟机。

Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机"。

Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。

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

2、Docker的设计宗旨

​​Build,ship and Run Any App , Anywhere​​

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

​​容器化越来越受欢迎,因为容器是:​​

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

3、容器在内核中支持2种重要技术:

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

mount文件系统,挂载点——>一个文件系统内,不能重复挂载一个指定目录,列如:/mnt
user操作进程的用户和用户组
pid进程编号
uts主机名和主机域
ipc信号量、消息队列、共享存储(理解,不同的应用调用内存资源的时候应该使用不同的内存空间)
net网络设备、网络协议栈、端口等

三、Docker的核心概念

在这里插入图片描述
Docker客户端向Docker服务器发出请求,使用远程API来管理和创建Docker容器:

镜像(Image):镜像是Docker中的一个模板。通过 Docker镜像 来创建 Docker容器,一个镜像可以创建出多个容器。 镜像是由一系列指令一步一步构建出来。

容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

四、Docker相关命令

1.安装依赖包

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

在这里插入图片描述

2.设置阿里云镜像源

代码如下(示例):

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

在这里插入图片描述

3.安装Docker-CE

#安装 Docker-CE并设置为开机自动启动
yum install -y docker-ce docker-ce-cli containerd.iosystemctl start docker.service
systemctl enable docker.service  
--------------------------------------------------------------------------------------------
安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。
--------------------------------------------------------------------------------------------

在这里插入图片描述
在这里插入图片描述

docker version  查看docker版本信息

在这里插入图片描述
在这里插入图片描述

五、Docker镜像的操作

1.搜索镜像

docker search 服务名
例如:
docker search nginx

在这里插入图片描述

2.获取镜像

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

在这里插入图片描述

3.镜像加速下载

浏览器访问https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://1azni81n.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.查看镜像信息

docker images
docker inspect 镜像的ID
例如
docker images
docker inspect af62dd757b58镜像下教后存放在/var/ lib/ docker 。
Docker相关的本地资源存放在/var/lib/docker/目录下,其中 containers日录存放容器信息,image目录存放镜像信息,overlay2目录下存放具体的镜像底层文件。
#查看下载的镜像文件信息
cat /var/lib/docker/image/overlay2/repositories.json

在这里插入图片描述在这里插入图片描述

5.添加新标签(打标签)

docker tag 仓库名:原镜像名 仓库名:新镜像名
例如:
docker tag nginx:latest nginx:test
docker images
docker images | grep test

在这里插入图片描述

6.删除镜像

​​指定镜像ID删除的时候,要求该镜像不能有标签

#=====删除镜像
格式:
docker rmi 仓库名称:标签		#当一个镜像有多个标签时,只是删除其中指定的标签
或者
docker rmi 镜像ID号			#会彻底删除该镜像注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。docker rmi nginx:web

在这里插入图片描述
在这里插入图片描述

7.将镜像存储到本机上,命名为nginx_latest

docker save -o 存放镜像的位置 仓库名:镜像名
例如:
docker save -o /opt/nginx_latest nginx:latest#存出镜像====:将镜像保存成为本地文件
格式:docker save -o 存储文件名 存储的镜像
docker save -o nginx nginx:latest			#存出镜像命名为nginx存在当前目录下
ls -lh

在这里插入图片描述
在这里插入图片描述

8.载入镜像

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

在这里插入图片描述
在这里插入图片描述

9.上传镜像

将本地的镜像上传到公有的镜像仓库,要先登陆到镜像仓库

​​上传镜像前要修改标签,标签前面要加上Docker官网的账号名​​

​​标签格式: Docker官网的账号名/仓库名:镜像名​​

不过一般不会上传到公有仓库中,公司内部都使用私有仓库

docker push [OPTIONS] NAME[:TAG]例如:按照下面的流程就可以上传到公有云,有兴趣的可以上传
注册网址 :https://hub.docker.com/
#改标签
docker tag 仓库名:镜像名 用户名/仓库名:镜像名
#登录
docker login
Username:   #用户名
Password:   #密码#上传
docker push 用户名/仓库名:镜像名默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。docker tag nginx:latest soscscs/nginx:web		#添加新的标签时必须在前面加上自己的dockerhub的username
docker login								#登录公共仓库
Username:soscscs
password:abc123456
docker push soscscs/nginx:web					#上传镜像

六、容器操作

​1.容器创建​

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

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

格式:docker create [选项] 镜像
常用选项:
-i:让容器开启标准输入
-t:让 Docker 分配一个伪终端 tty
-it :合起来实现和容器交互的作用,运行一个交互式会话 shell docker create -it nginx:latest /bin/bash

在这里插入图片描述

2.查看容器运行状态​

容器的STATUS状态​
​​​up是正在运行的​​
Exited (0)是正常停止的容器​​
Exited (0)异常停止的容器docker ps -a			#-a 选项可以显示所有的容器
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS    PORTS     NAMES
8b0a7be0ff58   nginx:latest   "/docker-entrypoint.…"   57 seconds ago   Created             inspiring_swanson容器的ID号	   加载的镜像     运行的程序               创建时间       当前的状态  端口映射  名称

在这里插入图片描述

3.启动、停止、重启容器

docker start 容器ID:启动一个或多个已经被停止的容器
docker stop 容器ID:停止一个运行中的容器
docker restart 容器ID:重启容器
例:
docker start 875e301d22b5
docker ps -a
docker stop 875e301d22b5
docker ps -a
docker restart 875e301d22b5

在这里插入图片描述

4.运行容器

run和start的作用有些类似,准确来说run相当于create+start​​
​​一般第一次可以使用run,后面维护还是使用start/stop/restart

docker run [选项] 镜像 [命令] [变量]
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-c 命令表示后面的参数将会作为字符串读入作为执行的命令
-v: 绑定一个卷
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
--name="名称": 为容器指定一个名称
--link name:alias 添加链接到另一个容器,格式“--link容器名:别名”
可以直接执行 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 run 创建的容器
需要在 docker run 命令之后添加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"docker ps -a					#可以看出容器始终处于 UP,运行状态
CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS         PORTS     NAMES
2592d3fad0fb   centos:7   "/usr/bin/bash -c 'w…"   2 seconds ago    Up 2 seconds             peaceful_chateletdocker run -itd --name test1 centos:7 /bin/bash   #创建容器并持续运行容器#=======终止容器运行
格式:docker stop 容器的ID/名称
docker stop 2592d3fad0fbdocker ps -a

​​5.进入、退出容器

​​进入的容器状态一定要是运行状态

需要进入容器进行命令操作时,可以使用 docker exec 命令进入运行着的容器。格式:docker exec -it 容器ID/名称 /bin/bash
-i 选项表示让容器的输入保持打开;
-t 选项表示让 Docker 分配一个伪终端。docker start 2592d3fad0fb					#进入容器前,确保容器正在运行
docker exec -it 2592d3fad0fb /bin/bash
ls
exit				#退出容器后,容器仍在运行
docker ps -adocker run -it centos:7 bash      #不加 -d 选项会创建容器后直接进入容器,但是退出容器,容器也会停止

​​6.容器导出、导入

用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。#导出格式:docker export 容器ID/名称 > 文件名
docker export 2592d3fad0fb > centos7.tar#导入格式:cat 文件名 | docker import – 镜像名称:标签
cat centos7.tar | docker import - centos7:test			#导入后会生成镜像,但不会创建容器#容器导出
docker export 容器ID > 备份文件名#容器导入(会生成镜像,而不会创建容器)
cat 备份文件名 | docker import - 仓库名:镜像名例如:
docker export a4b09cb9c4d8 > nginx_up
docker export 3a198d9be5e2 > nginx_exitedcat nginx_up | docker import - nginx:web

7.删除容器

格式:docker rm [-f] 容器ID/名称
docker stop 2592d3fad0fb
docker rm 2592d3fad0fb				#删除已经终止状态的容器docker rm -f 2592d3fad0fb			#强制删除正在运行的容器docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash			#批量停止容器
docker ps -a | awk 'NR>=2{print $1}'| xargs docker stopdocker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash				#批量删除所有容器
docker ps -a | awk 'NR>=2{print $1}'| xargs docker rmdocker images | awk 'NR>=2{print "docker rmi "$3}' | bash			#批量删除镜像
docker images | grep none | awk '{print $3}' | xargs docker rmi		#删除none镜像docker rm $(docker ps -a -q)		#批量清理后台停止的容器docker rm 容器ID
例如:
docker rm a4b09cb9c4d8
//批量删除容器
docker ps -a | awk '{print "docker rm "$1}' | bash
//强删
docker rm 3a198d9be5e2 -f

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

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

相关文章

无线测温产品在半导体制造项目的应用

摘 要&#xff1a;半导体被誉为“制造业的大脑”&#xff0c;在关系国家安全和国民经济命脉的主要行业和关键领域占据支配地位&#xff0c;是国民经济的重要支柱。 随着数字技术的发展和数字经济在国民经济中所占比重越来越高&#xff0c;半导体产业的重要性还会进一步提升。安…

C++QT教程3——手册4.11.1自带教程(笔记)——创建一个QT快速应用

文章目录 创建一个QT快速应用创建项目创建主视图添加应用逻辑为视图添加动画素材文件 参考文章 创建一个QT快速应用 本教程使用内置的QML类型&#xff0c;介绍了Qt Quick的基本概念。有关可以选择的用户界面选项的更多信息&#xff0c;请参阅用户界面。 本教程描述了如何使用…

部署mysql到win10电脑上

中间出现了很多问题&#xff0c; 记录一下 我这边是去官网下载的 &#xff0c;链接&#xff1a;https://dev.mysql.com/downloads/mysql/ 我这边选了不是最新版本的MySQL&#xff0c;因为第一次安装8.1.0版本的&#xff0c;死活运行不起来&#xff0c;直接卸载安重装了&#x…

常用的分布式计算引擎

记录一下&#xff0c;作为备忘。 常用的分布式计算引擎 多表关联的问题&#xff0c;由于NoSQL数据库主要用于海量存储和单表查询&#xff0c;一般都不支持join&#xff0c;需借助更上层的计算框架来实现多表关联&#xff0c;比如: 计算框架支持数据源执行效率Hive本地文件、…

后端项目打包上传服务器记录

后端项目打包上传服务器记录 文章目录 后端项目打包上传服务器记录1、项目打包2、jar包上传服务器 本文记录打包一个后端项目&#xff0c;上传公司服务器的过程。 1、项目打包 通过IDEA的插件进行打包&#xff1a; 打成一个jar包&#xff0c;jar包的位置在控制台可以看到。 2、…

ssm蜀都天香酒楼网站设计与实现

ssm蜀都天香酒楼的网站设计与实现028 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日常生活越来越离不开计算机和互联网技术。首…

selenium语法进阶+常用API

目录 浏览器操作 浏览器回退&#xff0c;前进 与刷新 浏览器窗口设置大小 浏览器设置宽高 浏览器窗口最大化 浏览器控制滚动条 信息打印 打印页面的标题和当前页面的URL 定位一组元素 鼠标和键盘事件 键盘 鼠标 下拉框操作 通过索引定位&#xff08;se…

【BASH】回顾与知识点梳理(三十二)

【BASH】回顾与知识点梳理 三十二 三十二. SELinux 初探32.1 什么是 SELinux当初设计的目标&#xff1a;避免资源的误用传统的文件权限与账号关系&#xff1a;自主式访问控制, DAC以政策规则订定特定进程读取特定文件&#xff1a;委任式访问控制, MAC 32.2 SELinux 的运作模式安…

安科瑞变电所运维平台在电力系统中应用分析

摘要&#xff1a;现代居民生活、工作对电力资源的需求量相对较多&#xff0c;给我国的电力产业带来了良好的发展机遇与挑战。探索电力系统基本构成&#xff0c; 将变电运维安全管理以及相应的设备维护工作系统性开展&#xff0c;能够根据项目实践工作要求&#xff0c;将满足要求…

C语言暑假刷题冲刺篇——day2

目录 一、选择题 二、编程题 &#x1f388;个人主页&#xff1a;库库的里昂 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏✨收录专栏&#xff1a;C语言每日一练 ✨其他专栏&#xff1a;代码小游戏C语言初阶&#x1f91d;希望作者的文章能对你…

最小生成树,prim算法

Prim算法和Kruskal算法都是用于解决最小生成树问题的经典算法&#xff0c;它们在不同情况下有不同的适用性和特点。 Prim算法&#xff1a; Prim算法是一种贪心算法&#xff0c;用于构建一个无向图的最小生成树。算法从一个初始节点开始&#xff0c;逐步添加与当前树连接且具有…

【自动电压调节器】无功功率控制的终端电压控制研究(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【加强管理】《别输在不懂管理上》学习记录,黄金41条

成功有时是很难效法的&#xff0c;但失败是可以避免的&#xff0c;从失败中吸取经验和教训才是管理者的必修课。释义&#xff1a; 图形含义&#x1f332;一级重要&#x1f340;二级重要&#x1f33f;三级主要&#x1f341;存在问题&#x1f33c;解决办法 1 不能从头管到脚 不…

【讨论】视频监控集中存储方案如何做?

视频监控集中存储是指将多个视频监控摄像头所捕捉到的视频信号集中存储于一个中央设备&#xff0c;这个中央设备可以是服务器、网络存储设备或其他专用设备。通过集中存储&#xff0c;可以避免因为存储设备分散而导致的管理不便和难以有效地管理和检索视频数据&#xff0c;同时…

RTT(RT-Thread)ADC设备(RTT保姆级介绍)

目录 ADC设备 前言 ADC相关参数说明 访问ADC设备 配置ADC设备 ADC实例 硬件设计 软件设计 ADC设备 前言 ADC(Analog-to-Digital Converter) 指模数转换器。是指将连续变化的模拟信号转换为离散的数字信号的器件。 对于ADC的详细介绍和在STM32中的裸机应用可参考以下…

pandas数据分析38——数据框表格拓展以及缩回对齐

案例背景 需求是这个样的&#xff1a; 把这个表格进行拓展。 代码实现&#xff1a; df pd.DataFrame(np.array([[1, 2, 3,4], [a,b, c,d], [小明,小红, 小马,小天]])) df 方法一&#xff1a;自定义函数&#xff1a; def expand_dataframe(df):m, n df.shapenew_df pd.Dat…

linux系统中设置服务开机自启动

1&#xff1a;背景描述 最近根据工作需要&#xff0c;需要服务实现开机自启动的效果&#xff0c;因为平时只使用过nohup的后台挂起操作&#xff0c;很少接触开机&#xff0c;镜像装机服务自启动的功能&#xff0c;因此&#xff0c;这里简单记录一下。 注意&#xff0c;开机自…

解锁数据潜力:信息抽取、数据增强与UIE的完美融合

解锁数据潜力&#xff1a;信息抽取、数据增强与UIE的完美融合 1.信息抽取&#xff08;Information Extraction&#xff09; 1.1 IE简介 信息抽取是 NLP 任务中非常常见的一种任务&#xff0c;其目的在于从一段自然文本中提取出我们想要的关键信息结构。 举例来讲&#xff0…

从NLP到聊天机器人

一、说明 今天&#xff0c;当打电话给银行或其他公司时&#xff0c;听到电话另一端的机器人向你打招呼是很常见的&#xff1a;“你好&#xff0c;我是你的数字助理。请问你的问题。是的&#xff0c;机器人现在不仅可以说人类语言&#xff0c;还可以用人类语言与用户互动。这是由…

windows权限维持—黄金白银票据隐藏用户远控RustDeskGotoHttp

windows权限维持—黄金白银票据&隐藏用户&远控&RustDesk&GotoHttp 1. 前置1.1. 初始问题1.1.1. 解决办法 2. 隐藏用户2.1. 工具原理2.2. 案例操作2.2.1. 单机添加用户2.2.1.1. 工具添加用户2.2.1.2. 工具查看隐藏用户2.2.1.3. 本地查看隐藏用户 2.2.2. 域内添加…