什么是Docker 为什么需要用Docker
Docker 是一个容器管理工具,用于自动化应用程序的部署、扩展和管理。它利用容器技术将应用程序及其所有依赖项打包到一个轻量级、可移植的单元中,这个单元称为容器。与传统的虚拟机不同,容器不包含操作系统的完整副本,而是与主机共享操作系统内核,从而实现更轻量级、更高效的运行环境。 Docker 的核心组件包括:
- Docker Engine(基础环境) :用于运行和管理容器。主要由 Docker Daemon 和 Docker CLI 组成。Docker Daemon负责监听 Docker API 请求,并管理 Docker 容器、镜像、网络和存储等,Docker CLI 允许用户通过命令与 Docker Daemon 交互。
- Docker Registry(注册中心) :用于存储和分发镜像的中央存储库,例如 Docker Hub,Harbor。
- Docker Images(镜像) :容器的只读模板,包含了应用程序及其依赖项。
- Docker Container(容器) :镜像的运行实例,类似于虚拟机但更加轻量
所以,我们使用Docker可以更快速、高效搭建所需的项目环境,后期易于管理、拓展。
但是,docker也并不是那么完美,个别容器如果配置不合理,会造成一定的性能丢失,我们需要对其进行合理的编排。
举个例子🌰
我们可以Docker平台看成是一台手机,Engine是操作系统管理着docker的底层逻辑;Registry是应用代理设置,我们可以从默认的代理商(DockerHub)拉取我们所需要的应用,也可以自由更换。Images 是应用商店,所有下载(pull)下来的应用都会在这里,自己制作的应用也会放在这里,以便安装使用。Container是应用,我们安装(run)好的应用都会以一个服务启动。
如何搭建Docker
# 设置国内 Ali Docker 源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 保证是最新的 yum 源
sudo yum update -y
# 关闭防火墙(可选)
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# 安装需要的基本服务
yum install -y yum-utils device-mapper-persistent-data lvm2
# 安装docker
yum install -y docker-ce docker-ce-cli containerd.io
# 开启docker 并开机自启
systemctl start docker
systemctl enable docker
#重启服务
systemctl daemon-reload
systemctl restart docker
这样我们就搭建好了一个docker,我们来简单学习一下docker的基础命令用法
# 查看镜像列表
docker images
# 会得到下面的一个列表
# 意义分别是:镜像名、版本(latest表示最新版本)、镜像ID、创建日期、镜像大小
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab/gitlab-ce latest e2e712bc83b9 9 days ago 2.95GB
# 查看正在运行的容器(-a: 查看所有容器)
docker ps
# 会得到下面的一个列表
# 意义分别是:容器ID、镜像名、容器启动内命令、创建日期、容器启动状态、主机与容器绑定的端口、容器名称
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ab20638a4ca7 gitlab/gitlab-ce "/assets/wrapper" 4 days ago Up 3 days (healthy) 443/tcp, 0.0.0.0:10022->22/tcp, :::10022->22/tcp, 0.0.0.0:10800->80/tcp, :::10800->80/tcp gitlab
# 查询配置信息(主要用来获取容器或镜像的一些配置信息)
# xxxx 可以是一个容器或镜像的ID 和 名称(下同)
docker inspect xxxx
# 运行一个新镜像,成为容器(-d 后台运行,-n 容器名称,-v 挂载目录,-e 指定变量.命令很多可自行搜索,这里只例举个别)
docker run xxxx
# 停止一个容器
docker run xxxx
# 启动一个容器
docker stop xxxx
加速源
由于咱国内被丑国网络制裁,我们从dockerhub下载镜像很慢,甚至下不下来,所以我们需要添加加速代理
vim /etc/docker/daemon.json
然后添加内容
{
"registry-mirrors": ["https://dockerhub.icu"],
"insecure-registries": ["xxx.xxx:"]
"log-driver": "json-file",
"log-opts": {
"max-size": "1000m",
"max-file": "10"
}
}
registry-mirrors: 加速源,可以自行从上搜索,Docker加速
insecure-registries: [非必须]仓库,默认dockerhub,可自行搭建,例如 Harbor 点击查看教程
log-driver: 容器的日志驱动, 进入此目录 /var/lib/docker/containers/xxx(xxx指某个容器的ID),可查看到容器内的日志文件,一般为json.log结尾,为防止此文件过大,可限制。
log-opts: max-size: 单个日志文件最大内存, max-file: 日志文件数量