在Docker实战中,容器的运用是开发、测试和部署应用的核心部分。以下是Docker容器的关键操作与实际应用场景:
创建与启动容器
-
通过镜像创建并启动容器:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
例如,从官方Nginx镜像启动一个新容器,并映射宿主机80端口到容器80端口,同时让容器后台运行:
docker run -d -p 80:80 --name my-web nginx
-
查看正在运行的容器:
docker ps
若要查看所有容器(包括停止的)使用
-a
参数:docker ps -a
容器控制与管理
-
进入容器内部进行交互式操作:
docker exec -it CONTAINER_NAME /bin/bash
-
启动已停止的容器:
docker start CONTAINER_NAME_OR_ID
-
终止容器运行:
docker stop CONTAINER_NAME_OR_ID
-
重启容器:
docker restart CONTAINER_NAME_OR_ID
-
移除容器:
docker rm CONTAINER_NAME_OR_ID
网络配置与端口映射
-
容器间通信:可以设置自定义网络或使用默认网络来使容器之间互相访问。
docker network create my-network docker run --network=my-network -d --name container1 image1 docker run --network=my-network -d --name container2 image2
-
端口映射:如上所述
-p
参数用于将宿主机端口与容器内的端口建立映射关系。
数据卷管理
-
数据持久化:为了保存容器中的数据,可以使用数据卷(volume)。
docker run -v /host/path:/container/path IMAGE
-
创建和管理数据卷容器:可以创建专门的数据卷容器,并将其挂载给其他容器使用。
Docker Compose编排多容器应用
对于需要多个容器协同工作的复杂应用,可以使用Docker Compose进行容器的编排和服务之间的依赖管理。
-
编写docker-compose.yml文件,定义服务、网络、数据卷等资源。
-
启动/停止整个应用栈:
docker-compose up -d # 后台启动 docker-compose down # 停止并删除所有资源(不包括 volumes)
容器日志与监控
-
查看容器日志:
docker logs CONTAINER_NAME
-
监控容器资源使用情况:可以通过集成工具(如cAdvisor、Prometheus、Grafana)或者Docker自身的统计接口实现对容器CPU、内存等资源的实时监控。
安全实践
-
限制容器资源使用:使用
--cpus
,--memory
等参数限制容器可使用的系统资源。 -
安全策略配置:设置用户命名空间、SELinux标签以及其他安全相关的配置项,确保容器在安全的环境中运行。
综上,Docker容器在实际场景中能够帮助开发者快速构建隔离的环境,简化部署流程,提高资源利用率,并且通过容器编排工具实现微服务架构的轻松管理和扩展。