内容大纲
1. Docker简介
Docker是一个开源的容器化平台,它允许开发者将应用程序及其依赖打包到一个轻量级、可移植的容器中,然后在任何环境中运行。Docker的主要特点包括:
- 轻量级:容器共享宿主机内核,比虚拟机更轻量
- 可移植性:容器可以在任何支持Docker的环境中运行
- 隔离性:容器之间相互隔离,提供安全的运行环境
- 一致性:确保开发、测试和生产环境的一致性
- 快速部署:容器启动时间短,便于快速扩展
Docker已经成为现代应用开发和部署的标准工具,广泛应用于DevOps、微服务架构和持续集成/持续部署(CI/CD)流程中。更多学习教程www.fgedu.net.cn
2. Docker安装
2.1 Linux系统安装Docker
#
# 更新包管理器
#
apt update
#
# 安装依赖包
#
apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
#
# 添加Docker GPG密钥
#
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
#
# 添加Docker仓库
#
echo “deb [arch=$(dpkg –print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | tee /etc/apt/sources.list.d/docker.list > /dev/null
#
# 安装Docker
#
apt update && apt install -y docker-ce docker-ce-cli containerd.io
#
# 启动Docker服务
#
systemctl start docker
#
# 启用Docker服务自启动
#
systemctl enable docker
#
# 检查Docker版本
#
docker –version
$
Docker version 20.10.17, build 100c701
2.2 Windows系统安装Docker
1. 访问Docker官方网站:https://www.docker.com/products/docker-desktop
2. 下载Docker Desktop for Windows安装包
3. 运行安装程序,按照向导完成安装
4. 安装完成后,启动Docker Desktop
5. 验证Docker安装
C:\>
docker –version
C:\>
Docker version 20.10.17, build 100c701
2.3 macOS系统安装Docker
1. 访问Docker官方网站:https://www.docker.com/products/docker-desktop
2. 下载Docker Desktop for Mac安装包
3. 运行安装程序,按照向导完成安装
4. 安装完成后,启动Docker Desktop
5. 验证Docker安装
$
docker –version
$
Docker version 20.10.17, build 100c701
3. Docker基本概念
3.1 镜像(Image)
镜像是Docker容器的基础,它是一个只读的模板,包含了运行应用程序所需的所有文件和依赖。镜像可以从Docker Hub或其他镜像仓库获取,也可以通过Dockerfile构建。
3.2 容器(Container)
容器是镜像的运行实例,它是一个隔离的运行环境。容器可以被创建、启动、停止、删除等操作。每个容器都是相互隔离的,拥有自己的文件系统、网络和进程空间。
3.3 仓库(Repository)
仓库是存储镜像的地方,分为公开仓库和私有仓库。Docker Hub是最常用的公开仓库,包含了大量的官方和社区镜像。
3.4 Dockerfile
Dockerfile是一个文本文件,包含了构建Docker镜像的指令。通过执行Dockerfile中的指令,可以自动构建出所需的镜像。
4. Docker镜像管理
4.1 拉取镜像
$
# 拉取官方镜像
$
docker pull ubuntu:latest
$
# 拉取指定版本的镜像
$
docker pull ubuntu:20.04
4.2 查看镜像
$
# 查看本地镜像
$
docker images
$
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 27941809078c 2 weeks ago 72.8MB
ubuntu 20.04 f63181f19b2f 2 weeks ago 72.8MB
4.3 删除镜像
$
# 通过镜像ID删除镜像
$
docker rmi 27941809078c
$
# 通过镜像名删除镜像
$
docker rmi ubuntu:20.04
$
# 强制删除镜像
$
docker rmi -f ubuntu:latest
4.4 构建镜像
# 创建Dockerfile
FROM ubuntu:20.04
# 安装依赖
RUN apt update && apt install -y nginx
# 复制配置文件
COPY nginx.conf /etc/nginx/nginx.conf
# 暴露端口
EXPOSE 80
# 启动服务
CMD ["nginx", "-g", "daemon off;"]
$
# 构建镜像
$
docker build -t my-nginx .
$
# 查看构建的镜像
$
docker images
$
REPOSITORY TAG IMAGE ID CREATED SIZE
my-nginx latest 1a2b3c4d5e6f 1 minute ago 180MB
5. Docker容器管理
5.1 创建容器
$
# 创建并运行容器
$
docker run -d –name my-container -p 8080:80 my-nginx
$
# 查看运行中的容器
$
docker ps
$
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1234567890ab my-nginx “nginx -g ‘daemon of…” 1 minute ago Up 1 minute 0.0.0.0:8080->80/tcp my-container
5.2 管理容器
$
# 停止容器
$
docker stop my-container
$
# 启动容器
$
docker start my-container
$
# 重启容器
$
docker restart my-container
$
# 查看容器日志
$
docker logs my-container
$
# 进入容器
$
docker exec -it my-container /bin/bash
$
# 删除容器
$
docker rm my-container
$
# 强制删除运行中的容器
$
docker rm -f my-container
6. Docker网络
6.1 网络类型
- bridge:默认网络类型,容器之间通过桥接网络通信
- host:容器直接使用宿主机网络
- none:容器没有网络连接
- overlay:用于多节点Docker集群的网络
6.2 网络管理
$
# 查看网络
$
docker network ls
$
# 创建网络
$
docker network create my-network
$
# 运行容器时指定网络
$
docker run -d –name my-container –network my-network my-nginx
$
# 删除网络
$
docker network rm my-network
7. Docker数据卷
7.1 数据卷管理
$
# 创建数据卷
$
docker volume create my-volume
$
# 查看数据卷
$
docker volume ls
$
# 运行容器时挂载数据卷
$
docker run -d –name my-container -v my-volume:/app/data my-nginx
# 挂载主机目录
$
docker run -d –name my-container -v /host/path:/container/path my-nginx
$
# 删除数据卷
$
docker volume rm my-volume
7.2 数据卷备份
$
# 备份数据卷
$
docker run –rm -v my-volume:/source -v $(pwd):/backup alpine tar cvf /backup/volume-backup.tar /source
$
# 恢复数据卷
$
docker run –rm -v my-volume:/target -v $(pwd):/backup alpine tar xvf /backup/volume-backup.tar -C /target –strip 1
8. Docker最佳实践
生产环境建议
- 使用官方镜像作为基础镜像
- 最小化镜像大小,只安装必要的依赖
- 使用多阶段构建减少镜像大小
- 使用标签管理镜像版本
- 定期清理无用的容器和镜像
- 使用数据卷持久化数据
- 使用网络隔离容器
- 设置资源限制(CPU、内存)
- 使用Docker Compose管理多容器应用
- 使用Docker Swarm或Kubernetes进行容器编排
- 定期更新Docker版本和镜像
- 实施安全措施,如扫描镜像漏洞
风哥风哥提示:Docker是一种强大的容器化技术,建议深入学习Docker Compose和Kubernetes等相关工具,以构建更复杂的容器化应用。
学习交流加群风哥微信: itpux-com
学习交流加群风哥QQ113257174
更多学习教程公众号风哥教程itpux_com
author:www.itpux.com