讲点故事
Docker 是什么?
- Docker 是一种目前主流的、基于 Linux namesplace、chroot、cgroup 等特性的容器技术,因此它适用于 Linux 操作系统 (win 平台 docker 基于 vbox 虚拟机来实现)
- 比较流行的容器技术还有 lxc、Rkt 等。而Docker 是针对应用的容器技术,lxc 是针对系统的容器技术
为什么需要 Docker
-
很久以前就听过,公司要上线一个产品,开发将写好的代码发给运维,运维部署后发现不能跑,于是双方开始扯皮:开发说我这儿运行正常,你那就不行了,这是你运维的锅。运维说这分明是你代码的问题,我这儿其他项目怎么都没问题,最后双方坐下来排查,是依赖环境的问题。。开发使用了对 android 开发友好的 Ubuntu,而运维使用了常用的 Centos,两个 Linux 发行版之间默认的 JDK 依赖版本不一样
-
而这种依赖环境的问题在生活中很常见,起初 Docker 就是来解决这种问题的
-
经过了长足的发展,现在的 Docker 已经不仅限于解决环境问题了,更给人们带来了一种一键启用的新项目部署方式
Docker 是针对应用的容器技术
-
比如我们要搭建一个 typecho 博客
-
在拥有 Docker 之前,我们需要按照 官网教程 这样搭建 LNAP 环境、安装 php 依赖、配置 mysql、下载源码才能搭建完成
-
在拥有 Docker 之后,我们只需从 Dockerhub 中拉取镜像、运行容器,即可享用你的 typecho,例如以下命令
docker pull 80x86/typecho # 拉取镜像 docker run -id --name typecho -p 80:80 80x86/typecho # 从镜像运行一个容器
Docker 中容器和镜像的概念
- 一个容器可以理解为一个功能不完全(以 chroot 方式运行) 的虚拟机
- 而一个镜像可以理解为,一个由
Dockerfile
定义的模板,通过模板即可一秒生成一个配置好的虚拟机来 Dockerfile
相当于软件的配置文件,写了镜像基于什么系统、需要使用哪些端口等等信息
开始实践
在连接了 ECS 的情况下,继续下列流程
安装 Docker 的依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# yum install 是使用包管理器 yum 安装后续的包
# -y 参数是直接确认,省略询问是否安装的流程
添加 Docker 的源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装 Docker
yum makecache && yum -y install docker-ce # 更新源并安装 docker
使用镜像加速器
# 使用 RAM 帐号,登入控制台,选择容器镜像服务中的镜像加速器,按照提示执行以下命令
mkdir -p /etc/docker # 创建 docker 配置目录
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://o4rhu51e.mirror.aliyuncs.com"]
}
EOF # 填入镜像加速器地址
systemctl enable --now docker # 启用 Docker 并设为开机自启
docker ps -a # 查看下正在运行的容器,这步是试着看下 docker 是否可以运行
systemctl status docker # 也可以通过 systemctl、service 命令来查看 docker 服务的运行状态
搭建 nginx
docker search nginx # 搜索关于 Nginx 的镜像
docker pull nginx:latest # 拉取 nginx 版本 latest 的镜像
docker images # 查看本地拉取的镜像
docker run --name nginx-test -p 8080:80 -d nginx # 从 nginx 镜像以守护模式创建一个叫 nginx-test 的容器,将 ECS 服务器的 8080 端口映射给容器的 80 端口
访问 ECS 公网 IP:8080 就可以看到 Nginx 的默认页面
结尾声明
本文已参加阿里云高校计划
阿里云高校计划,陪伴两千多所高校在校生云上实践、云上成长。在这里你可以领用免费的cpu资源,还可以参加免费训练营,实践提高:!https://developer.aliyun.com/adc/student/