ubuntu 16.04从零开始搭建docker私有仓库

本文从一个干净的ubuntu 16.04 64bit开始搭建docker私有仓库,用于在局域网存储和管理docker镜像。

目录

第一部分:安装Docker

第二部分: 镜像的操作

第三部分: 容器的操作

第四部分: 私有仓库的创建


第一部分:安装Docker

1. 更新一下源

sudo apt-get update

2. 安装docker

sudo apt-get install docker

 这里安装的是docker 1.5.1版本。

3. 启动docker

扫描二维码关注公众号,回复: 5541770 查看本文章
sudo systemctl start docker

4. 设置开机自启

sudo systemctl enable docker 

第二部分: 镜像的操作

查找并下载docker镜像(以centos为例)

# 查找centos镜像
docker search centos
# 下载centos镜像
sudo docker pull docker.io/centos:latest

使用docker search的时候,得到的结果,其实都省略了docker.io/前缀。下图是老版docker search得到的结果。所以这里,我们拉取镜像的时候,还是要把镜像的路径卸完整。docker.io/centos表示选择上图红框选中的镜像。而:latest表示选择最新的版本。

列出镜像

sudo docker image ls

删除镜像

sudo docker image rm 1e1148e4cc2c //image id

第三部分: 容器的操作

创建容器并进入

sudo docker run -t -i --name jsc-centos docker.io/centos:latest /bin/bash 
//根据centos:latest 创建一个名字为jsc-centos的docker实例
参数说明: 
        -t 分配一个伪终端并绑定到容器的标准输入
        -i 让容器的标准输入保持打开

 查看所有容器

sudo docker ps -a

启动容器

sudo docker start jsc-centos

查看当前运行的容器

sudo docker ps

停止容器

sudo docker stop jsc-centos

 

进入容器环境

sudo docker attach jsc-centos
## 其它方法
sudo docker exec -it 775c7c9ee1e1 /bin/bash
sudo docker exec -it jsc-centos /bin/bash

 我们可以在不进入容器环境的情况下, 向容器内部发送指令

sudo docker exec jsc-centos touch 123.txt

删除容器

将容器停止后, 可以删除容器

sudo docker rm jsc-centos

docker常用命令

  • cp:容器内外拷贝,类似scp

  • 将修改后的容器发布为镜像
# 将修改后的容器发布为镜像, `-a`表示作者, `-m`表示对本次修改的说明 
sudo docker commit -a "jsc" -m "add file 1.txt 2.txt" jsc-centos jsc-centos:0.1 
# 基于新建的镜像创建容器 
sudo docker run -t -i --name my-centos jsc-centos:0.1 /bin/bash

  •  查看镜像的信息
# 查看刚刚新建的镜像信息
sudo docker history jsc-centos:0.1
  • 查看容器内变动日志
sudo docker diff jsc-centos
  •  查看镜像和容器的详细信息
# 查看镜像的详细信息
sudo docker inspect jsc-centos:0.1 
# 查看容器的详细信息
sudo docker inspect jsc-centos

第四部分: 私有仓库的创建

1. 下载私有仓库注册服务器的镜像

sudo docker pull registry:latest

2. 创建一个注册服务器容器

sudo docker run -d -p 5000:5000 --name server-registry -v /tmp/registry:/tmp/registry docker.io/registry:latest

参数说明:
        -d容器在后端运行
        -p 5000:5000在容器的5000端口运行并映射到外部系统的5000端口
        --name server-registry容器命名为server-registry
        -v /tmp/registry /tmp/registry把宿主机的目录/tmp/registry挂载到容器目录/tmp/registry

 3. 为本地镜像添加标签,并将其归入本地仓库

  • 为本地镜像添加标签
sudo docker tag jsc-centos:0.1 localhost:5000/centos-test:0.1 在服务器本机
或者
sudo docker tag jsc-centos:0.1 192.168.8.40:5000/jsc-centos:0.1 在其他服务器
  • 将被标记的本地镜像, push到仓库
sudo docker push localhost:5000/centos-test:0.1
或者:
sudo docker push 192.168.8.40:5000/jsc-centos:0.1

4. 测试镜像是否可用

在192.168.8.197的服务器上执行docker pull操作

在root账户下完成:
 添加一项"insecure-registries":["192.168.8.40:5000"] 到/ect/docker/deamon.json的json块中。如下图所示。
然后
 systemctl restart docker
 exit
在micros用户下完成:
 sudo docker pull 192.168.8.40:5000/centos-test:0.1
    0.1: Pulling from centos-test
    1e74cf3ea8b1: Pull complete
    75e79d672a5b: Pull complete
    Digest: sha256:ac5a9f9d8d15e55d6c298563f0d3755fd9ec21c1f0affdb3ac272c1df9233f0e
    Status: Downloaded newer image for 192.168.8.40:5000/centos-test:0.1

# 解决安装过程中的问题:解决: Error response from daemon: Get https://192.168.8.40:5000/v2/: http: server gave HTTP response to HTTPS client
echo '{ "insecure-registries":["192.168.8.40:5000"] }' > /etc/docker/daemon.json

 如果在其他服务器上执行push操作,报错server gave http response to https client之类的,也是因为服务器不可信任的问题造成。都需要在执行docker push的服务器上修改/etc/docker/daemon.json,添加insecure-registries,然后从起docker服务。

 

至此,从一个全新的ubuntu安装docker,安装私有dock仓库的过程全部结束。对于参考本文的同学,请根据自己的情况进行适当删减。

猜你喜欢

转载自blog.csdn.net/jinking01/article/details/84989208
今日推荐