zoukankan      html  css  js  c++  java
  • Docker 快速入门

    一、            Docker 概念与安装

    1.    Docker是什么:

    • 使用最广泛的爱看i元容器引擎
    • 一种操作系统级的虚拟化技术
    • 依赖于linux内核特性:Namespace(资源隔离)和cgroups(资源限制)
    • 一个简单的应用程序打包工具
    • Docker client:        客户端命令
    • Host:                     安装docker的虚拟机,用于创建容器
    • Docker registry: 镜像

    2.    Docker 基本组成:

    • Docker client:        客户端命令
    • Host:                     安装docker的虚拟机,用于创建容器
    • Docker registry: 镜像

    3.    版本与支持的平台:

    • Docker版本:

        社区版(Commuity Edition,CE)

         企业版(Enterprise Edition,EE)

    • 支持平台:

         Linux (centos、debian、fedora、oracle linux、RHEL、SUSE、和Ubuntu)

         Mac

        Windows

    官方文档: https://docs.docker.com/

    阿里云源:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    注:安装docker 先关闭防火墙和selinux

    4.    Docker 安装

    • 二进制安装:

             https://download.docker.com/linux/static/stable/x86_64/

      解压:

      tar xzvf /path/to/<FILE>.tar.gz

      复制到bin下:

      cp docker/* /usr/bin/

    • yum安装:

      https://docs.docker.com/engine/install/centos

       卸载之前旧的版本

    yum remove docker 
                      docker-client 
                      docker-client-latest 
                      docker-common 
                      docker-latest 
                      docker-latest-logrotate 
                      docker-logrotate 
                      docker-engine

     添加新yum源

    yum install -y yum-utils
    yum-config-manager 
        --add-repo 
        https://download.docker.com/linux/centos/docker-ce.repo(可以替换为阿里源)

       安装docker-ce

                     yum install docker-ce

                       systemctl  start docker

                       systemctl  enable docker

       查看docker 可用的版本

            yum list docker-ce --showduplicates | sort -r

    二、            镜像管理

    1.    镜像是什么

    • 一个分层存储的文件,不是一个单一的文件
    • 一个软件的环境
    • 一个镜像可以创建N个容器
    • 一种标准化的交付
    • 一个不包含Linux内核而又精简的Linux操作系统

    2.    配置加速器

    Docker Hub室友Docker公司负载维护的公共镜像仓库,包含大量的容器镜像,Docker工具默认从这个公共镜像下载镜像。地址:https://hub.docker.com

    3.    配置镜像加速器:

    vi /etc/docker/daemon.json

    {

     “registru-mirrors”: [“https://b9pmyelo.mirror.aliyuncs.com”]

    }

    systemctl  daemon-reload

    systemctl  restart  docker

    常见管理命令

    指令

    描述

    ls

    列出镜像

    build

    构建镜像来自Dockerfile

    inspect

    显示一个或多个镜像详细信息

    pull

    从镜像仓库拉取镜像

    push

    推送一个镜像到镜像仓库

    rmi或rm

    删除一个或多个镜像

    prune

    移除没有被标记或者没有被任何容器引用的镜像

    tag

    创建一个引用源镜像标记目标镜像

    save

    保存一个或多个镜像到一个tar归档文件

    load

    加载一个来自tar归档或标准输入

    history

    查看镜像的历史

    --help

    Docker 命令帮助

    4.    Docker工作目录

    默认路径/var/lib/docker

     

    root@k8s-master:/var/lib/docker# tree -L 1 /var/lib/docker

    /var/lib/docker

    ├── builder

    ├── buildkit

    ├── containers         #存储容器得目录

    ├── image        #存储镜像得元数据信息等

    ├── network           #存储网络

    ├── overlay2          #根据存储驱动名字,存方镜像得目录

    ├── plugins       #插件相关

    ├── runtimes

    ├── swarm

    ├── tmp

    ├── trust

    └── volumes               #存储数据卷

    修改工作目录方法:

    方法一:新建或者编辑 /etc/docker/daemon.json 

    {

        "data-root": "/data/docker"

    }

    方法二:编辑文件 /usr/lib/systemd/system/docker.service 

    [Service]
    。。。。。。
    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=/data/docker
    ExecReload=/bin/kill -s HUP $MAINPID

    。。。

    。。。

    重启docker(不管方法几都要重启)

     systemctl daemon-reload 

     systemctl restart docker 

    注意:目前网上大多数配置参数是  --graph ,其实这是老版本中的使用方法,新版本已经抛弃,改用了 --data-root ,具体可以通过命令 dockerd --help 查看使用的参数。

    三、            容器管理

    1.    创建容器常用的命令

    docker run  【选项】

    -d                         后台允许

    -it                        分配一个伪终端的运行

    例: -d 和-it区别,因不加-it centos是启动不了的,因没有进程运行所以退出,加-it是给centos容器启动一个伪终端,又进程运行所有可以运行

    docker  run  -d  centos  退出

    docker  run  -d  -it centos  启动

    -e                        设置环境变量

    -p                      指定一个端口映射容器的端口

    -P                         自动分配一个宿主机的端口映射容器端

    -v                      挂载目录,实现数据持久化

    --mount (新方式)

    --name               指定容器名字

    -h                        指定容器主机名

    --ip                     指定容器id,只能用于自定义网络

    --network 连接容器的一个网络

    --restart            容器退出时重启策略,默认时no可选值:always,on-failure

                                Always:会无限尝试重启退出的容器(无论以什么退出码退出)。手动停止容器后,容器策略不再生效。除非重启docker daemon

                                on-failure:重启因出错停止的容器(非0退出码)。可以通过指定max-retries来限定docker daemon的最大尝试重启次数

                                on: 不自动重启(默认模式)

    unless-stopped:       与always类似,区别在于手动停止容器后,就算重启docker daemon,容器策略也不再生效。

    资源限制:

    -m,-memory                                          容器可以使用的最大内存量

    --memory-swap                                    允许交换到磁盘的内存量

    --memory-swappiness=<0-100>      容器使用SWAP分区交换的百分比(0-100,默认为-1)

    --oom-kill-disable                                 禁止OOM killer

    --cpus                                                      可以使用的CPU数量

    --cpuset-cpus                                     限制容器使用特定的CPU核心,如:0-3,0,1

    --cpu-shares                                          CPU共享(相对权重)

    例:限制容器最多使用500M内存,1颗cpu

    docker run  -itd  -p 8080:8080  -m=”500m”  --cpus=”1”  java

    2.    常用管理命令

    docker  container 【选项】

    选项

    描述

    ls

    列车容器

    inspect

    查看一个或多个容器详细信息

    commit

    创建一个新镜像来自一个容器

    exec

    在运行容器中执行命令

    cp

    拷贝文件/文件夹到一个容器

    logs

    获取容器的日志

    port

    列出容器的端口映射

    top

    查看容器运行的进程

    stats

    显示容器资源使用统计

    stop/start/restart

    停止/启动/重启命令

    rm

    删除容器

    ps

    列出容器-a参数列出所有容器包含退出的,-q列出容器id

    prune

    移除已停止的容器

    stats 参数 –no-stream 只显示一次信息例

    docker  stats  web  --no-stream

    3.    容器数据持久化

    Docker 提工三种方式将数据从宿主机挂载到容器:

    volume:docker 管理宿主机文件系统的一部分(/var/lib/docker/volumes)保存数据的最佳方式。volume本质和bind mount的操作方式一样,只不过在volume这种方式中,宿主机目录是由docker进行管理的,然后再挂载到容器中,不会覆盖容器中的对应目录文件,是共享的。

    bind mounts: 将宿主机上的任意为止的文件或者目录挂载到容器,会覆盖容器中的对应目录文件。推荐

    tmpfs mount:是将宿主机的内存挂载到容器中

    1.    volumes 示例:

    创建数据卷

    docker volume  create  nginx-vol

    docker  volume  ls

    docker volume  inspect  nginx-vol

    使用数据卷

    docker run  -d  --name=nginx-test  --mont  src=nginx-vol,dst=/usr/share/nginx/html  nginx

    docker run  -d –name=nginx-test  -v nginx-vol:/usr/share/nginx/html  nginx

    2.    bind  mounts示例(最常用)

    挂载宿主机目录到容器

    方法1:

    docker run -d --name=nginx-test –mount type=bind,src=/app/wwwroot,dst=/usr/share/nginx/html  nginx

    方法2:

    docker run -d --name=nginx-test  -v /app/wwwroot:/usr/share/nginx/html nginx

    3.    容器网络

    veth pair: 成对出现的一种虚拟网络设备,数据从一端进,从另一端出,用于解决网络命名空间之间的隔离。

    docker0: 网桥是一个二层网络设备,通过网桥可以将lingx支持的不通端口连接起来,并实现类型交换机那样的多对多的通信。

     

    Docker使用iptables实现网络通讯

     

    四、            Dockerfile 构建镜像

    Docker通Dockerfile自动构建镜像,Dockerfile是一个包含用于组建镜像的文本文件,有一条条的指令组成。

     

    五、            Harbor镜像仓库搭建与使用

    Harbor是由vmware公司开源的容器镜像仓库。事实上harbor是在docker registry 上进行了相应企业级扩展,从而获得了更加广泛应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制,AD/LDAP集成以及审计日志等,足以满足基本企业需求。

    官方:https://goharbor.io

    Github: https://github.com/goharbor/harbor

    服务器硬件配置:

    最低要求: CPU核/内存4G/硬盘40GB

    推荐: CPU4核/内存8G/硬盘160GB

    软件:

             Docerk CE 1.7.06版本+

    Docker Compose 1.18版本+

    Harbor 安装有2中方式:

             在线安装:从Docker Hub下载相关镜像,因此安装软件包非常小

             离线安装:安装包包含部署的相关镜像,因此安装包比较大

    1.    安装

    采用离线安装:下载镜像

     

    下载离线包:wget https://github.com/goharbor/harbor/releases/download/v2.1.3/harbor-offline-installer-v2.1.3.tgz

    先安装docker和docker compose

    https://github.com/docker/compose/releases

    2.    部署harbor

    解压

    tar  xf harbor-offline-installer-v2.1.3.tgz

    进入解压目录

    cd harbor

    cp harbor.yml.tmpl  harbor.yml

    修改配置

    vi harbor.yml

    hostname:xxxx #指定访问的域名

    htts:  #先注释https相关配置

    安装:

    ./prepare

    ./install.sh

    harbor 默认登录账号

    admin/Harbor12345

    3.    harbor基本使用

    配置http镜像仓库可信任

    Vim /etc/docker/daemon.json

    {

       “insecure-registries”: [“域名或ip”]

    }

    打标签

    docker tag  centos:7  xxxx/library/centos:7

    上传

    docker  push xxxx/library/centos:7

    下载

    docker pull xxxx/library/centos:7

  • 相关阅读:
    javaweb学习总结(二十三)——jsp自定义标签开发入门
    javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
    MyEclipse使用总结——设置MyEclipse使用的Tomcat服务器
    XML学习总结(二)——XML入门
    XML学习总结(一)——XML介绍
    使用java中replaceAll方法替换字符串中的反斜杠
    MyEclipse使用总结——设置MyEclipse开发项目时使用的JDK
    MyEclipse使用总结——修改MyEclipse默认的Servlet和jsp代码模板
    使用js加载器动态加载外部Javascript文件
    JavaScript获取浏览器类型与版本
  • 原文地址:https://www.cnblogs.com/houchaoying/p/14365566.html
Copyright © 2011-2022 走看看