Docker笔记-基础版

文章目录

          • 1、基础
          • 2、命令
          • 3、DockerFile

1、基础
  1. docker是一种轻量级的虚拟化技术,也是应用容器引擎

  2. 优点:可以创建很多轻量级和可移植的容器,这些容器相独立;占用资源很少;运行速度非常快,启动和停止是秒级别;非常方便进行快速部署和扩展。基于go语言。

  3. 架构图

    Docker笔记-基础版_第1张图片
    Docker是C/S结构,我们平时在linux输入的命令docker就是使用client客户端。Docker的客户端与服务端,实际上是通过Socket进行连接的。

    Docker Daemon是Docker架构中运行在后台的守护进程,大致可以分为4个部分,具体可见docker笔记-进阶版

    除了docker服务器与docke客户端通信,还可以使用Remote API与守护进程进行交互。

    Docker提供了三种进行Socket连接的模式:
    (1)Unix的端口模式
    unix:///var/run/docker.sock
    (2)TCP协议的host:port模式:
    tcp://host:port
    (3)fd的Socket模式
    fd://socketfd
    
  4. 三要素,镜像,容器和仓库;层

    镜像:用于创建容器,相当于容器的源代码。由一系列只读层构建。。
    容器:独立运行的一个或者一组应用。由守护进程根据镜像产生,类似于java类和对象的关系。
    仓库:用于存放镜像。私有仓库和公共仓库。
    层:Dockerfile中的一条指令就会创建一个层
    
    镜像与容器的区别,镜像由一层层只读层堆在一起,容器为镜像只读层(镜像层)+读写层(容器层)。
    运行态容器为由一个可读写的文件系统「静态容器」+ 隔离的进程空间和其中的进程构成。
    https://blog.csdn.net/vchy_zhao/article/details/70239585
    层
    当你在一个容器中进行了某些操作比如添加了一个文件,然后调用docker commit操作创建新的镜像时,Docker会在镜像栈的最上面创建一个新的层,这个层包含了新添加的文件。
    或者,通过Dockerfile创建新的镜像时,通过FROM指令指定的就是基础镜像。此后的每条指令都会创建一个新的层,层中包含了这条指令对镜像的修改。
    
  5. docker容器与虚拟机

    Docker笔记-基础版_第2张图片
    传统虚拟机在硬件层面上实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作系统。而Docker容器是在操作系统层面上实现的虚拟化,直接利用本地主机的操作系统,因此更轻量
Docker笔记-基础版_第3张图片
  1. docker底层原理

    Linux Namespaces机制提供一种资源隔离方案,相当于一个独立的环境。而在用户层面上只能看到属于用户自己namespace下的资源。比如自己的pid数字,其他容器也可以一样。
    cgroup:它以一组进程为目标进行系统资源分配和控制。

    Docker笔记-基础版_第4张图片
2、命令
  1. 安装Docker

    # 安装依赖
    yum install -y yum-utils device-mapper-persistent-data lvm2
    # 添加yum源
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    # 安装docker
    yum -y install docker
    # 安装docker指定版本
    yum install docker-ce-18.03.1.ce-1.el7.centos
    # 删除docker
    yum list installed | grep -i docker
    yum remove -y containerd.io.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64
     
         
    # 开机自启
    systemctl enable docker 
    # 开机不启动
    systemctl disable docker 
    # 启动docker服务  
    systemctl start docker
    # 停止docker服务  
    systemctl stop docker
    # 重启docker服务  
    systemctl restart docker
    
    # 查看docker基本信息 (查看阿里云地址,容器的运行情况等)
    docker info
    # 查看docker版本
    docker version
    
    # 阿里云控制台搜索容器镜像服务
    vim /etc/docker/daemon.json
    {
      "registry-mirrors": ["https://xddehuq4.mirror.aliyuncs.com"]
     }
       
    # 重启docker
    systemctl daemon-reload
    systemctl restart docker
    
  2. docker镜像命令

    # 下载镜像:docker pull <镜像名:tag>    如:下载tomcat镜像
    docker pull tomcat:7
    # 查看本地镜像库,已经下载的
    docker images
    # 从远程仓库查找镜像
    docker search httpd
    # 删除本地镜像
    docker rmi hello-world
    # 构建镜像
    vim Dockerfile 
    docker build -t qsm/jdk:v1 .
    # 镜像打标签
    docker tag centos centos:v1
    
  3. docker容器命令

    # 列出运行容器 -a 所有
    docker ps 
    
    # 创建并且启动容器 -it/-id 进入/后台守护 -p端口映射 -v 目录挂载
    docker run -it -p 8888:8080 --name qsmtomcat2 -v /local/tomcat/webapps/ /usr/local/tomcat/webapps tomcat镜像id
    
    # 查看容器信息,例如ip
    docker inspect 容器id
    # 查看容器进程
    docker top 容器id
    # 查看容器应用日志
    docker logs 容器id
    
    # 进入容器
    docker exec -it 容器id
    docker attach 容器id
    # 退出容器
    exit(-it 进入,会关闭容器,exec进入不会),ctrl+p+q
    # 启动容器
    docker start 容器id
    # 重启容器
    docker restart 容器id
    # 停止容器
    docker stop 容器id
    docker kill 容器id
    # 删除容器 -f 若是在运行
    docker rm 容器id
    # 删除所有容器 
    docker rm $(docker ps -aq)
    docker rm `docker ps -aq`
    
    # 拷贝
    docker cp /root/tomcat 容器id:/usr/tomcat
    docker cp 容器id:/usr/tomcat /root/tomcat 
    # 提交容器为镜像
    docker commit -a='作者' -m='备注' 运行时容器id 新镜像名称:版本
    
    Docker笔记-基础版_第5张图片
3、DockerFile
  1. Dockerfile 是用于构建镜像的命令脚本文件。
    重点是:from run entrypoint cmd

     #基于centos镜像
     FROM centos:7
     #维护人的信息 下面2种选一即可
     MAINTANIER www.qsm.com
     LABEL maintainer="qsm.cn"
     #设置环境内环境变量
     ENV JAVA_HOME /usr/local/jdk1.8.0_45
     #add COPY 都是拷贝,但是add会解压
     ADD jdk-8u45-linux-x64.tar.gz /usr/local
     ADD apache-tomcat-8.0.46.tar.gz /usr/local
     COPY server.xml /usr/local/apache-tomcat-8.0.46/conf
     #构建镜像时运行的Shell命令
     RUN rm -f /usr/local/*.tar.gz
     #工作目录,进入容器的默认目录
     WORKDIR /usr/local/apache-tomcat-8.0.46
     #开启8080端口
     EXPOSE 8080
     #类似于 CMD 指令,不会被覆盖。多个仅最后一个生效。cmd同时存在,作为entrypoint参数
     ENTRYPOINT ["./bin/catalina.sh", "run"]
     #当启动docker run容器时执行的命令。可覆盖。多个仅最后一个生效。
     CMD ["/run.sh"]
    
    docker build -t qsm/jdk:v1 .
    
  2. 全景图

    Docker笔记-基础版_第6张图片
  3. Docker Compose

    Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。主要用于单机。


本笔记为基础版,更多底层原理可以参考docker笔记-进阶版










【正在去BAT的路上修行!!!】

你可能感兴趣的:(笔记)