Docker简易教程
文章目录
- Docker 教程
- 安装 & 配置
- Docker 镜像管理命令
- Docker 容器管理命令
- Dockerfile
- Docker 网络模式
- Docker Compose 多容器编排
- Kubernetes与Docker容器的整合
- 参考
Docker 教程
[!NOTE]
本文主要叙述最常用的命令~
可用
--help
查看用法~对于本文中未提及 或 有误地方,请大家评论~
Docker 是一种软件部署技术,利用容器化技术为应用程序封装独立的运行环境,每个运行环境即为一个容器,承载容器运行的计算机称为宿主机。
- 镜像:是容器的模版
- 容器:是基于镜像运行的应用程序实例,进程,相互独立
- 仓库:存放和分享 Docker 镜像的场所,Docker Hub
Docker技术原理简述:
- ControlGroups:用于限制和隔离进程的资源使用,确保容器资源消耗不影响宿主或其它容器
- NameSpaces:用于隔离进程的资源视图,使得容器只能看到自己内部的进程ID、网络资源和文件目录,而看不到宿主机的
- Docker 容器本质上是一个特殊的进程,但进入容器内部后,其表现如同一个独立的操作系统
安装 & 配置
Ubuntu22.04
-
访问 get.docker.com 获取安装脚本
-
下载脚本
curl -fsSL https://get.docker.com -o install-docker.sh
-
安装
sudo sh install-docker.sh
-
修改配置文件
sudo vim /etc/docker/daemon.json
{"registry-mirrors": ["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror2.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc"] }
-
重启 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker 镜像管理命令
docker pull [registry_address/][namespace/]<image_name>[:tag]
:下载镜像registry_address
:Docker 仓库的注册表地址。docker.io
是 Docker Hub 官方仓库,可省略namespace
:命名空间,通常是作者或组织名称。library
是 Docker 官方仓库的命名空间,可省略image_name
:镜像的名称tag
:镜像的标签名,通常表示版本号。latest
表示最近版本,可省略
docker images
:列出本地镜像docker rmi <image_name/id>
:删除本地镜像-f
:强制删除正在运行
Docker 容器管理命令
-
docker run
:创建并运行容器,如果本地不存在指定镜像,会先自动拉取镜像-
-d
:让容器在后台执行,不阻塞当前终端窗口 -
-p <宿主机端口>:<容器内部端口>
:端口映射Docker 容器运行在独立的虚拟网络环境中,默认无法直接从宿主机访问容器内部网络,桥接模式
-
-e <K>:<V>
:环境变量,向容器内部传递环境变量,在 Docker Hub 镜像文档中查看 -
--name
:指定自定义、在宿主机上唯一的名称 -
-it
:让控制台进入容器内部,获得一个交互式的命令行环境docker run -it <image_name> /bin/bash
-
--rm
:当容器停止时,自动将其从宿主主机上删除。与-it
联用,用于临时调试场景 -
--restart
:配置容器停止时的重启行为always
:只要容器停止,就立即重启unless-stopped
:除非手动停止容器,否则都会尝试重启
-
-v
:将宿主机的文件目录与容器内的文件目录绑定,持久化-v <宿主机目录路径>:<容器内部目录路径>
:绑定挂载-v <卷名称>:<容器内部目录路径>
:命名卷挂载
-
-
docker ps
:查看正在运行的容器-a
:查看所有容器(正在运行、已停止)
-
docker rm <container_name/id>
:删除容器
容器的启停与管理:
-
docker start <container_name/id>
:重启一个已停止容器容器的配置信息与
docker run
时一致 -
docker create <container_name>
:只创建容器,并不启动,需要通过docker start
启动 -
docker stop <container_name/id>
:停止一个正在运行容器 -
docker inspect <container_name/id>
:查看容器详细配置信息
卷管理命令:
docker volume create <volume_name>
:创建挂在卷docker volume inspect <volume_name>
:查看详细信息docker volume ls
:列举已有卷docker volume rm <volume_name>
:删除卷docker volume prune -a
:删除未使用卷
容器内部操作与调试:
-
docker logs <container_name/id>
:查看容器运行日志-f
:滚动查看日志,实时刷新
-
docker exec <container_name/id> <cmd>
:在一个正在运行的容器内部执行 linux 命令docker exec -it <container_name/id> /bin/bash
Dockerfile
Dockerfile 是一个文本文件,指定制作 Docker 镜像的步骤和指令
基本结构与指令:
Docker 网络模式
- 桥接模式
- 主机模式
- 无网络模式
Docker Compose 多容器编排
docker-compose.yml
Kubernetes与Docker容器的整合
参考
- 30 分钟快速入门 Docker 教程
- 史上讲解最好的 Docker 教程,从入门到精通(建议收藏的教程)
- Docker 详解(保姆级安装+配置+使用教程)
- Docker快速入门上手教程(保姆式),含docker所有常用命令大全(详细)!
- 40分钟的Docker实战攻略,一期视频精通Docker