Docker解析及轻量级PaaS平台演练(二)--Docker的一些简单命令
来源:互联网 发布:js统计网站访问次数 编辑:程序博客网 时间:2024/05/16 15:43
上一篇中,我们对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重命名imagedocker 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指定一个唯一的namedocker 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中的进程idnsenter --target $pid --mount --uts --ipc --net --pid//然后通过下面的命令进入Container
3、exec
是Docker新进入的一个命令,用来进入一个Container来运行一些指令
docker exec containerId commod args
- Docker解析及轻量级PaaS平台演练(二)--Docker的一些简单命令
- docker解析及轻量级PAAS平台演练
- Docker解析及轻量级PaaS平台演练(一)--Docker简介与安装
- Docker解析及轻量级PaaS平台演练(三)--Dockerfile编写
- Docker解析及轻量级PaaS平台演练(四)--Fig相关介绍
- Flynn初探:基于Docker的PaaS平台
- 基于Docker开发的PaaS平台 DINP
- Flynn初探:基于Docker的PaaS平台
- docker 操作的一些简单命令
- docker的一些命令
- docker的一些命令
- docker命令,一些常用的docker命令
- 基于Docker及Kubernetes技术构建容器云(PaaS)平台概述
- 基于Docker技术的容器云(PaaS)平台基础理解(转载)
- docker的一些基本命令
- 一些常用的docker 命令
- 关于docker的一些命令
- 一些常用的docker 命令
- IPv6邻居发现协议简介
- c++为什么需要指针
- 说说View的绘制流程(一)
- [C/C++标准库]_[初级]_[map的查找函数分析]
- python程序打包成exe方案
- Docker解析及轻量级PaaS平台演练(二)--Docker的一些简单命令
- Android 纹理定距离移动(openGl可以看这货代码)
- 会员卡管理系统技术解析(五)添加会员卡发放信息
- (一)Linux环境部署(Centos+Nginx+Tomcat+Mysql) - FTP安装
- Mark:SQL Server关于CAST和CONVERT的区别和用法
- net start mysql报发生系统错误2
- linux tune2fs命令详解
- 【机房收费个人版】SqlHelper
- hbase java API跟新数据,创建表