【计算机常识】--docker入门+docker desktop的使用(一)
摘要
docker官网: Docker: Accelerated Container Application Development
docker desktop官网:http://hub.docker.com/
docker文档官网:Docker Docs
Docker是基于Go语言实现的云开源项目。
Docker的主要目标是:Build, Ship and Run Any App, Anywhere(构建,装载任何应用在任何地方),也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP及其运行环境能做到一次镜像,处处运行。
目录
摘要
解决的问题
1.docker--组成
2.Docker Desktop安装
3.docker--命令
3.1.帮助命令
3.2.镜像命令
3.3.容器命令
解决的问题
试想如下场景,是不是经常遇到?
运维/测试: 你的程序不能跑呀!
开发:这里能跑啊!!!
(1)环境不一致导致诸多困扰。换一台机器就要重来一次费时费力。
(2)扩缩容同样也是个棘手问题(因为需要同样的环境),移植非常麻烦。
于是有人在想能不能从根本上解决问题。软件带环境安装,也就是说安装的时候把原始环境一模一样地复制过来。
有个docker后,我们就可以把跑通的程序的源码+配置+环境+版本等统一打包成一个镜像问题。也就是说以前开发提交的只是一份源代码,但是现在变成了源码+配置+环境+依赖包等等。可以以搬家进行比喻。以前搬家要收拾自己的东西,打包、运输、解包,期间肯定会丢失很多东西。有了docker之后搬家就相当于是搬楼,整栋楼移植过去。
注:其实就类似于vmware虚拟机那样,既然虚拟机能把整个系统都打包,那这里把程序依赖打包自然不是什么大问题。


虚拟机到虚拟容器:
docker利用的是宿主机的内核,不需要加载操作系统os内核。当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较耗时耗资源的过程。
1.docker--组成
docker本身是一个容器运行载体、管理引擎。其组成包括如下三要素:
- 不可直接修改,需通过新镜像版本更新。
nginx:latest 镜像)。- 可创建、启动、停止、删除,资源隔离但共享主机内核。
nginx 镜像启动一个 Web 服务容器)。- 支持版本控制(通过标签区分镜像版本)。
ubuntu:20.04)。也就是说: 容器是运行在镜像里面的:
# 镜像 = 类(Class)class NginxImage: def __init__(self): self.code = \"nginx-1.25\" self.deps = [\"libc6\", \"openssl\"]# 容器 = 类的实例(Object)container1 = NginxImage() # 容器1container2 = NginxImage() # 容器2(同一镜像可创建多个容器)

Docker也是典型的Client-Server架构,后端是一个搜耦合架构,众多模块各司其职。docker运行的基本流程如下:
以下是 Docker 架构核心流程总结 的表格和说明,结合您提供的步骤整理而成:
Docker 核心架构与工作流程
docker run)。Docker Server 模块处理请求。Docker Engine。bridge、host 模式),通过 libcontainer 实现隔离。iptables/CNM 模型)。containerd(原为 libcontainer)。runc 启动容器进程,通过 cgroups 隔离资源。runc),提供命名空间、cgroups 等隔离功能。Network Driver 和 Exec Driver 调用,实现容器生命周期管理。
2.Docker Desktop安装
就是docker的可视化软件
2.1 下载及安装
进入Docker官网 (www.docker.com/) ,下载对应版本并安装

安装之前需要打开:

一般windows家庭版是没有Hyper-V的,我这里看网上教程配环境的时候一直出现错误,安装好像不需要这个,所以不管.
出现其他版本不是配的问题,可以自行在网上找教程,或者call me主页
安装完成之后。docker环境也就有了:

3.docker--命令
3.1.帮助命令
#查看概要信息docker info#查看docker整体帮助文档docker --help#查看docker命令帮助文档docker run/pull/…… --help
3.2.镜像命令
docker images
1.列出本地主机上已有的镜像

2.搜索某个镜像是否在镜像仓库
docker search xxx
3.下载镜像
从 Docker Registry(默认 Docker Hub)拉取(下载)指定的镜像到本地,存储到 /var/lib/docker(由 Graph Driver 管理)。
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
-
NAME:镜像名称(格式:[仓库地址/]用户名/镜像名,如nginx或alpine)。-
TAG:镜像标签(版本),默认为latest。-
DIGEST:镜像内容的哈希值(唯一标识,优先级高于TAG)。选项 说明 --all-tags/-a下载镜像的所有标签版本(慎用,可能拉取大量数据)。 --quiet/-q静默模式,仅输出镜像 ID。 --platform指定平台(如 linux/amd64或windows/arm64),多平台镜像时使用。
4.查看镜像/容器/数据卷所占的空间;盘点下鲸鱼装了多少东西了。
docker system df

#查看每个镜像占用了多cpu、内存、网络。docker stats #删除某个镜像,\"rmi\"即remove image。docker rmi xxx_imagename/image_id#将Docker镜像保存成tar包(镜像归档);docker load为其反操作。docker save/load
3.3.容器命令
以下是 Docker 容器核心命令总结,涵盖容器生命周期管理、操作、调试及资源控制等常用场景,按功能分类整理为表格和示例:
1. 容器生命周期管理
docker create--name, -it, -p, -vdocker create --name my-nginx nginx:latestdocker run-d(后台运行), -it(交互式), --rm(退出后删除), -p(端口映射)docker run -d -p 80:80 --name web nginxdocker start-a(附加输出)docker start webdocker stop-t(超时时间,默认 10s)docker stop webdocker restartstopdocker restart webdocker kill-s(指定信号)docker kill -s SIGKILL webdocker rm-f(强制删除运行中的容器), -v(同时删除卷)docker rm -f webdocker pause/unpause2. 容器操作与交互
docker exec-it(交互式), -e(环境变量)docker exec -it web bashdocker attach--sig-proxy(信号代理)docker attach webdocker cp-L(跟随符号链接)docker cp web:/etc/nginx/nginx.conf ./docker logs-f(实时跟踪), --tail N(显示最后 N 行), -t(时间戳)docker logs -f web3. 容器监控与资源管理
docker ps-a(显示所有容器), -q(仅显示 ID), --filter(过滤)docker ps -a --filter \"status=exited\"docker stats--no-stream(单次输出)docker stats webdocker topdocker top webdocker inspect--format(格式化输出)docker inspect --format=\'{{.NetworkSettings.IPAddress}}\' webdocker update--cpus, --memory, --restartdocker update --memory 512M web4. 容器网络与端口
docker portdocker port webdocker networkcreate/connect/disconnect/inspect)--driver(网络驱动)docker network create my-net5. 容器数据管理
docker volumecreate/ls/inspect/rm)--driver(卷驱动)docker volume create my-vol-v 或 --mount)-v /host/path:/container/path常用命令:
#列出正在运行的容器docker ps #另起一个终端在linux机器下执行,而不是在ubuntu中执行()。docker ps # 查看运行中的容器docker ps -a # 查看所有容器(包括已停止的)docker stats # 查看容器资源占用docker start/stop/restart 容器名/ID # 启动/停止/重启docker pause/unpause 容器名/ID # 暂停/恢复docker exec -it 容器名/ID /bin/bash # 进入运行中的容器docker logs -f 容器名/ID # 查看日志(实时)docker rm 容器名/ID # 删除已停止的容器docker rm -f 容器名/ID # 强制删除运行中的容器docker images # 列出本地镜像docker inspect 镜像名/ID # 查看镜像详细信息docker history 镜像名/ID # 查看镜像构建历史docker build -t 镜像名:标签 . # 根据当前目录的 Dockerfile 构建镜像docker rmi 镜像名/ID # 删除镜像docker prune # 清理未被使用的镜像
Docker Compose(需单独安装)

docker-compose up -d # 启动服务栈(根据 docker-compose.yml)docker-compose down # 停止并删除服务栈


