开始我按照www.ruanyifeng.com/blog/2018/0…中的示例,试图基于node:8镜像创建一个自己的镜像,但在执行npm install的时候报错提示
npm ERR! network socket hang up于是开始寻求解决方法,按segmentfault.com/q/101000001…的思路试图在/etc/docker下的daemon.json中加入dns配置,但重启docker失败,日志信息如下:
尝试多种方法后最后按照blog.csdn.net/learner1984…里的方法在/etc/docker/daemon.json里面编辑{"storage-driver":"devicemapper"},发现docker可以启动成功但镜像及容器丢失。
于是重装docker,执行以下命令:
# 移除掉旧的版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
# 安装依赖包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# 添加源,使用了阿里云镜像
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 配置缓存
sudo yum makecache fast
# 安装最新稳定版本的docker
sudo yum install -y docker-ce
# 配置阿里云镜像源
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://dcirqgzi.mirror.aliyuncs.com"]
}
EOF
# 加入"dns": ["223.5.5.5","223.6.6.6"]
vim /etc/docker/daemon.json
sudo systemctl daemon-reload
sudo systemctl restart docker发现仍然启动失败,于是执行
sudo rm -rf /var/lib/docker提示
rm: 无法删除"/var/lib/docker/overlay2": 设备或资源忙执行
umount /var/lib/docker/overlay2
sudo rm -rf /var/lib/docker
sudo systemctl daemon-reload
sudo systemctl restart docker启动docker成功
随后打算部署私有仓库,发现192.168.2.3服务器上已运行registry 镜像,遂在192.168.2.2上面编辑/etc/docker/daemon.json,加入"insecure-registries": [ "192.168.2.3:5000"],重启docker。
执行docker login 192.168.2.3:5000登录私有仓库,执行docker tag [image_name:tag] 192.168.2.3:5000/[image_name:tag]将需要推送到私有仓库的本地镜像打上tag,执行docker push 192.168.2.3:5000/[image_name:tag]将镜像推送到私有仓库,执行docker rmi -f [image_ID]删除本地镜像文件,执行docker pull 192.168.2.3:5000/[image_name:tag]将私有仓库上的镜像拉到本地,测试成功。
在192.168.2.3的/etc/docker目录下同样新建daemon.json文件,配置同192.168.2.2,重启docker,192.168.2.3也可以正常使用私有仓库。
此次配置后,私有仓库服务器位于192.168.2.3:5000,192.168.2.2登录私有仓库无需用户认证,192.168.2.3登录私有仓库需要输入用户名和密码。