zoukankan      html  css  js  c++  java
  • Docker的基本使用

    # 转载请留言联系

    • Docker是什么?

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

    Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

    容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

    • Docker的优点

    • 1、简化程序:

    Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。

    • 2、避免选择恐惧症:

    如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

    • 3、节省开支:

    一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

    • Docker组件

    1)Docker 客户端和服务器

    Docker 是一个客户端-服务器(C/S)架构程序。Docker 客户端只需要向 Docker 服务器 或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。Docker 提供了 一个命令行工具 Docker 以及一整套 RESTful API。你可以在同一台宿主机上运行 Docker 守护 进程和客户端,也可以从本地的 Docker 客户端连接到运行在另一台宿主机上的远程 Docker 守护进程。

     

    2)Docker镜像

    Docker 镜像是由文件系统叠加而成(是一种文件的存储形式)。最底端是一个文件引 导系统,即 bootfs,这很像典型的 Linux/Unix 的引导文件系统。Docker 用户几乎永远不会和 引导系统有什么交互。实际上,当一个容器启动后,它将会被移动到内存中,而引导文件系 统则会被卸载,以留出更多的内存供磁盘镜像使用。Docker 容器启动是需要一些文件的, 而这些文件就可以称为 Docker 镜像。

    Docker 把应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。

    image 是二进制文件。实际开发中,一个 image 文件往往通过继承另一个 image 文件,加上一些个性化设置而生成。举例来说,你可以在 Ubuntu 的 image 基础上,往里面加入 Apache 服务器,形成你的 image。

    image 文件是通用的,一台机器的 image 文件拷贝到另一台机器,照样可以使用。一般来说,为了节省时间,我们应该尽量使用别人制作好的 image 文件,而不是自己制作。即使要定制,也应该基于别人的 image 文件进行加工,而不是从零开始制作。

     

    3)Registry(注册中心)

    Docker 用 Registry 来保存用户构建的镜像。Registry 分为公共和私有两种。Docker 公司 运营公共的 Registry 叫做 Docker Hub。用户可以在 Docker Hub 注册账号,分享并保存自己的 镜像(说明:在 Docker Hub 下载镜像巨慢,可以自己构建私有的 Registry)。

     

    4)Docker容器

    Docker 可以帮助你构建和部署容器,你只需要把自己的应用程序或者服务打包放进容 器即可。容器是基于镜像启动起来的,容器中可以运行一个或多个进程。我们可以认为,镜 像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。 容器基于 镜像启动,一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件或者服务。

     

    DOCKER的常用操作

    • Docker的启动与停止

    1)安装(基于Ubuntu16.04)

    sudo apt-key add gpg
    sudo dpkg -i docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb

    2)Docker服务端的启动与停止

    docker是一个客户端-服务端(C/S)架构程序,类似redis。

    - 客户端: docker命令行工具
    - 服务器: Docker守护进程(docker引擎)

    只有在服务端运行时,输入docker的命令才能运行。我们平时用的终端界面就是docker的客户端。

    # 启动docker
    sudo service docker start
    
    # 停止docker
    sudo service docker stop
    
    # 重启docker
    sudo service docker restart

    注意:安装完成Docker后,默认已经启动了docker服务
    • Docker的镜像

    1)搜索可用的docker镜像

    sudo docker search [镜像名字]

    示例:sudo docker search ubuntu

    2)下载docker镜像

    sudo docker pull [镜像名字]

    注意:要写完整的名字

    示例:sudo docker pull ubuntu

    3)加载本地镜像

    如果有已经下载好的镜像,可以直接加载

    sudo docker load -i [包的位置]

    -i, –input string Read from tar archive file, instead of STDIN
    从tar归档文件读取镜像,而不是标准输入流

    示例:sudo docker load -i ./ubuntu.tar

    4) 删除镜像

    sudo docker image rm [镜像名字或镜像id]

    示例:sudo docker image rm ubuntu

    5)镜像的备份与迁移

    我们可以通过save命令将镜像打包成文件,拷贝给别人使用

    sudo docker save -o 保存的文件名 镜像名

    示例:

    sudo docker save -o ./装载了web应用的镜像.tar ubuntu

    然后可以拷贝给别人,别人拿到之后,用3)的方法就可以运行了。

    6)列出镜像

    sudo docker image ls

    • Docker的容器

    1)列出本机正在运行的容器

    sudo docker container ls

    • REPOSITORY:镜像所在的仓库名称
    • TAG:镜像标签
    • IMAGEID:镜像ID
    • CREATED:镜像的创建日期(不是获取该镜像的日期)
    • SIZE:镜像大小

    2)列出本机所有容器,包括已经终止运行的

    sudo docker container ls --all

    3)创建容器

    sudo docker run [option] 镜像名 [向启动容器中传入的命令]

    常用可选参数说明:

    • -i 表示以“交互模式”运行容器
    • -t 表示容器启动后会进入其命令行。加入这-it两个参数后,容器创建就能登录进去。即分配一个伪终端。
    • --name 为创建的容器命名
    • -v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录,即 宿主机目录:容器中目录),可以使 用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后 共享到容器上。
    • -d 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不 会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。
    • -p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射
    • -e 为容器设置环境变量
    • --network=host 表示将主机的网络环境映射到容器中,容器的网络与主机相同

    示例1:  

    如果是创建一个交互式的容器。

    sudo docker run -it --name=myubuntu ubuntu /bin/bash

    在容器中可以随意执行linux命令,就是一个ubuntu的环境,当执行exit命令退出时,该容器也随之停止。注意是停止,不是没了。用sudo docker container ls --all列出所有容器(包括已终止的),可以看到容器还在的。

    示例2:

    如果是创建一个守护式的容器。

    对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。在容器内部exit退出时,容器也不会停止。

    sudo docker run -dit --name=damonubuntu ubuntu [命令(可选)]

    (为什么不用-d而用-dit呢?原因就是:Docker容器后台运行,就必须有一个前台进程。主线程结束,容器会退出。)

    4)进入已运行的容器

    例如,我想进入刚刚创建的守护式容器damonubuntu。

    sudo docker exec -it 容器名或容器id 进入后执行的第一个命令

    示例:sudo docker exec -it damonubuntu /bin/ls

    5)停止与启动容器

    # 停止一个已经在运行的容器
    sudo docker container stop 容器名或容器id
    
    # 启动一个已经停止的容器
    sudo docker container start 容器名或容器id
    
    # kill掉一个已经在运行的容器
    sudo docker container kill 容器名或容器id

    6)删除容器

    sudo docker container rm 容器名或容器id

    7)将容器保存为镜像

    sudo docker commit 容器名 镜像名
  • 相关阅读:
    阿里DatatX mysql8往 Elasticsearch 7 插入时间数据 时区引发的问题
    通俗易懂 k8s (3):kubernetes 服务的注册与发现
    ReplicaSet 和 ReplicationController 的区别
    使用Go module导入本地包
    k8s之statefulset控制器
    终于成功部署 Kubernetes HPA 基于 QPS 进行自动伸缩
    Atitit drmmr outline org stat vb u33.docx Atitit drmmr outline org stat v0 taf.docx Atitit drmmr out
    Atitit all diary index va u33 #alldiary.docx Atitit alldiaryindex v1 t717 目录 1. Fix 1 2. Diary deta
    Atitit path query 路径查询语言 数据检索语言 目录 1.1. List map >> spel 1 1.2. Html数据 》》Css选择符 1 1.3. Json 》map》
    Atitit prgrmlan topic--express lan QL query lan表达式语言 目录 1. 通用表达语言(CEL) 1 1.1. 8.2 功能概述 1 1.2. Ongl
  • 原文地址:https://www.cnblogs.com/chichung/p/10002439.html
Copyright © 2011-2022 走看看