本文提供了Docker部署资料的新手入门教程,涵盖了Docker的安装、镜像管理、容器管理、网络配置及存储管理等内容。通过详细步骤和示例,帮助读者掌握Docker的基本操作和应用部署。此外,文章还介绍了使用Docker部署一个简单的Web应用和数据库服务的方法,并提供了Docker Compose进行多容器部署的实战案例。Docker部署资料旨在帮助开发者轻松入门并熟练使用Docker。
Docker是一个开源的应用容器引擎,让开发者能够轻松地将应用及其依赖包打包为一个可移植的容器。这些容器可以在任何主流的Linux操作系统、物理机、虚拟机或云平台中运行。容器不仅完全使用沙箱机制,确保相互之间不产生接口,还提供了Dockerfile文件来定义容器的构建过程,从而自动化构建流程,无需手动安装和配置应用环境。
Docker具备以下显著优势:
1. 安装Docker
以下以Ubuntu为例,展示Docker的安装步骤:
# 更新包列表 sudo apt-get update # 安装Docker sudo apt-get install docker.io # 验证安装是否成功 sudo docker --version
2. 安装Docker Compose
Docker Compose是Docker的多容器应用定义工具,以下是安装步骤:
# 下载并安装Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 设置执行权限 sudo chmod +x /usr/local/bin/docker-compose # 验证安装 docker-compose --version
要使用Docker镜像,可以从Docker Hub或其他镜像仓库中拉取。以下是一些常用命令:
# 搜索镜像 docker search nginx # 从Docker Hub拉取镜像 docker pull nginx
Dockerfile文件定义了镜像的所有构建指令。以下是一个简单的Nginx镜像Dockerfile示例:
# 使用基础镜像 FROM nginx:latest # 设置工作目录 WORKDIR /usr/share/nginx/html # 复制文件到镜像 COPY index.html /usr/share/nginx/html/ # 暴露端口 EXPOSE 80 # 启动命令 CMD ["nginx", "-g", "daemon off;"]
使用以下命令构建镜像:
# 构建镜像 docker build -t test-nginx . # 列出镜像 docker images
使用docker run
命令启动容器:
# 启动容器 docker run -d -p 8080:80 --name my-nginx test-nginx
该命令将test-nginx
镜像启动为一个容器,并将容器的80端口映射到主机的8080端口。
使用docker run
命令启动容器,-d
参数表示后台运行:
# 启动容器 docker run -d --name my-nginx -p 8080:80 nginx # 停止容器 docker stop my-nginx
运行容器并查看容器日志:
# 启动容器 docker run -it --name my-ubuntu ubuntu:latest # 查看容器日志 docker logs my-ubuntu
进入正在运行的容器:
# 进入容器 docker exec -it my-nginx /bin/bash # 退出容器 exit
Docker提供了多种网络模式:
bridge
:默认模式,容器连接到Docker网络桥接设备。host
:容器网络直接连接到主机网络。none
:容器没有网络连接。container
:容器连接到另一个容器的网络栈。将容器的端口映射到主机端口:
# 映射端口 docker run -d -p 8080:80 --name my-nginx nginx
容器间通信示例:
# 启动两个容器 docker run -d --name web1 nginx docker run -d --name web2 nginx # 在web1容器中访问web2容器 docker exec -it web1 /bin/bash curl http://web2
创建自定义网络:
# 创建网络 docker network create my-net # 启动容器并连接到网络 docker run -d --name web1 --network my-net nginx docker run -d --name web2 --network my-net nginx
Docker支持多种存储驱动,如AUFS、overlay2、vfs等,这些驱动定义了如何将Docker文件系统与主机文件系统关联的方法。
数据卷是独立于容器生命周期的持久化数据存储,不受容器重启和删除的影响。以下为示例:
# 创建并启动容器,使用数据卷 docker run -d -v /data:/data --name my-data nginx # 创建数据卷 docker volume create my-volume
数据卷容器是专门用于持久化存储的容器,其他容器可以挂载数据卷容器中的数据卷。
# 启动数据卷容器 docker run -d --name data-volume nginx # 启动使用数据卷容器的容器 docker run -d --name web1 --volumes-from data-volume nginx
# 使用基础镜像 FROM nginx:latest # 设置工作目录 WORKDIR /usr/share/nginx/html # 复制文件到镜像 COPY index.html /usr/share/nginx/html/ # 暴露端口 EXPOSE 80 # 启动命令 CMD ["nginx", "-g", "daemon off;"]
<!DOCTYPE html> <html> <head> <title>My Web App</title> </head> <body> <h1>Welcome to My Web App</h1> </body> </html>
# 构建镜像 docker build -t my-web-app . # 运行容器 docker run -d -p 8080:80 --name my-web-app my-web-app
# 拉取镜像 docker pull postgres # 启动容器 docker run -e POSTGRES_PASSWORD=mysecretpassword -d --name my-postgres -p 5432:5432 postgres
# 进入容器 docker exec -it my-postgres /bin/bash # 使用psql命令行工具连接到数据库 psql -U postgres
version: '3' services: web: image: nginx:latest ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html db: image: postgres environment: POSTGRES_PASSWORD: mysecretpassword ports: - "5432:5432"
# 启动服务 docker-compose up -d # 查看服务状态 docker-compose ps
以上是使用Docker进行开发、部署和管理应用的基本步骤和示例。对于新手来说,熟练掌握这些技能将大大提升开发效率和应用的可移植性。如果需要进一步学习,可以参考m慕课网上的相关教程。