《工具记录》Docker 入门基础
1:简介
1.1:Docker
Docker 是一个开源的容器化平台,提供了一个轻量级的虚拟化解决方案。
相关概念:
- Image(镜像)
- 应用程序及其依赖环境的只读模板,是容器运行的基础
- 镜像通常由 Dockerfile 定义构建
- Container(容器)
- 镜像的一个运行实例,运行环境隔离
- Dockerfile
- 构建镜像的脚本文件,描述如何构建一个镜像
Docker 提供自带的网络模式和存储卷,以支持容器间的通信和数据持久化
1.2:Docker Compose
Docker Compose 是 Docker 的编排工具,用于定义和运行多个容器。
相关概念:
- Service(服务):某个镜像的容器运行实例,负责实现某个具体的功能
- Project(项目):由多个关联的 Service 组成,是一个完整的业务架构
- docker-compose.yml:构建 Project 的配置文件,用来定义一组相关联的 Service
2:Docker 命令
2.1:基本命令
启动 docker:
systemctl start docker
重启 docker:
systemctl restart docker
查看命令帮助:
docker --help
查看版本:
docker -v
2.2:image 相关
2.2.1:常见格式
查看帮助:
docker image --help
查看本地镜像列表:
docker image ls
docker images
拉取镜像:
docker image pull <name>[:tag]
docker pull <name>[:tag]
删除本地镜像:
docker image rm <id|name>
docker rmi <id|name>
2.2.2:常用示例
1 | # 查看本地镜像列表 |
2.3:container 相关
2.3.1:常见格式
查看帮助:
docker container --help
列出所有运行中的容器:
docker container ps
docker container ls
docker ps
列出所有的容器:
docker ps -a
创建新的容器并启动:
docker container run [option] <image> [command]
docker run [option] <image> [command]
启动已存在的容器:
docker container start <id|name>
docker start <id|name>
将数据从容器复制到宿主机:
docker container cp <container id>:<container path> <host path>
docker cp <container id>:<container path> <host path>
将数据从宿主机复制到容器:
docker cp <host path> <container id>:<container path>
进入一个已经运行的容器内部:
docker container exec -it <id|name> /bin/bash
docker exec -it <id|name> /bin/bash
docker exec -it <id|name> /bin/sh
停止容器:
docker container stop <id|name>
docker stop <id|name>
删除容器:
docker container rm <id|name>
docker rm <id|name>
2.3.2:选项介绍
1 | docker ps [option] |
1 | docker run [option] <image> [command] |
2.3.3:常用示例
1 | # 列出所有运行中的容器 |
2.4:其他命令
查看所有的 Docker 卷:
docker volume ls
查看具体卷的信息:
docker volume inspect <volume name>
3:Docker Compose 命令
查看命令帮助:
docker-compose --help
查看版本:
docker-compose -v
启动项目,以后台模式运行:
docker-compose up -d
停止项目并删除相关容器、网络(不包括关联的匿名挂载卷):
docker-compose down
停止并删除相关所有资源,包括关联的匿名挂载卷:
docker-compose down -v
4:补充知识
4.1:Dockerfile 示例
定制镜像,必须指定一个基础镜像,在其上进行定制。
- 编辑 Dockerfile 文件
vim Dockerfile
- Dockerfile 文件编辑如下
1 | # 使用官方 Nginx 镜像作为基础 |
构建镜像
docker build -t my-nginx-image:1.0 .
验证定制的镜像
docker run -d -p 8086:80 --name my-nginx-test my-nginx-image:1.0
4.2:docker-compose.yml 示例
- 编辑 docker-compose.yml 文件
vim docker-compose.yml
- docker-compose.yml 文件编辑如下
1 | version: '3.8' |
- 启动项目
docker-compose up -d
- 访问 http://ip:8080 进行验证
- 停止项目,删除关联的匿名卷
docker-compose down -v
4.3:容器后台运行
如果想在 Docker 容器中分离当前终端而不影响容器的运行状态,可以使用以下快捷键。
快捷键:退出正在运行容器的交互式会话,同时保持容器继续后台运行
- 先按:Ctrl + P
- 再按:Ctrl + Q
4.4:Docker 挂载卷
要确保重要数据持久化,需要指定容器将重要数据保存到挂载卷中。
除了 docker run
,还可以通过以下方法挂载卷:
- 使用
docker create
配置并启动容器。 - 使用
docker-compose
管理服务和卷。 - 手动管理卷并绑定到容器。
- 在编排系统(如 Kubernetes)中配置和挂载卷。
选项 -v
和 --mount
都可以用来挂载卷到容器中:
-v
较为简洁且广泛使用--mount
提供了更强的灵活性,适用于更复杂的挂载配置
4.5:Docker pull 代理配置
docker pull
这个动作实际上是由 systemd 启动的 dockerd 执行,而 docker 本身只是向 dockerd 发送指令。proxychains docker pull
不能代理真正执行操作的 dockerd,所以不能用。
可以使用以下操作对 Docker pull 进行代理:
创建配置文件夹
mkdir -p /etc/systemd/system/docker.service.d/
编辑配置文件
vim /etc/systemd/system/docker.service.d/proxy.conf
- proxy.conf 文件配置如下
1 | [Service] |
重新加载守护进程配置
systemctl daemon-reload
重启服务
systemctl restart docker
以上代理配置只影响 Docker 守护进程本身的网络访问,不会自动影响容器内的网络。
4.6:Kali 安装 Docker & Docker Compose
Docker 安装:
apt update
apt install docker.io
Docker Compose 安装:
curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
5:其他
5.1:参考资料
《Docker:从入门到实践》:
https://yeasy.gitbook.io/docker_practice
《kali搭建vulhub漏洞靶场》:
https://www.freebuf.com/sectool/358063.html
《Debian 12 / Ubuntu 24.04 安装 Docker 以及 Docker Compose 教程》:
https://u.sb/debian-install-docker/
《Docker pull下载镜像时无法使用proxychains4的解决方案》:
https://blog.csdn.net/qq_43519779/article/details/122443563
《配置代理解决docker pull命令无法拉取镜像的问题》:
https://blog.tangwudi.com/technology/skill12219/
《Docker上手系列:Docker入门hello world》:
https://cloud.tencent.com/developer/article/1704514
《Docker方式启动tomcat,访问首页出现404错误》:
https://cloud.tencent.com/developer/article/1834280
人世几回伤往事,山形依旧枕寒流。
——《西塞山怀古》(唐)刘禹锡