Docker 入门

简介:Docker是基于Go语言实现的云开源项目,通过镜像将除了系统之外所需要的系统环境由下而上打包,达到服务跨平台的无缝运作,简单的说就是把特定的环境一模一样地搬过来。

1. 安装Docker,参考官方文档:https://docs.docker.com/engine/install/centos/

   A.安装软件包:yum install -y yum-utils device-mapper-persistent-data lvm2;

   B. 配置仓库:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo;

   C. 安装docker:yum install docker-ce -y;

 

2. 卸载Docker

  A. 停止运行的docker:systemctl stop docker;

  B. 查看yum或rpm安装的docker文件包:yum list installed | grpe docker;

   C. 删除所有安装的docker文件包:yum -y remove docker-ce.x86_64 docker-ce-cli.x86_64;

   D. 删除docker目录:rm -rf /var/lib/docker。

 

3. Docker概念

  A. 镜像(Image):用于创建Docker容器的只读模板,镜像是特殊文件叠加而成的,相当于一个root文件系统;

  B. 容器(Container):是独立运行、相互隔离的一个或一组应用,是镜像创建的运行实例,它和镜像的关系,就像Java中实例和类一样,容器可以看做简易版的Linux环境+应用程序;

    容器的五个状态:

      Created:容器已经创建,容器所需的相关资源已经准备就绪;

      Running:容器正在运行,是应用正在运行;

      Paused:容器已暂停,容器中所有程序处于暂停,而不是停止状态;

      Stopped:容器已停止,只是容器中应用处于停止状态;

      Deleted:容器已删除,相关占用的资源已释放;

    容器重启策略(restart_policy)判断依据:进程退出(Container process exited)或内存溢出(killed by out of memory);

  C. 仓库(Repository):存放镜像文件的地方,就像代码控制中心,分公有仓库和私有仓库;

   D. 宿主机(Host):一个物理或者虚拟的机器用于执行Docker守护进程和容器。

 

4. Docker仓库

  A. Docker仓库即:Docker Hub

  B. 阿里云仓库,用来加速

  C. 搭建私有仓库 

    第一步:启动Docker Registry

docker run -d
    -p 5000:5000
    --restart=always
    --name registry
    -v /mnt/registry:/var/lib/registry
    registry: 2

    第二步:重命名镜像:docker tag hello-world:latest localhost:5000/my-registry

    第三步:推送镜像:docker push localhost:5000/my-registry

    第四步:查看本地仓库镜像:http://localhost:5000/v2/my-registry/tags/list

  D. 配置私有仓库认证

    第一步:查看Docker registry私有仓库搭建服务器地址:ifconfig

    第二步:生成自签名证书

    第三步:生成用户名和密码

    第四步:重启Docker registry本地镜像仓库服务

    第五步:配置Docker registry访问接口

    第六步:Docker registry私有仓库使用登记

    第七步:重启并加载docker配置文件

 

5. docker目录介绍

  A. containers:用于存储容器信息,每启动一个容器都会记录在这;

  B. image:用于存储镜像中间件及本身信息、大小和依赖信息,默认里面只有一个overlay2目录;

  C. network:docker的网关、容器的IP地址等信息;

  D. overlay2:docker存储驱动;

  E. plugins:docker插件;

  F. swarm:docker swarm集群信息;

  G. tmp:docker临时目录;

  H. trust:docker信任目录;

  I. volumes:docker卷目录。

  可参考:docker存储目录详解

 

二、Harbor私有仓库

  1. 简介:Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

  2. Harbor部署

    A. 先确保docker已经安装,未安装可参考:Docker官方文档

    B. 再确保docker-compose已经安装,未安装可参考:Docker Compose编排工具

    C. 下载harbor安装文件,可前往Github下载

wget https://github.com/vmware/harbor/releases/download/v2.1.3/harbor-online-installer-v2.1.3.tgz
tar -xvf harbor-online-installer-v2.1.3.tgz

    D. 根据harbor.yml.tmpl模板创建harbor.yml文件;

# 目标主机的主机名,用于访问Portal和注册表服务
hostname: 192.168.102.10 http: port: 8080 # 管理员的初始密码,此密码仅在Harbor首次启动时生效 harbor_admin_password: admin
#database:
  # 用于db_auth的PostgreSQL数据库的root密码
  #password: root123
# 存储数据的位置,映射到宿主机
data_volume: /data
jobservice:
  # 作业服务中的最大复制工作者数
  max_job_workers: 10
log:
  level: info
  local:
    # 日志存储目录
    location: /var/log/harbor
# 外部数据库配置,目前只支持POSTGRES
external_database:
  # 核心数据库配置
  harbor:
    host: harbor_db_host
    port: harbor_db_port
    db_name: harbor_db_name
    username: harbor_db_name
    password: harbor_db_password
# 配置使用外部redis
external_redis:
  host: redis:6379
  password: 123456

    E. 启动harbor:sh /usr/local/harbor/install.sh;

    F. 访问地址:http://192.168.102.10:8080,用户名/密码为admin/admin;

  G. harbor修改harbor.yml配置文件后重启。

# -f 指定使用的compose文件,-d表示以后台方式启动
docker-compose -f docker-compose.yml up -d
# 启动已经存在的服务容器
docker-compose start
# 停止已经处于运行状态的容器
docker-compose stop

  3. Harbor核心组件

    A. db:负责储存用户权限、审计日志、Docker Image分组信息等数据;

    B. Proxy:是一个nginx的前端代理,代理Harbor的registry,UI, token等服务;

    C. UI:提供图形化界面,帮助用户管理registry上的镜像, 并对用户进行授权;

    D. jobsevice:jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log;

    E. Adminserver:是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置;

    F. Registry:镜像仓库,负责存储镜像文件;

    G. Log:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。

  4. Harbor使用

    A. 在/etc/docker/daemon.json文件中增加:"insecure-registries":["192.168.102.10:8080"],然后重启docker;

    B. Linux登录Harbor:docker login -u admin -p admin 192.168.102.10:8080;

    C. 制作镜像标签:docker tag prom/prometheus:latest 192.168.102.10:8080/rhxy/prom/prometheus:latest;

    D. 推送镜像:docker push 192.168.102.10:8080/rhxy/prom/prometheus。

  5. 问题集绵

    A. 登录Harbor平台,报账号或密码错误,重置密码方法

 

可参考:数据库不建议部署在docker内

    Docker daemon.json配置文件详解

   

posted @ 2020-02-03 11:49  如幻行云  阅读(163)  评论(0编辑  收藏  举报