1. Docker概述
Docker是一种容器化技术,用于打包、分发和运行应用程序。它允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中,然后在任何环境中运行。Docker容器与虚拟机相比,具有启动速度快、资源占用少、隔离性好等优点。更多学习教程www.fgedu.net.cn
2. Docker环境搭建
搭建Docker环境需要安装Docker Engine。
# 更新包索引
# 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=amd64 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 Engine
# apt update
# apt install -y docker-ce docker-ce-cli containerd.io
# 安装Docker(CentOS/RHEL)
# 安装依赖包
# yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker仓库
# yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker Engine
# yum install -y docker-ce docker-ce-cli containerd.io
# 启动Docker服务
# systemctl start docker
# systemctl enable docker
# 验证安装
# docker –version
Docker version 20.10.17, build 100c701
# 运行Hello World容器
# docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
3. Docker基础命令
Docker提供了一系列命令用于管理镜像、容器、网络等。学习交流加群风哥微信: itpux-com
# docker –version
# 查看Docker信息
# docker info
# 查看Docker帮助
# docker –help
# 查看具体命令帮助
# docker run –help
# 查看容器列表
# docker ps
# 查看所有容器(包括停止的)
# docker ps -a
# 查看镜像列表
# docker images
# 查看网络列表
# docker network ls
# 查看数据卷列表
# docker volume ls
4. Docker镜像管理
Docker镜像是容器的模板,包含了运行应用程序所需的所有文件和依赖项。
# docker pull ubuntu:20.04
# 拉取最新版本镜像
# docker pull nginx:latest
# 查看镜像详情
# docker inspect ubuntu:20.04
# 标记镜像
# docker tag ubuntu:20.04 myubuntu:1.0
# 推送镜像到仓库
# docker push myubuntu:1.0
# 删除镜像
# docker rmi ubuntu:20.04
# 删除所有未使用的镜像
# docker image prune -a
5. Docker容器管理
Docker容器是镜像的运行实例,用于运行应用程序。学习交流加群风哥QQ113257174
# docker run -d –name webserver -p 80:80 nginx
# 运行交互式容器
# docker run -it –name ubuntu-container ubuntu:20.04 /bin/bash
# 查看容器日志
# docker logs webserver
# 查看容器状态
# docker stats webserver
# 进入运行中的容器
# docker exec -it webserver /bin/bash
# 停止容器
# docker stop webserver
# 启动容器
# docker start webserver
# 重启容器
# docker restart webserver
# 删除容器
# docker rm webserver
# 删除所有停止的容器
# docker container prune
6. Docker网络
Docker提供了多种网络模式,用于容器之间的通信。更多学习教程公众号风哥教程itpux_com
# docker network ls
# 创建网络
# docker network create mynetwork
# 运行容器时指定网络
# docker run -d –name webserver –network mynetwork nginx
# 查看网络详情
# docker network inspect mynetwork
# 连接容器到网络
# docker network connect mynetwork another-container
# 断开容器与网络的连接
# docker network disconnect mynetwork another-container
# 删除网络
# docker network rm mynetwork
7. Docker数据卷
Docker数据卷用于持久化存储容器数据,防止数据丢失。
# docker volume create myvolume
# 查看数据卷列表
# docker volume ls
# 查看数据卷详情
# docker volume inspect myvolume
# 运行容器时挂载数据卷
# docker run -d –name mysql -v myvolume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password mysql:5.7
# 挂载主机目录到容器
# docker run -d –name webserver -v /host/path:/container/path nginx
# 删除数据卷
# docker volume rm myvolume
# 删除所有未使用的数据卷
# docker volume prune
8. Dockerfile构建镜像
Dockerfile是用于构建Docker镜像的文本文件,包含了构建镜像所需的指令。
# vi Dockerfile
FROM ubuntu:20.04
RUN apt update && apt install -y nginx
COPY index.html /var/www/html/
EXPOSE 80
CMD [“nginx”, “-g”, “daemon off;”]
# 创建index.html
# vi index.html
Hello, Docker!
# 构建镜像
# docker build -t mynginx:1.0 .
# 运行容器
# docker run -d –name mynginx -p 80:80 mynginx:1.0
# 访问容器
# curl http://fgedudb
Hello, Docker!
9. Docker Compose
Docker Compose用于定义和运行多容器Docker应用。
# curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# 验证安装
# docker-compose –version
Docker Compose version v1.29.2
# 创建docker-compose.yml
# vi docker-compose.yml
version: ‘3’
services:
web:
build: .
ports:
– “80:80”
volumes:
– ./html:/var/www/html
depends_on:
– db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: mydb
volumes:
– db-data:/var/lib/mysql
volumes:
db-data:
# 启动服务
# docker-compose up -d
# 查看服务状态
# docker-compose ps
# 停止服务
# docker-compose down
# 查看服务日志
# docker-compose logs
10. Docker最佳实践
Docker开发的最佳实践包括镜像优化、容器管理、安全等方面。author:www.itpux.com
# 使用 Alpine基础镜像减小镜像体积
FROM alpine:3.14
# 多层构建减小镜像体积
FROM node:14 as build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx:alpine
COPY –from=build /app/build /usr/share/nginx/html
EXPOSE 80
# 容器管理
# 使用健康检查
HEALTHCHECK –interval=30s –timeout=3s –start-period=5s –retries=3 \
CMD curl -f http://fgedudb/ || exit 1
# 安全最佳实践
# 以非root用户运行容器
FROM ubuntu:20.04
RUN useradd -ms /bin/bash appuser
USER appuser
# 定期更新镜像
# docker pull ubuntu:20.04
# 使用私有镜像仓库
# docker tag myapp:1.0 registry.fgedu.net.cn/myapp:1.0
# docker push registry.fgedu.net.cn/myapp:1.0
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
