Docker 学习(一)

embedded/2025/3/6 6:05:59/

一、Docker 核心概念

Docker 是一个开源的容器化平台,允许开发者将应用及其所有依赖(代码、运行时、系统工具、库等)打包成一个轻量级、可移植的“容器”,实现 一次构建,随处运行

1、容器(Container)

  • 轻量级、可执行的软件包,包含应用及其所有依赖(代码、运行时、系统工具、库等)。

  • 基于镜像运行,独立于宿主机操作系统,共享宿主内核。

2、镜像(Image)

  • 只读模板,用于创建容器

  • 由多层文件系统叠加而成(UnionFS),支持复用和增量更新。

3、仓库(Registry)

  • 存储和分发镜像的服务,如 Docker Hub(默认公共仓库)、私有仓库(Harbor)。

4、Docker 与 虚拟机 的比较

作为一种轻量级的虚拟化方式,Docker 在运行应用上跟传统的虚拟机方式相比具有如下 显著优势:
  • Docker 容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式(数分钟)要快得多;
  • Docker 容器对系统资源需求很少,一台主机上可以同时运行数千个
  • Docker 容器(在 IBM 服务器上已经实现了同时运行! OK 量级的容器实例);
  • Docker 通过类似 Git 设计理念的操作来方便用户获取、分发和更新应用镜像,存储复用,增量更新;
  • Docker 通过 Dockerfile 支持灵活的自动化创建和部署机制,以提高工作效率,并标准化流程

二、Docker 的安装配置

1、linux 安装(CentOS)

自己构建yum仓库源
# step 1: 安装必要的一些系统工具yum install -y yum-utils# Step 2: 添加阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# Step 3: 安装Dockeryum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# Step 4: 开启Docker服务
systemctl enable --now docker# Step 5:验证安装
docker version

2、配置国内镜像加速器

[root@centos ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.m.daocloud.io","https://hub-mirror.c.163.com","https://mirror.baidubce.com","https://docker.nju.edu.cn"]
}
[root@centos ~]# systemctl daemon-reload
[root@centos ~]# systemctl restart docker# 验证
[root@centos ~]# docker pull busybox    //拉取镜像
Using default tag: latest
latest: Pulling from library/busybox
Digest: sha256:498a000f370d8c37927118ed80afe8adc38d1edcbfc071627d17b25c88efcab0
Status: Image is up to date for busybox:latest
docker.io/library/busybox:latest
[root@centos ~]# docker images         //查看本地已有镜像的基本信息
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
busybox      latest    31311c5853a2   5 months ago   4.27MB
其中镜像的ID信息十分重要, 它唯一标识了镜像。
在使用镜像ID的时候, 一般可以使用该ID的前若干个字符组成的可区分串来替代完整的ID。

三 、Docker 核心命令

镜像管理

1、docker  images  ——查看本地镜像

2、docker  pull  ubuntu:latest ——拉取镜像

从稳定性上考虑,不要在生产环境中忽略镜像的标签信息或使用默认的latest 标记的镜像。

3、docker  rmi  <image_id>或TAG  ——删除镜像,加上 -f 便是强制删除

注意:当有该镜像创建的容器存在时, 镜像文件默认是无法被删除的。但是通常并不推荐使用-f参数来强制删除一个存在容器依赖的镜像。 正确的做法是,先删除依赖该镜像的所有容器, 再来删除镜像。

4、docker  tag  ubuntu:latest  myubuntu:latest ——为本地镜像任意添加新的标签

5、 docker  search  nginx  ——搜索官方仓库中的镜像

6、docker  build  -t  myapp:v1  . ——构建镜像

7、docker  save  myapp:v1  >  myapp.tar ——导出镜像

8、docker  load  <  myapp.tar ——从文件导入镜像

 

容器管理:

1、docker  run  web  /bin/echo  "hello , world !! " ——创建容器并输出字符串

当利用 docker  run 来创建并启动容器时, Docker 在后台运行的标准操作包括:

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

2、docker  run  -it  web  /bin/echo  "hello , world !! "  ——启动一个bash终端,允许用户进入交互

-t 选项让Docker 分配一个 伪终端 并绑定到容器的标准输入上,-i 则让容器的标准输入保持打开

3、docker  run  -d  --name  web  nginx ——启动容器(后端运行)

4、docker  exec  -it  web  /bin/bash —— 进入容器交互终端

5、docker  ps  -a ——查看所有容器(包括已停止)

6、docker  stop/pause  web ——停止/暂停容器

7、docker  start  web ——启动已停止的容器

8、docker  rm  web ——删除容器   docker  rm   `docker  ps  -aq` ——删除所有容器

9、docker  logs  web  ——查看容器日志,其他可通过--help 了解

10、docker  export  -o file.tar  name 或  docker  export  name  >  file.tar ——导出容器到 tar文件中。

11、docker  import  file.tar - name/ubuntu:18.04    ——导入容器

12、docker  cp web:/etc/nginx/nginx.conf  ./   ——从容器复制文件到宿主机


http://www.ppmy.cn/embedded/170413.html

相关文章

SpringBoot为什么要禁止循环依赖?

大家好&#xff0c;我是锋哥。今天分享关于【SpringBoot为什么要禁止循环依赖?】面试题。希望对大家有帮助&#xff1b; SpringBoot为什么要禁止循环依赖? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring Boot 和 Spring 框架之所以要避免循环依赖&#xf…

visual studio 2022中如何添加项目到解决方案中

在Visual Studio 2022中将现有项目添加到解决方案中&#xff0c;可按照以下步骤操作&#xff1a; ​打开解决方案资源管理器​ 在Visual Studio主界面中&#xff0c;通过菜单栏选择 ​视图 > 解决方案资源管理器&#xff0c;或直接使用快捷键打开该工具窗口。 ​右键添加现…

【长安大学】苹果手机/平板自动连接认证CHD-WIFI脚本(快捷指令)

背景&#xff1a; 前几天实在忍受不了CHD-WIFI动不动就断开&#xff0c;一天要重新连接&#xff0c;点登陆好几次。试了下在网上搜有没有CHD-WIFI的自动连接WIFI自动认证脚本&#xff0c;那样我就可以解放双手&#xff0c;随时用WIFI就行了&#xff0c;但是没有找到。于是我就…

华为hcie证书有什么作用?

新盟教育 专注华为认证培训十余年 为你提供认证一线资讯&#xff01; 在当今数字化飞速发展的时代&#xff0c;ICT行业对专业人才的需求日益增长。华为HCIE证书作为华为认证体系中的最高级别认证&#xff0c;无疑是众多IT从业者追求的目标。那么&#xff0c;华为HCIE证书到底有…

PHP之常用函数

在你有别的编程语言的基础下&#xff0c;你想学习PHP&#xff0c;可能要了解的一些关于常用函数的信息。 获取时间 //获取时间 后面跟自定义时间格式 echo date("Y-m-d H:i:s");删除变量 unset($a);判断变量是否存在 var_dump(isset($a));判断变量是否为null va…

springboot3.x下集成hsqldb数据库

springboot3.x下集成hsqldb数据库 本文使用目前最新的sringboot3.4.3 和HyperSQL 2.7.4演示 HSQLDB数据库简介 HSQLDB&#xff08;HyperSQL DataBase&#xff09;是一个开放源代码的JAVA数据库。 可以透过 jdbc driver 来存取, 支持 ANSI-92 标准的 SQL 语法, 而且他占的空…

Anolis服务器Arm64架构服务器配置(其他版本服务器解决方式思路一质)

Anolis服务器Arm64架构服务器配置 1.nginx配置1.1.尝试安装nginx1.2.资源准备1.2.1.查看服务器系统版本:1.2.2.下载依赖包:1.3.正式安装nginx1.3.1.下载nginx并上传服务器1.3.2.开始安装nginx1.4.防火墙配置1.4.1.直接关闭防火墙:不推荐,但省事1.4.2.命令介绍1.4.3.配置开启…

Guava Cache 中LocalCache的分段锁实现

以下是 Guava Cache 中 LocalCache 分段锁实现的核心流程图&#xff0c;使用 Mermaid 语法绘制。该流程图展示了 Segment 的初始化、缓存操作&#xff08;获取和写入&#xff09; 以及 并发控制机制。 #mermaid-svg-gYQ5DSpnmX1XYKdh {font-family:"trebuchet ms",ve…