Docker学习笔记
#复习/Linux/docker
常用命令
在Linux系统中,Docker镜像站的配置文件路径是什么?==/etc/docker/daemon.json==
+++
修改完Linux系统的Docker镜像站配置后,需要用什么命令重启服务?==sudo systemctl restart docker==
+++
在Windows/Mac的Docker Desktop中,镜像站配置应添加在哪个配置文件中?::Docker Engine配置文件
从仓库下载镜像的命令是什么?::docker pull <镜像名>
+++
列出所有本地镜像的命令是什么?::docker images
+++
删除一个本地镜像的命令是什么?::docker rmi <镜像名/ID>
+++
Docker镜像的完整命名格式是什么?::registry/namespace/repository:tag
+++
在镜像命名中,什么标签可以省略不写?::latest
+++
在docker中删除镜像是否影响当前的容器::影响容器的重启和新建,不影响当前运行的容器
如何查看docker本身的配置信息::docker info
容器管理
创建并运行容器的命令是什么?后台运行加什么::docker run -d
+++
查看所有容器(包括已停止的)的命令是什么?::docker ps -a 注意ps看不见停止的
+++
停止一个正在运行的容器的命令是什么?::docker stop <容器ID/名称>
+++
删除一个已停止的容器的命令是什么?怎么强制删除::docker rm <容器ID/名称> -f
+++
将容器内部端口8080映射到宿主机端口80的参数写法是什么?::-p 80:8080
+++
数据持久化方案
如何运行nginx的时候后台运行,映射端口,并且目录绑定挂载::docker run -d -p 80:80 -v / www/halo:/usr/share/nginx/html -nginx
创建一个名为 my-data的命名卷的命令是什么,如何查看所在的目录::docker volume create my-data. docker volume inspect my-data
+++
列出所有卷的命令,删除卷,删除所有没在使用的卷的命令::docker volume list . docker volume rm nginx . docker volume prune -a
run的其他参数
环境变量
如何在运行数据库容器的时候传递环境变量
???
docker run -d
-p 43333:27017
-e MONGO_INITDB_ROOT_USERNAME=admini
-e MONGO_INITDB_ROOT_PASSWORD=Admin14789
mongo
+++
配置重启策略两个重启::docker run -d --restart always nginx.一直重启. --restart unless-stopped
如何查看当时创建容器的配置::docker inspect id
docker run和create命令的区别是什么::create只创建不启动
docker如何追踪查看日志:: docker logs -f
进入一个正在运行的容器内部并打开bash的命令是什么?如何退出?::docker exec -it [容器ID] bash。 exit.
容器内安装程序需要做什么?::
docker原理
Docker 是一种基于容器技术的虚拟化平台,其核心原理是利用 Linux 内核的命名空间(Namespaces)和控制组(Cgroups)等特性,实现进程级别的隔离与资源限制。
命名空间(Namespaces):为容器提供独立的系统视图,包括进程 ID、网络、挂载点、用户、主机名等,使得每个容器看起来像是运行在独立的操作系统中。
控制组(Cgroups):用于限制、记录和隔离进程组使用的物理资源(如 CPU、内存、磁盘 I/O 等),确保容器不会耗尽宿主机资源。
镜像分层与联合文件系统(UnionFS):Docker 镜像采用分层结构,每一层代表一个文件系统的增量变更。通过联合挂载技术(如 overlay2),将多个只读层和一个可写层合并成一个完整的文件系统供容器使用,提高存储效率和启动速度。
容器 = 镜像 + 可写层 + 运行时环境:容器本质上是在镜像基础上添加一个可写层,并在其上运行指定的进程。
Docker 通过这些机制实现了轻量级、可移植、快速启动的应用封装与部署方式。
每个容器看起来像是独立的Linux系统
Docker镜像制作
如何打包docker镜像,后面用的再学吧.现在记得大体就是在项目里创建一个Dockerfile文件,里面填上所需要的镜像,还有命令等.打包上传::1
Docker网络
桥接模式
- 容器默认连接到的网络模式是什么?::桥接模式(Bridge)。
- 创建自定义桥接网络的命令是什么?==docker network create [网络名]==
+++
docker容器间不可以互相访问,通过==创建子网==,不需要配置ip就可以直接通讯
+++
host模式
docker使用host模式的命令.使用后的ip是多少::docker run -d --network host nginx. 使用host后是共享了宿主机的内部ip
docker看所有的子网命令,删除命令::list .rm
docker compose.多容器编排
Docker Compose的作用是什么?::通过一个YAML文件来定义和运行多个关联的容器。
root@iZm5e0a4bge4lf075lkds7Z halo1]# cat docker-compose.yaml
services:
halo:
image: registry.fit2cloud.com/halo/halo:2.22
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./halo2:/root/.halo2
ports:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
environment:
# JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
- JVM_OPTS=-Xmx256m -Xms256m
command:
- --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
- --spring.r2dbc.username=halo
# PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
- --spring.r2dbc.password=
- --spring.sql.init.platform=postgresql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://47.104.162.147
halodb:
image: postgres:15.4
restart: on-failure:3
networks:
halo_network:
volumes:
- ./db:/var/lib/postgresql/data
healthcheck:
test: [ "CMD", "pg_isready" ]
interval: 10s
timeout: 5s
retries: 5
environment:
- POSTGRES_PASSWORD=
- POSTGRES_USER=halo
- POSTGRES_DB=halo
- PGUSER=halo
networks:
halo_network:
docker-compose停止容器和停止并删除容器命令:stop down