zoukankan      html  css  js  c++  java
  • Docker学习笔记

    1.Docker简介

    Docker是一个开源应用容器引擎,可以将应用打包到容器中,并移植到任何流行的Linux机器上。

    Docker是一个开源应用容器引擎,是为开发者和系统管理员设计的,用来发布和运行分布式应用程序的一个开放性平台,开发者可以将应用及其所依赖的包打包到容器中,并移植到任何流行的Linux机器上。与虚拟机实现操作系统级别的隔离不同,Docker实现的是应用程序级别的隔离,利用namespace实现系统环境的隔离,利用cgroup实现资源的隔离,利用镜像实现目录环境的隔离。docker利用的是宿主机的内核,运行在docker上的程序可以直接使用物理机上的硬件资源,因此加载一个docker容器只需要几秒钟,一台物理机上只能建立几个虚拟机,但可以很容易的创建成百上千个docker容器。

    Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。

    Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。

    Docker缺点:

    1. Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用
    2. LXC是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的
    3. 隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库
    4. 网络管理相对简单,主要是基于namespace隔离
    5. cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(所以dotcloud主要是按内存收费)
    6. docker对disk的管理比较有限
    7. container随着用户进程的停止而销毁,container中的log等用户数据不便收集

    Docker实例是无状态的。这意味着它们不应该承载任何交易数据,所有数据应该保存在数据库服务器中。

    作为sandbox大概是container的最基本想法了 - 轻量级的隔离机制, 快速重建和销毁, 占用资源少。用docker在开发者的单机环境下模拟分布式软件部署和调试,可谓又快又好。

    2.Docker常用命令

    2.1 查看Docker信息

    Docker版本:docker version

    Docker系统信息:docker info

    2.2 对镜像的操作

    检索image:docker search image_name

    拉取镜像:docker pull image_name

    列出镜像列表:docker images

    删除镜像:docker rmi image_name

    显示一个镜像的历史:docker history image_name

    根据Dockerfile构建镜像:docker build -t image_name Dockerfile_path

    镜像生成容器:docker run -i -t -p 58080:80 -v /root/software/:/mnt/software/ --name test 25c5298b1a36 /bin/bash /root/run.sh

      -i:表示以“交互模式”运行容器

      -t:表示容器启动后会进入其命令行

      -v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>

      -d:容器将会运行在后台模式

      -p:设置端口映射

      --name:设置容器名称

      --rm:容器结束时自动清理其所产生的数据

      --restart=always:机器启动就自动运行容器

      --privileged:容器内部root拥有外部root权限

    保存镜像到一个tar包:docker save image_name -o file_path

    docker save image_name > xx.tar

    加载一个tar格式的镜像:docker load < /home/save.tar

    登录发布镜像:docker login

    docker push new_image_name

    2.3 对容器的操作

    容器默认存放位置:/var/lib/docker/containers

    查看所有正在运行的容器:docker ps

    查看所有容器:docker ps –a

    查看最近一次启动的容器:docker ps –l

    保存对容器的修改:docker commit ID new_image_name

    删除容器:docker rm Name/ID

    删除所有容器:docker rm `docker ps -a -q`

    启动容器:docker start Name/ID

    停止容器:docker stop Name/ID

    重启容器:docker restart Name/ID

    杀死容器:docker kill Name/ID

    从容器中获取日志:docker logs Name/ID

    列出容器中被改变的文件或目录:docker diff Name/ID

    显示容器中的进程信息:docker top Name/ID

    从容器中拷贝文件到本地:docker cp ID:/container_path to_path

    附着到运行的容器上,操作会同步显示到所有附着到此容器的终端上:docker attach ID

    进入到运行的容器中:docker exec –ti Name/ID /bin/bash

    查看docker 容器pid:docker inspect -f "{{.State.Pid}}" ID

    查看容器ip地址:docker inspect --format='{{.NetworkSettings.IPAddress}}' $CONTAINER_ID

  • 相关阅读:
    体验最火的敏捷——SCRUM(厦门,2014.1.4)
    再谈僵尸大会(每日会议)
    神马是敏捷?(4)——敏捷不能当饭吃
    XMLHttpRequest
    xml基础
    element 更换主题
    css3中新增的背景属性和文本效果
    transform rotate旋转 锯齿的解决办法
    优化实现Mobile/Bumped Diffuse
    优化实现Mobile Diffuse动态直接光照shader
  • 原文地址:https://www.cnblogs.com/cisol/p/5873665.html
Copyright © 2011-2022 走看看