本文详细介绍了Docker的基础知识和安装方法,涵盖了Docker的优势、安装步骤以及常用命令。文中还提供了多个Docker项目实战案例,包括搭建Web应用环境、数据库环境和开发环境,旨在帮助读者深入了解和应用Docker项目实战。
Docker简介与安装 什么是DockerDocker是一种开源的容器化技术,它使得开发者能够在一致的、轻量级的、可移植的环境中开发、部署和运行应用程序。Docker的核心是一个称为容器的可执行软件单元,它包含了运行应用程序所需的所有库、依赖项和配置文件。
Docker的优势- 轻量级与可移植性:容器可以在各种硬件上轻松运行,无需考虑底层操作系统或硬件的具体细节。
- 快速部署:使用容器化技术,开发和运维团队可以更快地部署和更新应用程序。
- 资源利用率高:容器共享宿主机的操作系统内核,因此相比虚拟机,容器占用的资源更少。
- 环境一致性:从开发到测试、再到生产环境,容器能够保证一致的运行环境,减少了“但在我机器上运行得好好的”的问题。
- 易于维护和扩展:容器的轻量级特点使得它们易于复制、缩放和管理。
在Windows、macOS和Linux上安装Docker的方式有所不同,以下是安装指导:
在Windows上安装Docker
- 访问.docker.com并下载适用于Windows的Docker Desktop。
- 安装完成后,打开Docker Desktop应用程序。
- 如果你的系统是基于Windows 10,可能会有提示安装Hyper-V和容器功能,请按照安装指南进行操作。
在macOS上安装Docker
- 访问.docker.com并下载适用于Mac的Docker Desktop。
- 安装完成后,打开Docker Desktop应用程序。
在Linux上安装Docker
不同的Linux发行版安装Docker的方法略有不同,以下是以Ubuntu为例:
# 更新包列表
sudo apt-get update
# 安装必要的软件包,用于Docker的安装
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
# 添加Docker官方的GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 添加D מדובר的Docker官方的仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 再次更新包列表
sudo apt-get update
# 安装Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 验证Docker是否安装成功
sudo docker --version
对于其他Linux发行版,如CentOS、Fedora和Arch Linux,安装步骤如下:
CentOS
# 安装必要的软件包
sudo yum install -y yum-utils
# 设置Docker的yum仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io
# 启动并启用Docker
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装
sudo docker --version
Fedora
# 安装Docker
sudo dnf install docker-ce docker-ce-cli containerd.io
# 启动并启用Docker
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装
sudo docker --version
Arch Linux
# 安装Docker
sudo pacman -S docker
# 启动并启用Docker
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装
sudo docker --version
Docker的常用命令
以下是一些常用的Docker命令:
docker run
:运行一个新的容器实例。docker ps
:查看正在运行的容器。docker ps -a
:查看所有容器(包括停止的)。docker images
:查看本地镜像。docker rmi
:删除本地镜像。docker stop
:停止容器。docker rm
:删除容器。
例如,启动一个名为my_app
的容器:
docker run -d --name my_app nginx
Docker镜像管理
什么是Docker镜像
Docker镜像是一组文件的集合,其中包含应用程序及其运行所需的全部依赖项。当你启动一个容器时,Docker会从相应的镜像中读取这个集合,然后将镜像加载到内存中。
如何搜索和下载镜像Docker Hub是Docker官方提供的镜像仓库,包含了大量的镜像。你可以搜索并下载这些镜像。
搜索镜像
docker search nginx
下载镜像
docker pull nginx
下载完成后,可以使用docker images
命令查看镜像。
- 创建Dockerfile
# 使用官方的 Nginx 镜像作为基础镜像
FROM nginx:latest
# 将本地的index.html文件复制到镜像的指定位置
COPY index.html /usr/share/nginx/html/index.html
- 构建镜像
在包含Dockerfile的目录中执行:
docker build -t my-nginx .
- 运行容器
docker run -d --name my-nginx-container -p 8080:80 my-nginx
如何管理本地镜像
# 删除本地镜像
docker rmi my-nginx
# 列出本地镜像
docker images
# 更新本地镜像
docker pull my-nginx
Docker容器使用
什么是Docker容器
Docker容器是运行应用程序的环境,它基于Docker镜像。容器提供了进程隔离的能力,同时共享宿主机的操作系统内核,这使得容器轻量、快速且高效。
如何运行容器基础运行
docker run -d --name my_container nginx
使用卷挂载运行
docker run -d --name my_container -v /host/path:/container/path nginx
使用端口映射运行
docker run -d --name my_container -p 8080:80 nginx
如何管理和停止容器
查看容器
docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器
停止容器
docker stop my_container
删除容器
docker rm my_container
Docker项目实战案例
项目一:搭建Web应用环境
- 构建Dockerfile
FROM nginx:latest
COPY ./app /usr/share/nginx/html
- 构建镜像
docker build -t my-web-app .
- 运行容器
docker run -d --name my-web-app -p 8080:80 my-web-app
项目二:搭建数据库环境
- 构建Dockerfile
FROM mysql:latest
ENV MYSQL_ROOT_PASSWORD=root
ENV MYSQL_DATABASE=mydb
COPY ./init.sql /docker-entrypoint-initdb.d/init.sql
- 构建镜像
docker build -t my-mysql .
- 运行容器
docker run -d --name my-mysql -p 3306:3306 my-mysql
- 初始化数据库
-- init.sql
CREATE TABLE users (id INT, name VARCHAR(255));
INSERT INTO users (id, name) VALUES (1, 'Alice');
INSERT INTO users (id, name) VALUES (2, 'Bob');
项目三:搭建开发环境
- 构建Dockerfile
FROM ubuntu:latest
RUN apt-get update && apt-get install -y \
python3-pip \
python3-dev \
build-essential \
&& rm -rf /var/lib/apt/lists/*
COPY ./requirements.txt /app/requirements.txt
WORKDIR /app
RUN pip3 install -r requirements.txt
COPY . /app
- 构建镜像
docker build -t my-dev-env .
- 运行容器
docker run -it --name my-dev-env -v /host/path:/app my-dev-env /bin/bash
Docker网络与存储
Docker网络配置
默认网络
docker run -d --name my_container --network my_network my_image
自定义网络
docker network create my_network
查看网络
docker network ls
连接容器到网络
docker network connect my_network my_container
Docker存储配置
卷挂载
docker run -d --name my_container -v /host/path:/container/path my_image
数据卷容器
docker create --name my_data_container --volume /data my_image
弹性持久化卷
docker run -d --name my_container --mount type=volume,src=my_volume,dst=/container/path my_image
Docker最佳实践与调试技巧
Docker常用调试技巧
查看容器日志
docker logs my_container
进入容器
docker exec -it my_container /bin/bash
查看容器资源使用情况
docker stats my_container
镜像和容器清理
docker system prune # 删除所有未被使用的容器、网络、镜像和构建缓存
Docker项目的维护与更新
更新运行中的容器
docker pull my_image
docker stop my_container
docker rm my_container
docker run -d --name my_container my_image
使用Docker Compose管理多容器应用
- 创建docker-compose.yml
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
volumes:
- ./app:/usr/share/nginx/html
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mydb
volumes:
- my_db_data:/var/lib/mysql
volumes:
my_db_data:
- 启动服务
docker-compose up -d
- 停止服务
docker-compose down
以上是Docker的入门与初级教程,希望对你有所帮助。如果你想更深入地学习Docker,可以参考Docker官方文档,或是参加在线课程,如在慕课网上可以找到相关的课程。
共同学习,写下你的评论
评论加载中...
作者其他优质文章