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

      docker 介绍

      

      1、docker 是什么 ?

      docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖到一个可移植的容器中。

      然后发布到任何一个 linux 系统上面。

      特点:

      docker 容器启动和停止都很快,直接在宿主中可以完成。

      docker 容器占用的系统资源少,一台宿主可以运行很多容器

      docker 操纵方便,简单易学习

      docker 可以通过 dockerfile 配置文件自动创建和部署。

      docker 容器也是沙箱机制的,相互完全隔离

      三大核心概念 : 镜像,容器,仓库

      镜像

      docker 镜像类似于虚拟机镜像,也可以理解为一个面向 docker 引擎的只读模版。

      镜像是创建 docker 容器的基础,镜像可以是一个系统( ubuntu镜像 ),也可以是一个应用程序( mysql 镜像 )。

      获取镜像

    docker pull  name[:tag]
    

      开发者可以通过 docker pull 来获取对应的镜像。

      查看镜像信息

    docker images
    

      列出所有的镜像列表。

      展示镜像的概要信息,了解当前所有的镜像。

      查看具体镜像信息

    docker inspect imageID
    

      获取某一个镜像的详细信息。

      搜索镜像

    docker search  name
    

      在仓库中查询某一个镜像。

      删除镜像

    docker rmi name
    

      删除某一个镜像。

      创建镜像

      创建镜像有三种方法:基于已有镜像的容器创建、基于本地模版导入、基于 dockerfile 创建

      

      基础已有镜像容器创建

    docker commit [options]  containerId [imageName[:tag]]
    

      创建一个容器:

      options :a ( 作者名称 )、m( 提交信息 )、p( 创建时候暂停 )

      containerId :容器的id

      imageName[:tag] : 名称和标签

      直接导入模版文件创建镜像

    docker import  tpl
    

      

      存出和载入镜像

      存储可以将镜像保存为本地文件

      载入将本地文件导入为一个本地镜像

      上传镜像

    docker push name[:tag]
    

      创建本地镜像到仓库中。

      容器

      docker 容器类似一个轻量级的沙箱,docker 利用容器来隔离和运行应用。

      容器是通过镜像创建实例来的,在宿主中可以实现启动、停止、删除等操作,且容器相互隔离不受影响。

      创建容器

    docker create name[:tag]
    

      创建了容器但是没有启动它。

      可以通过 docker start name 来启动容器

      新建并启动容器

    docker run  name
    

      相当于:docker create  -->   docker start 

      过程:

      1、检查是否存在本地镜像,不存在到仓库中获取

      2、利用容器创建并启动容器

      3、分配一个文件系统,并在只读的镜像层外面挂在一层可读写层

      4、从宿主的网桥中桥接一个虚拟接口到容器中

      5、从地址池配置一个 IP 地址给容器

      6、执行指定到应用程序

      7、执行完毕

      参数:

      t :分配一个伪终端

      i :标准的输入

      d : 后台运行

      

      进入容器

    docker exec -it  containerID /bin/bash
    

      nesnter 工具

      需要下载工具,并且链接 docker 

      

      删除容器

    docker rm containerID
    

      

      docker 仓库

      docker 仓库类似于代码仓库,是 docker 集中存放镜像文件的位置。

      数据卷

      

      创建数据卷

    docker run -d -p --name  -v /container/dir:/local/dir  imageName
    

      

      -v : 创建一个数据卷。

      一个宿主目录和容器目录的映射。

      创建数据卷容器

    docker run-it -v /local/dbdata  --name con1  ubuntu
    

      共享数据卷容器

    docker run -it --volumes-from con1 --name con2 ubuntu
    

      

       con1 和 con2  同时共享 /dbdata 目录。

      利用数据卷容器迁移数据

       1、备份数据

    docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu 
    

      创建一个容器且挂在到 dbdata 上面,-v 创建数据卷

    tar cvf  /backup/backup.tar  /dbdata
    

      打包数据tar

      2、恢复数据

    tar xvf /backup/backup.tar
    

      解压数据

     

      端口映射

    docker run  -p 5000:30000  name  image
    

      p : 将本地端口映射到容器端口上

    Dockerfile 创建镜像 

      dockerfile 是一个文本格式的配置文件,可以快速的创建自定义镜像。

      基本结构

      dockerfile 是一行行命令语句组成。

      一般分为四个部分:

      基本镜像信息、维护者信息、镜像操作者、容器启动指令

       配置

       1、FROM  <image[:tag]>

      指定配置的镜像

      2、MAINTAINER  <name>

      作者名称

      3、RUN  <command>

      在 shell 运行命令,即 /bin/bash  -c

      4、CMD  [] <command>

      执行命令,只会执行最后一条

      5、EXPOSE  ports

      暴漏执行端口,可外部访问或者 -p 映射

      

      6、ENV  <key>  <value>

      指定环境变量,在配置全局可以使用

      7、ADD/COPY  <src> <dest>

      指定本地的链接到容器目录

      8、ENTRYTRYOINT  <command>

      容器启动后,执行到命令

      9、VOLUME ["data"]

      创建一个主机或者其他数据卷挂载点

      10、USER daemon

      指定用户名称

     

      创建镜像

      编写完成 dockerfile 文件之后,可以用 docker build 创建镜像。 

  • 相关阅读:
    循环控制Goto、Break、Continue
    linux多进/线程编程(6)——进程间通信之信号
    linux多进/线程编程(5)——进程间通信之mmap
    docker学习笔记(6)——docker场景问题汇总(centos7 由于内核版本低带来的一系列问题,docker彻底卸载,安装、启动日志报错分析)
    c/c++ 日常积累
    broken pipe 报错分析和解决办法
    c/c++ 常见字符串处理函数总结 strlen/sizeof strcpy/memcpy/strncpy strcat/strncat strcmp/strncmp sprintf/sscanf strtok/split/getline atoi/atof/atol
    docker学习笔记(5)——docker场景问题汇总(docker权限问题、docker文件目录、查看docker历史日志文件)
    linux多进/线程编程(4)——进程间通信之pipe和fifo
    linux多进/线程编程(3)——wait、waitpid函数和孤儿、僵尸进程
  • 原文地址:https://www.cnblogs.com/jiebba/p/10101799.html
Copyright © 2011-2022 走看看