Docker 本质上就是一个将程序和环境打包并运行的工具软件
Client/Server 架构。Client 对应 Docker-cli, Server 对应 Docker daemon 工作流程: Docker-cli 会解析我们输入的 cmd 命令,然后调用 Docker daemon 守护进程提供的 RESTful API,守护进程收到命令后,会根据指令创建和管理各个容器。 再具体点,Docker Daemon 内部分为 Docker Server、Engine 两层。Docker Server 本质上就是个 HTTP 服务,负责对外提供操作容器和镜像的 api 接口,接收到 API 请求后,会分发任务给 Engine 层,Engine 层负责创建 Job,由 Job 实际执行各种工作。
- Namespace: 实现资源隔离
- Cgroups:限制一个进程组能够使用的资源上限,包括 CPU、内存、磁盘、网络带宽等等
- 容器镜像(rootfs):将运行环境打包成镜像,从而避免环境问题导致应用无法运行
Docker 解决的是一个容器的部署问题, Docker Compose 解决的是多个容器组成的一套服务的部署问题, Docker Swarm 解决的是多个容器组成的一套服务在多台服务器上的部署问题, k8s 则是 Docker Swarm 的竞品,在更高维度上兼容了 Docker 容器,实现了容器编排调度
[docker]
1.卸载老版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.添加包管理
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 若失败,则使用阿里云镜像
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Centos7)
yum makecache fast
# Centos8)
dnf makecache3.安装
sudo yum install docker-ce docker-ce-cli containerd.io -y
# 可以查看并安装指定版本
yum list docker-ce --showduplicates | sort -r #查看版本
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io #安装指定版本4.常用命令
# 启动服务
sudo systemctl start docker
# 设置开机启动
sudo systemctl enable docker
# 重载配置
sudo systemctl daemon-reload
# 重启服务
systemctl restart docker
# 查看当前使用的镜像源
docker info|grep Mirrors -A 1[docker-compose]
sudo 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安装脚本
#!/bin/bash
## 需要切换到root下
yum install yum-utils device-mapper-persistent-data lvm2 -y
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce -y
# 镜像加速
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-EOF
{
"registry-mirrors": [
"https://dockerproxy.com",
]
}
EOF
systemctl daemon-reload
systemctl enable docker
systemctl start docker
# 安装docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://pb84l2li.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
-d
后台运行
--name=定义服务名称
-p 5800:5800
端口映射,宿主机端口:容器端口
--shm-size 1g
设置共享内存大小
-e DISPLAY_WIDTH=1366
设置环境变量
--privileged=true
享有特权
# NGINX服务
FROM ubuntu
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nginx
COPY index.html /var/www/html
ENTRYPOINT ["/usr/bin/nginx", "-g", "daemon off;"]
EXPOSE 80
- FROM
一般除了注释会放到第一行, 表示该镜像的基础镜像
- MAINTAINER
标识维护人的信息, 可以后面添加维护者的名称
- RUN
执行一条命令
- COPY
进行文件的拷贝
- ENTRYPOINT
标识命令文件的入点
- EXPOSE
标识暴露的端口