docker折腾记录

240 阅读2分钟

开始我按照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登录私有仓库需要输入用户名和密码。