Docker构建私有registry(仓库)

  1. #1 启动registry
  2. [root@docker ~]# docker run -d -p 5000:5000 --restart=always --name registry -v /opt/registry:/var/lib/registry registry
  3. # --restart=always 不管是docker服务重启还是服务器重启,只要docker服务起来,就帮我把这个容器启动
  4. #2 修改配置文件
  5. [root@docker lamp]# vim /etc/docker/daemon.json
  6. {
  7. "registry-mirrors": ["https://yown2gka.mirror.aliyuncs.com"],
  8. "insecure-registries": ["10.0.0.100:5000"]
  9. }
  10. [root@docker docker]# systemctl restart docker
  11. #3 制作本地镜像并push到registry
  12. # 必须要先打标记,才能push
  13. [root@docker ~]# docker tag nginx 10.0.0.100:5000/alnk/nginx:v1.0
  14. [root@docker ~]# docker images
  15. REPOSITORY TAG IMAGE ID CREATED SIZE
  16. 10.0.0.100:5000/alnk/nginx v1.0 f7bb5701a33c 11 days ago 126MB
  17. nginx latest f7bb5701a33c 11 days ago 126MB
  18. [root@docker ~]# docker push 10.0.0.100:5000/alnk/nginx:v1.0
  19. #4 异地进行pull镜像(另外一台主机测试)
  20. [root@docker02 ~]# vim /etc/docker/daemon.json
  21. {
  22. "registry-mirrors": ["https://yown2gka.mirror.aliyuncs.com"],
  23. "insecure-registries": ["10.0.0.100:5000"]
  24. }
  25. [root@docker02 ~]# systemctl restart docker
  26. [root@docker02 ~]# docker pull 10.0.0.100:5000/alnk/nginx:v1.0
  27. [root@docker02 ~]# docker images
  28. REPOSITORY TAG IMAGE ID CREATED SIZE
  29. 10.0.0.100:5000/alnk/nginx v1.0 f7bb5701a33c 11 days ago 126MB
  30. #5 本地仓库加安全认证
  31. #在安装registry的那台服务器进行
  32. #生成密码:
  33. [root@docker ~]# yum install httpd-tools -y
  34. [root@docker ~]# mkdir /opt/registry-auth/ -p
  35. [root@docker ~]# htpasswd -Bbn alnk 123 > /opt/registry-auth/htpasswd
  36. [root@docker ~]# cat /opt/registry-auth/htpasswd
  37. alnk:$2y$05$CuUlxfhJOnu4ymeIMY3l0.VWTWirqOZ8fVklpy43CFxii1Aup/0TK
  38. #6 重新启动带有秘钥功能的registry容器
  39. [root@docker ~]# docker container ls -a |grep registry
  40. 24055607a16f registry "/entrypoint.sh /etc…" 9 minutes ago Up 8 minutes 0.0.0.0:5000->5000/tcp registry
  41. [root@docker ~]# docker container stop 24055607a16f
  42. 24055607a16f
  43. [root@docker ~]# docker container rm 24055607a16f
  44. 24055607a16f
  45. [root@docker ~]# docker container ls -a |grep registry
  46. [root@docker ~]#
  47. [root@docker ~]# docker run -d -p 5000:5000 -v /opt/registry-auth/:/auth/ -v /opt/registry:/var/lib/registry --name register-auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry
  48. #7 push镜像,需要进行login
  49. [root@docker ~]# docker tag nginx 10.0.0.100:5000/alnk/nginx:v2.0
  50. [root@docker ~]# docker images
  51. REPOSITORY TAG IMAGE ID CREATED SIZE
  52. 10.0.0.100:5000/alnk/nginx v2.0 f7bb5701a33c 11 days ago 126MB
  53. [root@docker ~]# docker push 10.0.0.100:5000/alnk/nginx:v2.0
  54. The push refers to repository [10.0.0.100:5000/alnk/nginx]
  55. 75248c0d5438: Preparing
  56. 49434cc20e95: Preparing
  57. 556c5fb0d91b: Preparing
  58. no basic auth credentials
  59. [root@docker ~]# docker login 10.0.0.100:5000
  60. Username: alnk
  61. Password:
  62. Login Succeeded
  63. [root@docker ~]# docker push 10.0.0.100:5000/alnk/nginx:v2.0
  64. v2.0: digest: sha256:36b77d8bb27ffca25c7f6f53cadd059aca2747d46fb6ef34064e31727325784e size: 948
  65. [root@docker ~]#
  66. #8 然后测试pull,也需要进行验证(这里网上说不用密码,暂时还没弄清楚)
  67. [root@docker02 ~]# docker pull 10.0.0.100:5000/alnk/nginx:v2.0
  68. Error response from daemon: Get http://10.0.0.100:5000/v2/alnk/nginx/manifests/v2.0: no basic auth credentials
  69. [root@docker02 ~]# docker login 10.0.0.100:5000
  70. Username: alnk
  71. Password:
  72. Login Succeeded
  73. [root@docker02 ~]# docker pull 10.0.0.100:5000/alnk/nginx:v2.0
  74. [root@docker02 ~]# docker images
  75. REPOSITORY TAG IMAGE ID CREATED SIZE
  76. 10.0.0.100:5000/alnk/nginx v2.0 f7bb5701a33c 11 days ago 126MB

重启docker服务,容器全部退出的解决办法

  1. #方法一:在启动容器的时候加上 --restart=always 参数
  2. docker run --restart=always xxxxxxx
  3. #方法二:docker server配置文件 /etc/docker/daemon.json 加入这个参数
  4. {
  5. "live-restore": true
  6. }

habor实现图形化register(仓库)

  1. 系统版本:centos7.6
  2. docker版本:Docker version 17.06.2-ce, build cec0b72
  3. docker-compse版本:docker-compose version 1.18.0, build 8dd22a9
  4. harbor版本:harbor-offline-installer-v1.8.0.tgz
  5. Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的
  6. Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能

1 安装

1 安装docker和docker-compose

  1. 前面已经安装好docker了,具体可以看 01-docker容器1 中的安装步骤
  2. https://www.cnblogs.com/lichengguo/p/15152993.html
  3. 安装docker-compose
  4. [root@docker ~]# yum install -y docker-compose

2 下载harbor-offline-installer-vxxx.tgz

  1. github地址:https://goharbor.io/
  2. https://github.com/goharbor/harbor/releases/tag/v1.8.0

3 上传到/opt 并解压

  1. [root@docker opt]# ll
  2. -rw-r--r-- 1 root root 552897681 Jan 9 10:36 harbor-offline-installer-v1.8.0.tgz
  3. [root@docker opt]# tar -zxvf harbor-offline-installer-v1.8.0.tgz -C /usr/local/

4 修改harbor.cfg配置文件

  1. [root@docker opt]#cd /usr/local/harbor
  2. [root@docker harbor]# vim harbor.yml

5 执行install.sh

  1. 注意:需要在安装目录下执行命令
  2. [root@docker harbor]# ./prepare
  3. [root@docker harbor]# ./install.sh
  4. [root@docker harbor]# docker-compose ps

2 使用方法 (配置免https)

  1. [root@docker harbor]# vim /etc/docker/daemon.json
  2. {
  3. "registry-mirrors": ["https://uoggbpok.mirror.aliyuncs.com"],
  4. "insecure-registries": ["10.0.0.100"],
  5. }
  6. 重启docker服务
  7. [root@docker harbor]# systemctl daemon-reload
  8. [root@docker harbor]# systemctl restart docker

3 重启harbor服务

  1. # cd 到 harbor的安装目录
  2. [root@docker harbor]# cd /usr/local/harbor
  3. [root@docker harbor]# docker-compose stop
  4. [root@docker harbor]# docker-compose up -d

4 在habor中添加项目

  1. 注意:用谷歌浏览器打开
  2. 账号:admin 密码:123456

5 制作镜像并上传habor

  1. [root@docker harbor]# docker images |grep -v goharbor|grep nginx
  2. nginx latest f7bb5701a33c 11 days ago 126MB
  3. # 注意 这里的alnk是上面web界面建立的项目
  4. [root@docker harbor]# docker tag nginx 10.0.0.100/alnk/nginx:v1.0
  5. [root@docker harbor]# docker images |grep -v goharbor|grep nginx
  6. 10.0.0.100/alnk/nginx v1.0 f7bb5701a33c 11 days ago 126MB
  7. nginx latest f7bb5701a33c 11 days ago 126MB
  1. [root@docker harbor]# docker push 10.0.0.100/alnk/nginx:v1.0
  2. 没有认证,不能push

  1. [root@docker harbor]# docker login 10.0.0.100

  1. [root@docker harbor]# docker push 10.0.0.100/alnk/nginx:v1.0

在web界面查看

6 在10.0.0.101节点中pull habor中的镜像

1 先要安装docker基础环境


2 修改docker配置文件

  1. [root@docker02 ~]# vim /etc/docker/daemon.json
  2. {
  3. "registry-mirrors": ["https://uoggbpok.mirror.aliyuncs.com"],
  4. "insecure-registries": ["10.0.0.100"]
  5. }
  6. 重启docker服务
  7. [root@docker02 ~]# systemctl daemon-reload
  8. [root@docker02 ~]# systemctl restart docker

3 拉取habor中的镜像

  1. [root@docker02 ~]# docker pull 10.0.0.100/alnk/nginx:v1.0

Docker本地网络类型

1查看支持网络类型

  1. [root@docker opt]# docker network ls

2 四种网络

1 none

  1. none : 无网络模式,这种没有ip,可以在容器里随便玩,没有多大意义
  2. [root@docker02 ~]# docker run -it --network=none centos:6.9 /bin/bash

2 container(k8s常用)

  1. 与其他容器公用Network Namespace
  2. 要注意的是这种公用container类型的端口是谁先用某个端口,谁就占了,后来的没法使用这个端口
  3. 这里可以看出起了2centos6.9的容器,他们的IP是一样的,网络共享了

3 host : 公用宿主机Network NameSapce

  1. 这种就是和宿主机共用端口,谁先占谁用,但是性能最高,所以我们在构建镜像的时候使用了这个参数,就是为了统一网络类型,提高构建镜像的效率

4 bridge : 默认模式,相当于NAT(容器默认使用的模式)

Docker跨主机网络介绍

  1. 这里只介绍 macvlanoverlay 这两种。跨主机容器网络方案有很多种

1 Docker跨主机访问-macvlan实现(不能访问外网)

  1. 10.0.0.100 10.0.0.101 两台虚拟机都要执行
  2. [root@docker opt]# docker network create --driver macvlan --subnet=100.0.0.0/24 --gateway=100.0.0.254 -o parent=eth0 macvlan_1
  3. ip link set eth0 promsic on (ubuntu或其他版本需要)
  4. 10.0.0.100 上执行
  5. 注意:这里用centos6.9基础镜像启动容器,然后在容器中安装了一个ping命令,然后在把容器commit为镜像,在启动容器的
  6. [root@docker opt]# docker run -it --network macvlan_1 --ip=100.0.0.11 contos6.9_ssh_v1.0 /bin/bash
  7. 10.0.0.101 上执行
  8. [root@docker02 ~]# docker run -it --network macvlan_1 --ip=100.0.0.12 centos:6.9 /bin/bash
  1. 测试。在10.0.0.100 上的容器ping 10.0.0.101上的容器

2 Docker 跨主机访问-overlay实现

1 启动 consul 服务,实现网络的统一配置管理(在10.0.0.100 这台机器上执行)

  1. [root@docker ~]# docker run -d --restart=always -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
  2. #consul:kv类型的存储数据库(key:value)

  1. docker0110.0.0.100
  2. vim /etc/docker/daemon.json
  3. {
  4. "hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],
  5. "cluster-store": "consul://10.0.0.100:8500",
  6. "cluster-advertise": "10.0.0.100:2376"
  7. }
  8. systemctl daemon-reload
  9. systemctl restart docker
  10. docker0210.0.0.101
  11. vim /etc/docker/daemon.json
  12. {
  13. "hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],
  14. "cluster-store": "consul://10.0.0.100:8500",
  15. "cluster-advertise": "10.0.0.101:2376"
  16. }
  17. systemctl daemon-reload
  18. systemctl restart docker

2 创建overlay网络(在10.0.0.100 这台机器上执行)

  1. [root@docker ~]# docker network create -d overlay --subnet 172.16.0.0/24 --gateway 172.16.0.254 overlay

3 两边启动容器测试(两台机器都要执行)

  1. docker run -it --network overlay busybox /bin/sh
  2. 每个容器有两块网卡,eth0实现容器间的通讯,eth1实现容器访问外网
  3. vim /usr/lib/systemd/system/docker.service
  4. ExecStart=/usr/bin/docker daemon -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --cluster-store=consul://10.0.0.100:8500 --cluster-advertise=10.0.0.100:2376

docker-03的更多相关文章

  1. Docker 03 镜像命令

    参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...

  2. 基于Centos7.5搭建Docker环境

    docker很火,基于容器化技术,实现一次编译到运行.实现运行环境+服务的一键式打包! 00.部署环境 centos7.5(基于vmware搭建的测试环境,可以跟互联网交互,桥接方式联网) docke ...

  3. Docker系列-文章汇总

    本篇汇总docker系列的文章目录: 01. 准备Docker环境 02. CentOS安装Docker 03. Bridge Network 01 容器间通信 持续更新中…… 本人微信公众号同步更新 ...

  4. k8s集群部署(3)

    一.利用ansible部署kubernetes集群环境准备 基于二进制方式部署和利用ansible-playbook实现自动化:既提供一键安装脚本,也可以分步执行安装各个组件,同时讲解每一步主要参数配 ...

  5. Docker版本升级至17.03

    2017/3/3,Docker官方发表了一篇博客,Docker版本从1.13.*直接跳入17.03,该版本的意思是17年3月.同时,还声明了Docker以后会以CE(Community Edition ...

  6. Docker系列03—Docker 基础入门

    本文收录在容器技术学习系列文章总目录 1.概念介绍 1.1 容器 1.1.1 介绍 容纳其它物品的工具,可以部分或完全封闭,被用于容纳.储存.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. ...

  7. CentOS7用阿里云Docker Yum源在线安装Docker 17.03.2

        参考文档 安装步骤 删除已安装的Docker 配置阿里云Docker Yum源 安装指定版本 启动Docker服务 参考文档 官方Docker安装文档:https://docs.docker. ...

  8. centos7+ 安装Docker 17.03.2

    cnetos7 安装 docker17.03.2 升级内核 http://m.blog.csdn.net/article/details?id=52047780 注意切换内核时查看 新内核位置 awk ...

  9. 在Linux Centos 7.2 上安装指定版本Docker 17.03

    相关资料链接: https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce 先清空下“历史” yum insta ...

  10. 乌班图docker版本18.04升级到19.03

    # 关闭docker sudo systemctl stop docker # 卸载旧版本: sudo apt-get purge docker-ce # 安装新版本 sudo apt update ...

随机推荐

  1. DRF之过滤排序分页异常处理

    一.过滤 对于列表数据要通过字段来进行过滤,就需要添加 django-filter 模块 使用方法: # 1.注册,在app中注册 settings.py INSTALLED_APPS = [ 'dj ...

  2. 其他:Spring5.0框架源码导入IDEA

    1.下载Spring spring-framework-5.0.4.RELEASE下载地址:https://github.com/spring-projects/spring-framework/re ...

  3. redis-cluster集群安装(windows)

    在此先奉上安装包(链接:https://pan.baidu.com/s/1QHYQPkYPuiRWhdj9APbjnw 提取码:jv8x ) 1. 安装ruby 下载 rubyinstaller-2. ...

  4. 25 Linux中的信号

    Linux中的信号 信号是进程在运行过程中,由自身产生或由进程外部发过来的消息(事件).每个信号用一个整型常量宏表示,以SIG开头,比如SIGCHLD.SIGINT等,它们在系统头文件中定义,也可以通 ...

  5. HanLP使用教程——NLP初体验

    话接上篇NLP的学习坑 自然语言处理(NLP)--简介 ,使用HanLP进行分词标注处词性. HanLP使用简介 HanLP是一系列模型与算法组成的NLP工具包,目标是普及自然语言处理在生产环境中的应 ...

  6. 备战-Java 基础

    备战-Java 基础 仰天大笑出门去,我辈岂是蓬蒿人. 简介:备战-Java 基础. 一.基本数据类型 1.Java基本数据类型 基本数据类型有8种:byte.short.int.long.float ...

  7. 题解 CF311B Cats Transport

    前置芝士:斜率优化  剥下这道题的外壳,让它变为一道裸的斜率优化. 很容易想到状态,但复杂度显然过不去,也没有单调性,只能自己创造. 令 $$c[i] = t - sum[i],sum[i] = \s ...

  8. 你好,我是B树

    一.什么是B树? B树是一棵是具备以下特点的有根树. 1.节点属性 a)x.n:为节点中存储的关键字个数. b)x.key:为节点中存储的关键字.x.key1.x.key2 ... x.keyx.n  ...

  9. stream之forEach的用法

    public static class Student{ private String name; private String sex; private String age; public Str ...

  10. Day1 Markdown学习!

    Markdown学习 标题 一级标题:# (空格)+内容 二级标题:##(空格)+内容 同理可支持到六级标题 字体 Hello,World! 两边两个** 加粗 Hello,World! 两边一个* ...