从零搭建docker私有仓库

实验环境:

  • centos7 64位
  • ubuntu16.04 64位(用于测试私有仓库)

本文分为四个部分:

  • 第一部分: 安装docker
  • 第二部分: 镜像的操作
  • 第三部分: 容器的操作
  • 第四部分: 私有仓库的创建

第一部分: 安装docker

# 通过yum源安装docker
sudo yum -y install docker
# 启动docker
sudo systemctl start docker
# 开机自启
sudo systemctl enable docker

第二部分: 镜像的操作

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

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

列出镜像

sudo docker image ls

删除镜像

sudo docker image rm 4655e9997674

第三部分: 容器的操作

创建容器并进入

sudo docker run -t -i --name zhaoolee-centos docker.io/centos:latest /bin/bash

参数说明: -t分配一个伪终端并绑定到容器的标准输入,-i 让容器的标准输入保持打开

查看所有容器

sudo docker ps -a

启动容器

sudo docker start zhaoolee-centos

查看当前运行的容器

sudo docker ps

停止容器

sudo docker stop zhaoolee-centos

进入容器环境

sudo docker attach zhaoolee-centos

向容器内部发送指令

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

sudo docker exec zhaoolee-centos touch 123.txt

删除容器

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

sudo docker rm zhaoolee-centos

(选学)docker高级命令

交换文件 docker cp

通过docker cp命令, 可以实现容器与外部环境的文件交换 我们在docker容器内部新建一个123.txt文件, 将它拷贝到外部环境, 在外部环境新建一个456.txt拷贝到docker容器内部(如下图)

  • 即使容器处于未激活状态, 也是可以进行文件交换的

将修改后的容器发布为镜像

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

查看镜像的信息

# 查看刚刚新建的镜像信息
sudo docker history zhaoolee-centos:0.1

查看容器内变动日志

sudo docker diff zhaoolee-centos

查看镜像和容器的详细信息

# 查看镜像的详细信息
sudo docker inspect zhaoolee-centos:0.1 
# 查看容器的详细信息
sudo docker inspect zhaoolee-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 zhaoolee-centos:0.1 localhost:5000/zhaoolee-centos:0.1
  • 将被标记的本地镜像, push到仓库
sudo docker push localhost:5000/zhaoolee-centos:0.1

4.测试本地仓库的的可用性

在虚拟机内网,开启另一台ubuntu16.04虚拟机, unbutu16.04尝试从centos7获取刚刚创建的镜像zhaoolee-centos:0.1

sudo docker pull 192.168.214.156:5000/zhaoolee-centos:0.1

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

docker作为一种新兴的虚拟化方式,无论是执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效, docker本身支持类似git的操作, 让应用的迭代部署更为简单高效, 对于一些依赖非常复杂的应用, 我们可以直接下载它的docker版本, 开箱即用, 省时省力, 同时为运维人员创造了更多偷懒的机会~ 看到这里, 你已经了解了docker常用的功能,如果想用docker实战一下, 比如搭建一个属于自己的git站点, 可以继续阅读用gogs搭建属于自己的git网站

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu 16.04上使用dry管理和监控Docker容器

dry是一个简单但广泛的终端应用程序,用于与Docker容器及其映像交互。使用dry会删除执行常规Docker Engine命令时所涉及的重复,并且还提供了更原...

1356
来自专栏小狼的世界

创建自己的Docker基础镜像

Docker 提供了两种方法来创建基础镜像,一种是通过引入tar包的形式,另外一种是通过一个空白的镜像来一步一步构建,本文使用的是第二种方法,既FROM scr...

2092
来自专栏性能与架构

Docker容器跨主机互联

当两个Docker容器在同一主机时,可以通过--link命令让两者直接互相访问。 如果要跨主机实现容器互联,则往往需要容器知道其他物理主机的IP地址 利用Amb...

4224
来自专栏java闲聊

Windows10下Dcoker的安装、使用

1644
来自专栏北京马哥教育

Docker 从入门到实践

2975
来自专栏宝哥的专栏

Docker系列学习文章 - docker镜像基本操作(五)

| 导语上一篇文章我们讲解了如何简单运行一个Nginx、Mysql、Redis容器服务。我们运行的很顺利,因为我们就用了一条命令就搞定了。确实,docker就是...

1.3K25
来自专栏Laoqi's Linux运维专列

docker容器跨服务器的迁移方式export和save

1673
来自专栏北京马哥教育

5个你必须知道的Docker实用工具

原文:5 Docker Utilities You Should Know 作者:Shekhar Gulati 翻译:Vincent Docker社区已经创建了...

3619
来自专栏Java帮帮-微信公众号-技术文章全总结

三个技巧,将Docker镜像体积减小90%【面试+工作】

在构建Docker容器时,应该尽量想办法获得体积更小的镜像,因为传输和部署体积较小的镜像速度更快。

961
来自专栏宝哥的专栏

Docker系列学习文章 - 专业化定制镜像dockerfile(六)

| 导语上一篇我们跟大家讲了docker镜像,关于镜像的特点和作用我想大家都明白了。那么如何比较专业的去定制我们需要的镜像呢?用commit?不对,我们说过这个...

1.4K26

扫码关注云+社区