1. 首页 > IT综合教程 > 正文

it教程FG181-Docker容器技术基础

1. Docker概述

Docker是一种容器化技术,用于打包、分发和运行应用程序。它允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中,然后在任何环境中运行。Docker容器与虚拟机相比,具有启动速度快、资源占用少、隔离性好等优点。更多学习教程www.fgedu.net.cn

生产环境风哥建议:选择稳定的Docker版本,如Docker CE(社区版)的最新LTS版本,确保生产环境的稳定性。

2. Docker环境搭建

搭建Docker环境需要安装Docker Engine。

# 安装Docker(Ubuntu/Debian)
# 更新包索引
# 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版本
# 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

风哥风哥提示:Docker镜像采用分层存储,共享相同的层可以减少存储空间的使用。

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镜像的文本文件,包含了构建镜像所需的指令。

# 创建Dockerfile
# 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应用。

# 安装Docker Compose
# 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

生产环境风哥建议:使用Docker Compose或Kubernetes管理多容器应用,使用私有镜像仓库存储镜像,定期更新镜像以修复安全漏洞。

风哥风哥提示:Docker容器技术已经成为现代应用部署的标准方式,掌握Docker对于DevOps和云原生开发至关重要。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息