zoukankan      html  css  js  c++  java
  • docker基础

    docker官方使用文档  https://docs.docker.com/get-started/

    一 docker概述

    1容器的概述

    • 容器技术已经成为应用程序封装和交付的核心技术
    • 容器技术的核心有以下几个内核技术组成:
    – CGroups(Control Groups)-资源管理
    – NameSpace-进程隔离
    – SELinux安全
    • 由于是在物理机上实施隔离,启动一个容器,可以像
    启动一个进程一样快速

    2 docker的概念

    • Docker是完整的一套容器管理系统
    • Docker提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核

    3docker的特性

    1)优点

    • 相比于传统的虚拟化技术,容器更加简洁高效
    • 传统虚拟机需要给每个VM安装操作系统
    • 容器使用的共享公共库和

    4 docker的缺点

    • 容器的隔离性没有虚拟化强
    • 共用Linux内核,安全性有先天缺陷
    • SELinux难以驾驭
    • 监控容器和容器排错是

    二 docker部署

    1 安装

    #卸载已经安装好的docker
    yum remove docker   docker-client  docker-client-latest  docker-common  docker-latest  docker-latest-logrotate  docker-logrotate  docker-engine
    #安装依赖
    yum install -y yum-utils   device-mapper-persistent-data   lvm2
    #添加docker镜像源(国外的太慢不建议)
    yum-config-manager     --add-repo   https://download.docker.com/linux/centos/docker-ce.repo
    #推荐使用国内的阿里源或者网易源
    yum-config-manager --add-repo     https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    #启用夜间存储库
    yum-config-manager --enable docker-ce-nightly
    #下载安装docker
    yum install docker-ce docker-ce-cli containerd.io
    #列出并对您的仓库中可用的版本进行排序。此示例按版本号对结果进行排序,从最高到最低,并被截断:
    yum list docker-ce --showduplicates | sort -r
    #启动docker
    systemctl start docker

    2 查看docker的信息

    [root@es1 ~]# rpm -qi docker

    3 配置镜像加速器

     [root@es1 ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

    [root@es1 ~]# systemctl restart docker         #启动失败

    [root@es1 ~]# vim  /etc/docker/daemon.json  

    配置阿里云镜像加速器

    https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

    二 docker的基本使用

    docker search  镜像名     #搜索镜像
    docker imges                 # 查看本地镜像
    docker help pull             # 查看下载镜像使用方法方法
    docker pull  镜像名          #下载镜像
    docker  help push           #查看上传镜像使用方法
    docker push  镜像名         #上传镜像到仓库
    docker run 镜像名             #运行一个docker镜像产生一个容器实例
    docker  container ls         #列出所有正在运行的容器
    docker  ps -a                  #列出所有曾经运行过的容器记录,以及正在运行的容器记录
    docker pull centos            #下载centos镜像
    docker load < xx.tar         #通过tar文件包导入镜像
    docker save 镜像名 > xx.tar # 将本地镜像导出为tar文件
    启动镜像
    docker   run   -it   镜像名     /bin/bash  #启用一个镜像生成一个容器
    docker ps                      #打开另一个终端查看容器信息
    docker stop                     #关闭容器
    docker start                     #启动容器
    docker restart                     #重启容器
    docker attach  容器id           #进入容器,退出时会关闭容器
    docker exec  -it  容器id  /bin/bash  #进入容器,退出时不会关闭容器
    docker top                          #查看容器进程列表
    docker rm                          #删除容器
    docker history  镜像名          #查看镜像制作历史
    docker inspect  镜像名         #查看镜像底层信息,了解镜像环境变量、存储卷、标签等信息
    docker rmi        镜像名             #删除本地镜像
    docker search    镜像名             #搜索镜像
    docker tag         镜像名              #修改镜像名称和

    三 自定义镜像

    1 使用docker commit 自定义镜像

    docker run -it centos       #运行一个centos镜像
    yum -y install vim           #进入当前镜像,并下载vim工具
    exit                            #退出当前镜像
    docker container ls -a       #退出当前镜像
    docker commit 5879e75696f1  tiger/centos-vim  #另存为另一个镜象 
    docker images  

    2 Dockerfile 语法格式

    FROM             :基础镜像
    MAINTAINER    :镜像创建者信息
    EXPOSE           :开放的端口
    ENV                :设置变量
    ADD                :复制文件到镜像
    RUN                :制作镜像时执行的命令,可以有多个
    WORKDIR        :定义容器默认工作目录
    CMD                :容器启动时执行的命令,仅可以有一条CMD        

    dockerfile自定义镜像案例

    案例一:

    创建一个目录build 并进入这个目录
    [root@es1 ]#mkdir bulid ;cd build
    创建dockerfile文件
    [root@es1 ]#vim dockerfile
    FROM centos        #指定父镜像
    WORKDIR /var/www/html  #指定工作目录
    RUN yum -y install httpd #运行命令
    RUN echo "test" > /var/www/html/index.html
    EXPORSE 80
    CMD [“httpd", "-DFOREGROUND"]
    [root@es1 ]#docker build -t centos_http:v1 .

    案例二

    进入nginx压缩包所在目录, 直接一条命令就行了。
    docker build -t myimage:latest -f- . <<EOF
    FROM centos         #指定父镜像
    ADD nginx-1.12.2.tar.gz  /opt/   #将压缩包上传并解压至opt目录
    RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
    run yum -y install libxsit-devel gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
    run useradd -M -s /sbin/nogin nginx
    WORKDIR /opt/nginx-1.12.2  #指定工作目录
    RUN ./configure --user=nginx --group=nginx --prefix=/opt/nginx
    EXPOSE 80
    EOF
    [root@es1 ~]# docker run  -d -p80:80 centos_nginx:v1   #运行容器和服务
    ebd5cb14f65b8b3a15ec9d0b9b8bda46acc1905d13187718b00174fb7231cc4d

    3 自定义镜像仓库

    regist基本概念 共享镜像的一台服务器

    搭建私有镜像仓库

    (1) 一条命令下载registry镜像并且启动私有仓库容器
    docker pull registry
    (2) 通过-v参数将镜像文件存储到本地的/opt/data/registry下, 端口映射容器中的5000端口到宿主机的5000端口
    docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry
    (3) 检查启动的registry容器记录
    docker ps
    (4)  测试连接容器
    telnet 192.168.12.56 5000
    (5) 修改镜像tag,以docker registry的地址端口开头
    docker tag hello-world:latest 192.168.12.56:5000/qishi2_hello-world:latest
    (6)  Docker 默认不允许非 HTTPS 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制,这里必须写正确json数据
    修改配置文件
    vim /etc/docker/daemon.json
    添加以下内容
    "insecure-registries":["192.168.119.10:5000"]
    添加完成之后,/etc/docker/daemon.json文件内容如下
    {
      "registry-mirrors": ["http://95822026.m.daocloud.io"],
      "insecure-registries":["192.168.12.56:5000"]
    }
    
    
    写入到docker服务中,写入到[Service]配置块中,加载此配置文件
    操作流程如下
      打开docker服务的配置文件:
      vim /lib/systemd/system/docker.service
      写入以下内容:
      EnvironmentFile=-/etc/docker/daemon.json
      写入的时候,要注意,把这个配置文件加入到[Service]代码块中
    ![1555987708819](assets/1555987708819.png
    (7)修改了docker配置文件,重新加载docker
    systemctl daemon-reload
    (8) 重启docker
    systemctl restart docker
    ##### 注意,重启docker服务,所有的容器都会挂掉!!!
    
    ##### 注意,重启docker服务,所有的容器都会挂掉!!!
    
    ##### 注意,重启docker服务,所有的容器都会挂掉!!!
    
    (9) 重启了docker,刚才的registry容器进程挂掉了,因此重新启动它
    docker ps -a
    docker start 容器id
    (10)  上传本地镜像
    docker push 192.168.12.56:5000/qishi2_hello-world
    (11) 在浏览器访问私有仓库的现有镜像
    http://192.168.12.56:5000/v2/_catlog
    
    (12) 在本地查看已经上传过的镜像
    
    ![1555988149994](assets/1555988149994.png)
    
    (13)  删除本地镜像,下载私有仓库的镜像
  • 相关阅读:
    Java基础101 给c:forEach的select下拉框中的值,设置默认值(后台传值,前台默认选中)
    Java进阶知识27 SSH整合(Struts2、Spring、Hibernate)
    错误/异常:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/classes/beans_common.xml]...的解决方法
    Java进阶知识26 Spring与Hibernate整合到一起
    Java进阶知识25 Spring的事务管理(事务回滚)
    spring各个版本源码
    sql之left join、right join、inner join的区别
    git命令之git stash 暂存临时代码
    apollo配置相关
    idea快捷键
  • 原文地址:https://www.cnblogs.com/liucsxiaoxiaobai/p/10771413.html
Copyright © 2011-2022 走看看