男生困境vs女生困境:心理学的深度对话,原来我们从未真正理解彼此!

核心内容摘要

所有的搜索结果-91n:解锁数字世界的无限可能
倾城之姿,镜头下的“推女郎”:解锁她与美的无限可能

224503:数字的低语,时代的脉搏

Docker基础操作——镜像与容器管理一镜像类1查看镜像2搜索镜像3拉取镜像4删除镜像5将镜像保存为文件6从文件加载镜像7给镜像起别名二容器类基础1创建容器2查看容器3启动容器4运行容器5停止容器6重启容器7进入容器8退出容器9删除容器10杀死容器三容器类进阶1导出容器2导入容器3查看容器详情4查看容器内进程5查看容器统计信息6容器和主机之间复制文件7查看容器访问日志8获取容器 PID9nsenter 方式进入容器10容器开机自启11查看端口映射

总结 系列介绍 本文是 《Docker实战入门与部署指南从核心概念到网络与数据管理》 系列的

本系列将从零开始带你系统性地学习 Docker 的核心概念、安装部署、容器管理、镜像制作、数据持久化与网络配置最终具备构建和运维容器化应用的能力。

⚠️ 该系列所有涉及的配置脚本、Dockerfile示例和离线安装包都可以私信博主免费获取。

系列篇章总览

初识Docker——概念与优势核心 理解Docker是什么它与传统虚拟机的本质区别以及为何要使用容器化技术。

环境准备与Docker安装核心 掌握在CentOS系统上搭建Docker运行环境从操作系统准备到Docker CE的安装、配置与优化。

Docker基础操作——镜像与容器管理核心 理解Docker是什么它与传统虚拟机的本质区别以及为何要使用容器化技术。

深入Docker架构——C/S模式解析核心 理解Docker客户端与守护进程如何协同工作这是掌握Docker运行原理和高级管理如远程连接的基础

自定义镜像制作——从Dockerfile到镜像核心 掌握制作自定义镜像的四种方式重点学习使用Dockerfile进行标准化、可复用的镜像构建。

数据持久化——Volume与Bind Mount核心解决容器内数据易失性问题学习如何通过Volume和绑定挂载实现数据的持久化存储与跨容器共享。

容器网络配置——从互联到自定义桥接核心 掌握容器间的通信方式学习默认Bridge、Host网络并最终通过自定义网络和Pipework实现容器与宿主机网络的无缝集成。

系列最终成果当你完整学完并实操本系列你将拥有✅ 扎实的Docker理论基础清晰理解容器、镜像、仓库等核心概念。

✅ 独立部署Docker环境的能力并完成常用配置优化如镜像加速。

✅ 熟练的容器与镜像管理技能能够进行日常的运维操作。

✅ 制作自定义业务镜像的能力为应用容器化打下基础。

✅ 解决数据持久化问题的方案确保应用数据安全。

✅ 配置复杂容器网络的能力实现容器内外的灵活通信。

真正实现 概念理解 → 环境搭建 → 日常操作 → 镜像定制 → 数据管理 → 网络配置一站式掌握Docker核心技能。

一镜像类镜像是 Docker 三大核心概念中最重要的自 Docker 诞生之日起镜像就是相关社区最为热门的关键词。

Docker 运行容器前需要本地存在对应的镜像如果镜像不存在Docker 会尝试先从默认镜像仓库下载用户也可以通过配置 使用自定义的镜像仓库1查看镜像字段说明REPOSITORY来源仓库TAG镜像标签表示版本仅标记不代表内容IMAGE ID唯一标识如果两个镜像的 ID 相同 说明它们实际上指向了同一 个镜像 只是具有不同标签名称而已CREATED最后更新时间latest - 最新的在生产环境中建议使用指定具体的版本SIZE镜像大小[roothadoop108 ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE tomcat

0-jdk8 56d6933de8642years ago 285MB nginx

24b6c621311b442years ago 142MB mysql

7-debian b5d7c63fe3392years ago 463MB mysql

0-debian 5557a1823e302years ago 602MB# 查看镜像包括隐藏镜像[roothadoop108 ~]# docker images -a# 查看指定镜像详细信息[roothadoop108 ~]# docker image inspect nginx:

1.

..[roothadoop108 ~]# docker image inspect -f nginx:

19sha256:f6d0b4767a6c466c178bf718f99bea0d3742b26679081e52dbf8e0c7c4c42d742搜索镜像搜索来源为 Docker Hubhttps://hub.docker.com国内访问比较慢可以配置镜像加速器/etc/docker/daemon.json# docker search 镜像名[roothadoop108 ~]# docker search centos3拉取镜像当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。

如果我们想预先下载这个镜像我们可以使用docker pull命令来下载它镜像较大时可从本地加载dockerload-icentos-

7.

5.

tar完整格式示例# 完整格式dockerpull registry.example.com:5000/company/project/app:v

1.

3# ↓↓↓ 分解 ↓↓↓# registry.example.com:5000 - 仓库地址可选默认docker.io# company/ - 用户名/组织名可选默认library# project/ - 项目名可选# app - 镜像名# :v

1.

3 - 标签可选默认:latest# docker pull 镜像[roothadoop108 ~]# docker pull centos:

7.

18044删除镜像如果删除的时候报错很可能是有容器使用了该镜像, 则需要先删除使用该镜像的容器, 才能删除该镜像.按标签删除# docker rmi 镜像标签[roothadoop108 ~]# docker rmi registry:latest按ID删除# docker rmi 镜像ID[roothadoop108 ~]# docker rmi 1de12428f6f4强制删除[roothadoop108 ~]# docker rmi -f registry:latest[roothadoop108 ~]# docker rmi -f 1de12428f6f4清理无用镜像这是最常见的“无用镜像”指没有标签的镜像none:none没有被任何容器引用的中间层镜像[roothadoop108 ~]# docker image prune -f5将镜像保存为文件# docker save 镜像 -o 文件名[roothadoop108 ~]# docker save -o centos:

7.

1804 save-centos-

5-

tar# 导出所有镜像dockerimages|awkNR1{print docker save,-o,save_$1_$

tar,$1:$2}|bash# 只导出特定镜像dockerimages|awkNR1 $1centos{print docker save,-o,save_$1_$

tar,$1:$2}|bash补充.需要bash的情况echo rm -rf file1 file2 | bash前面的命令只生成命令字符串bash负责解释和执行这些字符串6从文件加载镜像# docker load -i/--input/ 镜像文件[roothadoop108 ~]# docker load -i save-centos-

5-

tar[roothadoop108 ~]# docker load --input save-centos-

5-

tar[roothadoop108 ~]# docker load save-centos-

5-

tar7给镜像起别名每个 Docker 镜像都有一个唯一的IMAGE ID这是系统识别镜像的底层哈希值。

tag是镜像的“友好名字”通常用仓库名:标签的形式表示。

dockertag SOURCE_IMAGE[:TAG]TARGET_IMAGE[:TAG]docker tag不会复制镜像ID是一样的只是给镜像增加一个新的“名字/标签”。

[roothadoop108 ~]# docker tag lmc/volume:

0 cjm/volume:

0[roothadoop108 ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE cjm/volume

07aaffcf517362days ago 200MB lmc/volume

07aaffcf517362days ago 200MB二容器类基础容器是 Docker 的另一个核心概念。

简单来说容器是镜像的一个运行实例。

所不同的是镜像是静态的只读文件而容器带有运行时需要的可写文件层同时容器中的应用进程处于运行状态。

1创建容器参数说明--name给容器命名-h指定主机名-i交互模式-t分配伪终端/bin/bash容器启动后的默认进程需要进入容器里面操作的时候加上注意-i和-t通常一起使用-it如果启动的是/bin/bash这样的交互式程序没有-i选项会立即退出。

[roothadoop108 ~]# docker create -it -h hadoop102 --name centos-hadoop102 centos:

7.

1804 /bin/bash2查看容器参数说明默认查看运行中的容器-a查看所有状态的容器[roothadoop108 ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f168dcc0ea50 centos:

7.

1804/bin/bashAbout a minute ago Up57seconds centos-hadoop102[roothadoop108 ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 65fa701a56ea centos:

7.

1804ls28minutes ago Exited(

28minutes ago elated_chatelet 9fe21f5f826c centos:

7.

1804/bin/echo hello wo…29minutes ago Exited(

29minutes ago jovial_wiles3启动容器将已有容器变为Running状态默认为后台启动可以通过docker logs [NAMES]查看日志# docker start 容器名/容器ID[roothadoop108 ~]# docker start centos-hadoop102or[roothadoop108 ~]# docker start e1f59927b2354运行容器创建一个新容器并启动它说明检查本地是否存在指定的镜像不存在就从公有仓库下载利用镜像创建一个容器并启动该容器分配一个文件系统给容器并在只读的镜像层外面挂载一层可读写层docker run docker pull docker create docker start参数说明-d后台运行--name指定容器名称-h指定容器主机名-p-p 80:80指定端口映射宿主机端口 : 容器端口-p :80随机映射同-P-p

:

范围一对一映射-P随机端口映射-v目录挂载宿主机目录 : 容器目录-e设置环境变量-it IMAGE /bin/bash交互式运行服务型容器则无需使用如nginx、mysql、redis…运行 MySQL 容器[roothadoop108 ~]# docker run -d -p 3306:3306 --name firstmysql -e MYSQL_ROOT_PASSWORD000000 mysql:

7运行 Nginx 容器[roothadoop108 ~]# docker run -d --name nginx -P nginx:

24运行 CentOS 容器[roothadoop108 ~]# docker run -it -h hadoop102 --name centos-hadoop102 -d centos:

7.

1804 /bin/bash5停止容器停止指定容器docker stop [容器名/容器ID前六位][roothadoop108 ~]# docker stop firstmysqlor[roothadoop108 ~]# docker stop 76f780停止所有容器[roothadoop108 ~]# docker stop docker ps -qaor[roothadoop108 ~]# docker stop $(docker ps -qa)6重启容器docker restart [容器名/容器ID前六位][roothadoop108 ~]# docker restart firstmysql7进入容器在已经运行的容器中额外启动一个进程执行指定命令或进入交互终端不进入容器直接执行命令[roothadoop108 ~]# docker exec centos-hadoop102 hostnamehadoop102进入容器参数说明-i保持标准输入-t分配终端/bin/bash使用bash进程[roothadoop108 ~]# docker exec -it centos-hadoop102 /bin/bash8退出容器[rootbf2f501bb6e2 /]# exitexit[roothadoop108 ~]#9删除容器删除已经停止的容器[roothadoop108 ~]# docker rm 1b29d16017921b29d1601792删除运行状态的容器[roothadoop108 ~]# docker stop bf2f501bb6e2[roothadoop108 ~]# docker rm bf2f501bb6e2强制删除容器[roothadoop108 ~]# docker rm -f bf2f501bb6e2容器运行完成后自动删除[roothadoop108 ~]# docker run --rm centos:

7.

1804 /bin/echo hello world删除所有容器[roothadoop108 ~]# docker rm -f docker ps -qaor[roothadoop108 ~]# docker ps -qa | xargs docker rm -f10杀死容器docker stop和docker kill本质区别docker stop 容器名向 PID 1 发送SIGTERM等待一段时间默认 10 秒可通过docker stop -t 秒数 容器名调节如果进程还没退出再发送SIGKILLdocker kill 容器名直接发送SIGKILL不给任何清理机会进程立刻消失真实运维对比示例MySQLdocker stop mysql正常关闭数据一致下次启动快docker kill mysql正在写的数据直接中断可能触发 crash recovery启动变慢甚至损坏[roothadoop108 ~]# docker kill bf2f501bb6e2三容器类进阶1导出容器导出后为镜像文件docker export -o xxx.tar 容器名/docker export 容器名 xxx.tar[roothadoop108 ~]# docker export -o export-hadoop

tar hadoop1022导入容器[roothadoop108 ~]# docker import export-hadoop

tar export:hadoop102-

0sha256:f483ca3138e6d2ca21d39869b18ed63a2ef262d1689852c545e7439c634f2f20[roothadoop108 ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEexporthadoop102-

0 f483ca3138e64seconds ago 200MB3查看容器详情会以 json 格式返回包括容器 Id、创建时间、路径、状态、镜像、配置等在内的各项信息[roothadoop108 ~]# docker container inspect hadoop102[{Id:e368fb755e44e9c84caac208e5ec943ea46decebe17e58583f8371cd7427f3b4,Created:

T13:58:

3

871131584Z,Path:/bin/bash,Args:[],State:{Status:created,Running:false,Paused:false,Restarting:false,OOMKilled:false,Dead:false,Pid:0,ExitCode:0,Error:,StartedAt:

T00:00:00Z,FinishedAt:

T00:00:00Z},...4查看容器内进程容器必须是启动的状态这个子命令类似于 Linux 系统中的 top 命令 会打印出容器内的进程信息 包括 PID 、 用户、时间、命令等。

[roothadoop108 ~]# docker top hadoop102UIDPIDPPIDC STIME TTY TIME CMD root4273542715022:38 pts/0 00:00:00 /bin/bash5查看容器统计信息显示 CPU 、内存、存储、网络等使用情况的统计信息。

参数说明--no-stream禁用流统计只提取第一个结果[roothadoop108 ~]# docker stats --no-stream hadoop102CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS e368fb755e44 hadoop

1

00% 380KiB /

9

4MiB

04%

28kB / 0B

52MB / 0B16容器和主机之间复制文件容器不需要是 running也可以复制宿主机 → 容器docker cp 宿主机路径 容器名:容器路径容器 → 宿主机docker cp 容器名:容器路径 宿主机路径[roothadoop108 ~]# vim /opt/module/test.txt[roothadoop108 ~]# docker cp /opt/module/test.txt hadoop102:/opt[roothadoop108 ~]# docker exec hadoop102 cat /opt/test.txttest7查看容器访问日志参数说明默认显示最新的日志-f实时显示日志[roothadoop108 ~]# docker logs nginx8获取容器 PID参数说明-fformat格式化输出 的意思用来自定义docker inspect的输出而不是输出整个 JSON。

[roothadoop108 ~]# docker container inspect -f hadoop102542619nsenter 方式进入容器nsenter 直接进入另一个进程的命名空间相当于“隐形进入容器内核视角”与docker exec的区别docker exec是 Docker 命令启动一个新的进程在容器里nsenter是 Linux 命令不依赖 Docker API直接在宿主机通过 PID 进入容器命名空间参数说明-t指定你要进入的进程 ID-m进入该进程的挂载命名空间即文件系统视图和宿主机可能不同-u进入UTS 命名空间隔离主机名和域名-i进入进程间通信命名空间共享信号量、消息队列等-n进入该进程的网络命名空间获取容器内网络环境-p进入该进程的进程号命名空间/bin/bash在目标命名空间中启动交互式 bash方便你操作容器内部环境[roothadoop108 ~]# docker container inspect -f hadoop10254261[roothadoop108 ~]# nsenter -t 54261 -m -u -i -n -p /bin/bash[roote368fb755e44 /]#[roothadoop108 ~]# touch docker_in.sh[roothadoop108 ~]# chmod 755 docker_in.sh[roothadoop108 ~]# vim docker_in.sh#!/bin/bash# Use nsenter to access dockerdocker_in(){NAME_ID$1PID$(dockerinspect-f$NAME_ID)nsenter-t$PID-m-u-i-n-p/bin/bash}docker_in$1[roothadoop108 ~]# ./docker_in.sh mysqlroot9894fb3a1733:/#10容器开机自启方式一安全性较低操作底层文件容易出错获取容器 CONTAINER ID[roothadoop108 ~]# docker container inspect -f nginxccba48148195cd3087ea57a3fe17fd6b64b5be5f4fb3d13072ce0185e46daeb2修改容器配置文件# 获取>[roothadoop108 ~]# cat /etc/docker/daemon.json{registry-mirrors:[https://uzidjh9f.mirror.aliyuncs.com,https://registry.docker-cn.com,https://docker.m.daocloud.io],data-root:/opt/module/data/docker,exec-opts:[native.cgroupdriversystemd]}[roothadoop108 ~]# cd /opt/module/data/docker/containers/ccba48148195cd3087ea57a3fe17fd6b64b5be5f4fb3d13072ce0185e46daeb2[roothadoop108 ccba48148195cd3087ea57a3fe17fd6b64b5be5f4fb3d13072ce0185e46daeb2]# vim hostconfig.json方式二推荐创建容器的时候加上--restartalways策略异常退出正常退出Docker 重启no❌❌❌on-failure✅❌❌always✅✅✅unless-stopped✅✅❌手动停过[roothadoop108 ~]# docker run -it -d -p 80:80 --name nginx --restartalways nginx:

19 /bin/bash11查看端口映射[roothadoop108 ~]# docker port nginx

总结镜像管理四大核心查看镜像docker images / docker image inspect获取镜像docker search / docker pull / docker load删除镜像docker rmi / docker image prune导出镜像docker save / docker tag容器生命周期管理创建与启动docker create → docker start 或直接 docker run状态控制docker stop优雅 / docker kill强制进入容器docker exec -it常用 / nsenter备用清理容器docker rm -f $(docker ps -qa)批量

在线66m66成长模式视频-大陆46m成长模式-在线66m66成长模式视频-大陆46m成长模式应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123