开始我按照http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html中的示例,试图基于node:8镜像创建一个自己的镜像,但在执行npm install
的时候报错提示
npm ERR! network socket hang up
于是开始寻求解决方法,按https://segmentfault.com/q/1010000015910438/a-1020000015927660的思路试图在/etc/docker
下的daemon.json
中加入dns配置,但重启docker失败,日志信息如下:
![912394165580464ea5a923b192b748f1.png](https://i-blog.csdnimg.cn/blog_migrate/3ffd2076fb9575e8e2cc16560cf4325c.jpeg)
尝试多种方法后最后按照https://blog.csdn.net/learner198461/article/details/81198242里的方法在/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登录私有仓库需要输入用户名和密码。