docker+haror

docker

2013年诞生,推荐单容器只运行一个程序或进程,形成一个分布式的应用模型。

docker+haror_第1张图片

总结下来就是: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 '\033[1;31m安装失败,请检查网络和yum源配置!\033[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 <<-'EOF'
{
    "registry-mirrors": [
        "https://mirror.ccs.tencentyun.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://registry.docker-cn.com"
    ]
}
EOF

# 重新加载配置并启动docker
systemctl daemon-reload
systemctl enable --now docker

docker version && echo -e "\033[1;32m${Version}安装成功!\033[0m" || echo -e '\033[1;31m安装失败!\033[0m'

docker自己的镜像仓库

  1. 第三方的仓库存在网速的限制
  2. 可以存储自己的镜像

具体的安装步骤可以参考我的之前文章:mac harbor。

上传本地的镜像

docker+haror_第2张图片

私有仓库镜像的下载

docker+haror_第3张图片

实际的验证

上传本地的镜像

  • 在docker harbor上新建项目

docker+haror_第4张图片

  • 本地拉取centos的镜像,并进入容器,安装常用的工具
docker pull centos
# 建议这种方式启动,巨坑,centos容器会闪退
docker run -itd -p 22:22 --name my-centos centos /bin/bash

# 进入容器
docker exec -it xxx /bin/bash
  • 安装linux常用的工具
yum install -y  curl wget vim nano gzip tar net-tools

发现了如下的异常:基本确定是镜像源的问题。

Failed to set locale, defaulting to C.UTF-8
CentOS Linux 8 - AppStream                                                                                                     17  B/s |  38  B     00:02
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

于是找到了一篇文章很好的解决了这个问题:问题解决:Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist:…

基本上都是直接复制粘贴命令:

cd /etc/yum.repos.d/
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*

sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

yum clean all

yum makecache

docker+haror_第5张图片

这样子的就算成功了,继续执行我的命令。

docker+haror_第6张图片

很神速就安装完成了。不放心的可以再次验证一下:

 yum list installed | grep vim
 
 # 后期再次验证容器
 echo 'hello shigen-centos' > 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+haror_第7张图片

可以看到上传成功了。

私有仓库的下载

在拉取之前,为了验证效果,我先把本地的全部删除了,包括镜像、容器。

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

你可能感兴趣的:(docker,容器,运维)