1 docker介绍
Docker是一个开源的应用容器引擎,用于自动化应用程序的部署为轻量级、便携的、自给自足的容器。自2013年推出以来,Docker已经成为容器化技术的代名词,广泛应用于开发、测试和部署环境,改变了传统软件开发和部署的方式。
Docker作为当今最流行的容器平台之一,已经成为现代软件开发和运维的关键组成部分。它不仅提高了应用的部署效率,也促进了DevOps文化的发展。随着容器化技术的不断成熟和发展,Docker将继续在简化软件部署、提升开发流程效率以及支持微服务架构方面发挥重要作用。
1.1 核心概念
-
容器(Container): 容器是Docker的核心概念,是一个轻量级的、可执行的软件包,包含了运行某个应用所需的一切:代码、运行时环境、库、环境变量和配置文件。
-
镜像(Image): 镜像是一个轻量级、只读的模板,用于创建容器。一个镜像可以基于另一个镜像进行扩展,并加入自己的软件配置。
-
Dockerfile: Dockerfile是一个文本文件,包含了一系列的指令和参数,用于定义如何构建一个Docker镜像。
-
仓库(Repository): Docker镜像可以存储在仓库中。Docker Hub是最著名的公共仓库,也可以使用私有仓库。
-
Docker引擎: Docker引擎是一个C/S架构的应用程序,负责创建和运行容器。
1.2 Docker的优势
-
快速、一致的部署: Docker容器确保应用在任何环境中都能以相同的方式运行。
-
隔离性和安全性: 每个容器都是独立运行的,互不干扰,提高了应用的安全性。
-
轻量级和资源高效: 容器共享宿主机的操作系统,消耗资源更少,启动更快。
-
可移植性和扩展性: 容器可以在任何支持Docker的环境中运行,易于扩展和复制。
-
易于管理和维护: Docker提供了一系列的工具和命令行接口,使容器的管理和维护变得简单。
1.3 Docker架构和组件
-
Docker守护进程(Docker Daemon): 运行在宿主机上,负责创建、运行和监控容器,以及构建和存储镜像。
-
Docker客户端(Docker Client): 用户与Docker守护进程交互的主要方式,通过命令行接口提供指令。
-
Docker Registry: 存储Docker镜像的服务,可以是公共的或私有的。
-
Docker Compose: 用于定义和运行多容器Docker应用程序的工具。
1.4 Docker的使用
-
开发环境: 在开发过程中,Docker提供了一致的环境,避免了“在我机器上能运行”的问题。
-
测试环境: 可以快速部署和撤销改动,加速测试和持续集成流程。
-
生产环境: 用于部署可扩展和高可用的应用,支持微服务架构。
1.5 安全性和网络
-
容器安全: Docker提供了容器隔离、资源限制和网络策略等安全特性。
-
网络配置: Docker支持多种网络配置,可以精细控制容器之间以及容器与外部网络的通信。
1.6 挑战和考虑
-
数据持久性: 容器通常是无状态的,处理容器中的数据持久化需要额外的策略,如挂载卷。
-
资源管理: 需要合理分配资源,避免资源争抢导致的性能问题。
-
环境差异: 虽然Docker的目标是一致性,但有时仍需考虑宿主机环境的差异。
-
监控和日志: 监控容器的性能和健康状态,管理日志是维护容器化应用的重要方面。
2 docker安装
2.1 安装docker软件
sudo yum install docker
2.2 启动dacker服务
sudo systemctl start docker.service
sudo systemctl enable docker.service
2.3 下载centos镜像
sudo docker pull centos
2.4 查看现有的centos镜像
sudo docker images centos
2.5 运行docker容器
sudo docker run -i -t centos /bin/bash
2.6 查看启动的镜像
sudo docker ps
2.7 docker安装软件
sudo docker run centos yum install -y wget
遇到IPv4 forwarding is disabled. Networking will not work的解决办法
(1)更改sysctl.conf文件
sudo vi /etc/sysctl.conf
添加如下代码:net.ipv4.ip_forward
(2)重启network服务
sudo systemctl restart network
(3)查看是否修改成功
# sysctl net.ipv4.ip_forward
如果返回为“net.ipv4.ip_forward = 1”则表示成功了