真正应用docker来构建部署项目有点晚了, 最近正好有新环境尝试应用了一下, docker应用了几年也已经很成熟了,网上资料很多,稍微记录一下.
Docker的理念就是一次构建,随处运行. Build, Ship, and Run Your Applications Everywhere
在最新官网看到的这句话觉得很温暖, we work to make the developers’ lives easier because we’re developers too.
大意是:我们为了让开发者活得更轻松而工作, 因为我们也是开发者.
引自百度百科:
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
docker相关概念这篇文章也讲得很清晰 https://www.cnblogs.com/duguxiaobiao/p/10465602.html
核心概念感觉有必要抄来重复一下:
容器
容器是镜像的一个实例,是一个小型的运行时环境,比如一般是小型的linux环境(基于linux内核的小型环境),用java代码比喻就是:容器是一个类的实例对象,比如 Person 小明 = new Person(); Person就是一个模板,也是要给镜像
镜像
镜像是保存在镜像仓库中的,pull镜像,相当于 将镜像实例化成容器后部署在自己的环境中,用java来说就是一个类对象
仓库
仓库是用来保存多个注册仓库的,每个注册仓库中保存了不同的镜像image文件
说来惭愧, 拥抱docker有点晚了,公司还停留在使用虚拟机来部署的年代, 也不是说虚拟机不好, 对比起来确实是资源利用率比较低了, 尤其对于小企业来说。 个人理解docker的概念跟java虚拟机概念类似,是一个更广义的虚拟抽象,不仅只能跑java应用,只要你能弄成镜像塞进去,都能跑,纯粹一己之见,哈哈。闲话不多说,安装一下
以下都基于能联网的情况下进行,对于内网服务器没互联网环境的,就需要手动下载安装包和依赖了。
本次主机是centos7.6
引用阿里的yum镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum clean all
yum makecache fast
yum -y install docker-ce
就安装完了。
接下来修改一下docker默认镜像和容器在系统中的磁盘目录
# Docker默认的镜像和容器存储位置在/var/lib/docker中
# 修改docker.service文件
vim /lib/systemd/system/docker.serviceExecStart=/usr/bin/dockerd --graph=/Raid5App01/Docker --storage-driver=overlay --registry-mirror=https://s42tycw4.mirror.aliyuncs.com
# --graph=/Raid5App01/Docker:docker新的存储位置
# --storage-driver=overlay2 : 当前docker所使用的存储驱动 (存储驱动不改也会变成overlay2)
# --registry-mirror=https://s42tycw4.mirror.aliyuncs.com : docker镜像拉取地址systemctl daemon-reload
systemctl restart docker
# 查看docker信息
docker info
阿里云官网的教程部分无效,找不到镜像配置文件了。
实践
装个nginx尝试下
搜索镜像:docker search nginx
安装最新的版本:docker pull nginx:latest
查看镜像:docker images
创建容器(对象):docker run --name nginx-dxx -p 8080:80 -d nginx
--name nginx-dxx:容器名称。
-p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
-d nginx: 设置容器在在后台一直运行。
访问:
其他常规命令 docker ps:查看运行中的容器,docker ps -a 查看所有容器,包含停止的。其他还有如 启动,停止容器, docker start nginx, docker stop nginx.
本次小结先到此,只是入门皮毛,距离自动化运维部署不远了,哈哈。