关闭

Docker解析及轻量级PaaS平台演练(二)--Docker的一些简单命令

标签: docker虚拟化技术
1319人阅读 评论(0) 收藏 举报
分类:

上一篇中,我们对Docker有了一个基本的了解
下面将讨论Docker中Image,Container的相关实际操作

Image管理:

镜像的命名和版本管理:

普通镜像的命名规范
{namespace}/{repository}:{tag}

namespace是docker hub的用户名
repository是项目名称,如:Ubuntu,mysql等
tag表示版本信息,例如:cesc/mysql:5.5,tag是可选的,默认为latest

显示本地的images

docker images

我们可以通过docker命令从Docker Hub上拉取镜像回本地:

docker pull {image name}
//如果没有指定image的tag的话,会把该image的所有版本都下载下来

上传镜像:

docker login
//登陆到docker hub中

docker commit containerId
//将一个指定的Container打包成一个image,这时会返回一个临时的imageId(一大串)

docker tag imageId {namespace}/{repository}:{tag}
//根据imageId重命名image

docker push {namespace}/{repository}:{tag}
//push到docker hub

运行Container:

在Host看来,运行一个Container就是开启一个独立namespace进程而已

通过docker run命令来启动一个container,必须指定一个image作为初始化的文件系统

docker run [options] image[:tag] [commond][args]
//[options]表示一些运行参数
//如-t,表示后面用哪个image作为template
//-d,表示后台运行等

//[commond],表示可以输入一些linux命令 如ls等,作为container实际运行的首进程
//[args],表示上面的命令需要的参数,如-al

如果-t 后面的image不存在本地的话,会自动到docker hub上下载对应的image

docker run -d -t image[:tag]//-d让container运行在后台

docker run -a stdin//默认是运行在前台的,会将输入,输出和错误信息打印出来,通过-a来限制只有stdin,这样就看不到输出和错误信息了

docker attach containerId//将一个后台的container attach到前台

docker ps//查看当前的container,用法和linux中的ps类似

docker inspect containerId//获得指定container的所有信息

docker logs containerId//查看指定container的日志信息

网络设置:

Docker默认使用桥接的方式,如下图:

这里写图片描述

Host上对应每个Container都有veth{id}这样的虚拟网卡,对应每个Container里面的eth0,Host上的bridge负责将数据在各个veth中转发,以达到通信的目的

docker run -dt --net none image[:tag] 
//none关闭网络
//host使用主机网络栈,将不做veth映射
//container:{containerId}使用另外一个container的网络

端口映射:

docker通过端口映射的方式,能够将container内部的网络端口暴露到外部

docker run -dt -p 80:8000 image[:tag] 
//将内部的80端口暴露出来,外部可以通过8000访问到,如果没有指定外部对应的端口号,将会默认分配一个49000-49900之间的一个端口,可以通过docker ps来查看自动分配的端口

Volume绑定:

通过-v参数可以将Host上的一个目录绑定到container中,允许container对其进行读写

docker -dt -v /home/jchubby:/test image[:tag]
//将host上的/home/jchubby映射到container中的/test目录

环境变量设置:

既然container可以看成一个独立的os,那么肯定会有环境变量的设置

举一个例子来说明:
有两个container,a是提供数据库服务的,b是web应用,那么b要怎么才能知道a的主机ip,端口等信息,然后进行服务接入呢?

docker run --name mysql -dt image[:tag]
//通过--name为该container指定一个唯一的name

docker run --link mysql:db -dt image[:tag]
//通过link参数,可以将指定name(mysql)的container信息以环境变量的方式加到当前的container中,:db是mysql的别名

–link运行产生的环境变量结果如下:

这里写图片描述

如何进入Container:

每个Container都是一个独立的os,我们可以像操作VM虚拟机一样操作它

连接到Container有三种方式:

1、sshd
需要在Container中安装sshd服务,然后通过ssh连接即可(安全性不高)

2、nsenter
由linux提供,用来进入一个进程的namespace

docker inspect --format "{{.State.Pid}}" <container-id>
//首先要获得Container在host中的进程id

nsenter --target $pid --mount --uts --ipc --net --pid
//然后通过下面的命令进入Container

3、exec
是Docker新进入的一个命令,用来进入一个Container来运行一些指令

docker exec containerId commod args
2
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

【docker】docker run命令详解

docker run命令用于运行一个新容器,
  • one_clouder
  • one_clouder
  • 2014-09-12 06:49
  • 19089

Docker解析及轻量级PaaS平台演练(一)--Docker简介与安装

Container技术:传统的虚拟化技术: 通过对硬件层模拟,从而实现了能够在一套硬件上面运行多个操作系统,因为通过硬件虚拟化,使得操作系统认为在它之下就是硬件层但是实际情况是这样的:虚拟机中的OS...
  • qq1010885678
  • qq1010885678
  • 2015-05-31 19:37
  • 2724

Flynn初探:基于Docker的PaaS平台

[Flynn](https://flynn.io/)是一个开源的PaaS平台,可自动构建部署任何应用到Docker容器集群上运行,其功能特性与组件设计大量参考了传统的PaaS平台[Heroku](ht...
  • TragicJun
  • TragicJun
  • 2014-11-19 01:04
  • 8344

docker解析及轻量级PAAS平台演练

课程介绍: 第一周: 介绍什么是虚拟化技术,虚拟化技术给我们带来了什么好处。比较基于Hypervisor实现的虚拟化和Container技术实现的虚拟化的区别。介绍什么是Docker,...
  • docker1
  • docker1
  • 2015-01-05 10:06
  • 124

4.1 docker-1.12 run命令运行以及参数详解

以上几篇内容,我们基本了解了docker的image,container,dockerfile的一些信息。 这一篇开始,我们要进入正题了,也就是正式开始入门的我们docker,和使用它。 首先,我们...
  • kunloz520
  • kunloz520
  • 2016-12-23 14:34
  • 24878

Docker常用命令

又把官方文档过了一遍,总结一下常用命令 镜像管理 docker images:列出本地所有镜像 docker search :查找image docker pull :下载image doc...
  • zhang__jiayu
  • zhang__jiayu
  • 2015-01-11 15:45
  • 50370

常用docker命令

一、与镜像相关1.搜索可用镜像# docker search imagesName 2.删除镜像# docker rmi -f imageID/imagesName3.拉取镜像 ...
  • yjk13703623757
  • yjk13703623757
  • 2016-11-17 17:42
  • 721

docker-1.12 run命令运行以及参数详解

http://blog.csdn.net/kunloz520/article/details/53839237 这一篇开始,我们要进入正题了,也就是正式开始入门的我们Docker,和使用它。 ...
  • chengly0129
  • chengly0129
  • 2017-04-10 11:44
  • 1612

基于Docker开发的PaaS平台 DINP

DINP是又一个基于Docker开发的PaaS平台。 DINP 包含如下组件: dinp-server master组件,控制集群中所有计算节点 dinp-agent Agent,部...
  • xiangxizhishi
  • xiangxizhishi
  • 2016-11-02 21:52
  • 153

Docker命令使用详解

1. docker version 显示 Docker 版本信息。 2. docker info 显示 Docker 系统信息,包括镜像和容器数。 3. docker search ...
  • chengxuyuanyonghu
  • chengxuyuanyonghu
  • 2017-01-10 17:33
  • 773
    个人资料
    • 访问:400588次
    • 积分:5449
    • 等级:
    • 排名:第5744名
    • 原创:164篇
    • 转载:2篇
    • 译文:0篇
    • 评论:112条
    文章分类
    最新评论