docker
2013
年诞生,推荐单容器只运行一个程序或进程,形成一个分布式的应用模型。
总结下来就是:docker带来启动流程更快,运行效率较高、资源损耗较小,属于轻量级的服务。
docker的安装
推荐的一键化安装的脚本:
这个脚本很好的解决了安装过程中出现的很多问题,同时,配置了很多的镜像加速器,实现docker pull
的加速。
#!/bin/bash
Version="20.10.4-3.el7"
# 下载docker安装源
wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker
yum -y install docker-ce-$Version || echo -e ' 33[1;31m安装失败,请检查网络和yum源配置! 33[0m'
# 使用国内镜像加速
# 阿里云(需要登录账号分配地址)
# 网易云 https://vgunv6qp.mirror.aliyuncs.com
# 腾讯云 https://mirror.ccs.tencentyun.com
# 中科大 https://docker.mirrors.ustc.edu.cn
# docker中国 https://registry.docker-cn.com
mkdir -p /etc/docker
tee /etc/docker/daemon.json readme.txt
在此致敬阿里云,提供了镜像,为开发者节省了很多的时间。
所以,现在我们看到我的centos
拥有了阿里云的镜像,拥有了这么多常用的工具,我想要保存一份,供内部使用或者日后自己使用怎么办?barbor
很好的解决了这个问题。
现在演示怎么上传到harbor
的镜像仓库。
# 生成离线的镜像
docker save -o centos.tar.gz centos
# 查看
ll | grep centos
# 加载离线的镜像包
docker load -i centos.tar.gz
# 上传镜像打标签
docker tag centos:latest xxxxx/test/centos:v1
docker push xxxx/test/centos:v1
上述的教程存在问题,打包和上传的其实是和官方的镜像一样的,坑!我研究发现:我们需要自己把容器整成新镜像,推送到
harbor
。
docker commit --author 'shigen' --message 'add tools and mirrors for centos' 89a shigen-centos:v1
# 查看所有的镜像,已经可以看到了我commit好的
docker images
现在就是推送了
# 重新命名一下标签
docker tag shigen-centos:v1 xxxxx/test/shigen-centos:v1
docker push xxxxx/test/shigen-centos:v1
在控制台中可以看到上传的进度。在harbor
管理页面验证一下:
可以看到上传成功了。
私有仓库的下载
在拉取之前,为了验证效果,我先把本地的全部删除了,包括镜像、容器。
docker images
# 确保本地没有任何的镜像和容器
ocker pull xxxxx/test/shigen-centos:v1
运行容器
docker run -itd --name shigen-centos-v1 -p 22:22 699 /bin/bash
docker exec -it 22f /bin/bash
cat ~/readme.txt
yum list installed | grep vim
可以看到可之前的一摸一样啦,OK,大功告成!
一些高级的玩法,或者视频教程,推荐:【老湿基】Docker 必知必会 (1): Harbor 容器镜像托管服务!CVE 自动扫描,上游自动缓存
其它的一些技巧
1. docker镜像开机自启
docker update xxx --restart=always
2. docker文件的添加
- 本机文件放到docker容器
docker filedir xxx:container_dir
- docker容器文件放到主机
docker cp 容器名:容器地址 本机地址
3. 查看docker的内存、网络等状况
docker stats
4. 将容器打包成镜像
docker commit -m "描述信息" -a "镜像作者" 容器名 镜像名:版本号
# 将镜像备份
docker save 镜像名:版本号 -o xxx.tar
# 加载镜像
docker load -i xxx.tar