Docker 初级实践
Docker
应用
优势
与虚拟相比Docker更加轻量高效,更加方便移植。虚拟机提供的是完整的操作系统环境,包含了大量类似硬件驱动、虚拟处理器、网络接口等等并不需要的信息,也需要比较长时间的启动,同时也会消耗大量的内存、CPU资源,迁移的时候太大了。
历史
互联网文章 :Docker 集装箱式"运输"在软件上的实现
centos 6.5上 安装Docker
rpm -ivh http://ftp.sjtu.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
yum install docker-io -y
service docker start
chkconfig docker on
#获取最新的centos镜像
docker pull centos:latest
#查看可用镜像
docker images centos
#测试镜像
docker run -i -t centos /bin/bash
关于EPEL
当 Fedora 项目的维护人员发现可以采用管理 Fedora 项目的方法,来管理针对企业版 Linux 的附加软件包项目时,一个新的伟大的项目诞生了!项目诞生之初只是加入了一些在 RHEL 维护 Fedora 的工具。随着时间的发展,EPEL 仓库越来越丰富,成为一个大型的软件收集仓库。
关注:https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F
docker run
#外部调用容器命令
docker run centos /bin/echo 'Hello world'
#容器交互(t分配伪终端i指定容器)
docker run -t -i centos /bin/bash
#退出容器交互终端
bash-4.2# exit
#后台执行-d(输出container ID)
docker run -d centos /bin/sh -c "while true; do echo hello world; sleep 1; done"
894e36b70a671e67252c0034b8eda47059f20dea0edf49700737d6311851a504
#查看容器守护进程(drunk_feynman容器自动分配的标记)
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
894e36b70a67 centos:latest /bin/sh -c 'while tr 2 minutes ago Up 2 minutes drunk_feynman
#查看容器标准输出
docker logs drunk_feynman
#停止容器程序(返回对应的name表示停止成功)
docker stop drunk_feynman
#查看所有容器历史
docker ps -a
#恢复指定容器的最后状态
docker start 942ca54d1f94
#进去一个后台运行的容器
docker attach 942ca54d1f94
Docker Images
获取镜像
#查看本地image
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos latest 1a7dc42f78ba 43 hours ago 236.4 MB
#搜索镜像
docker search centos
#从hub获取cetnos镜像
docker pull centos
创建自己的镜像
- 在容器里面一旦退出,所有的操作都不被保留
[root@localhost ~]# docker run -t -i centos /bin/bash
bash-4.2# touch qiyue
bash-4.2# exit
exit
[root@localhost ~]# docker run -t -i centos /bin/bash
bash-4.2# ls qiyue
ls: cannot access qiyue: No such file or directory - 通过commit来提交image
[root@localhost ~]# docker run -t -i centos /bin/bash
bash-4.2# touch qiyue
#这里不退出交互终端,另外开一个窗口
[root@localhost ~]# docker imagesdocker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6e98177d50f9 centos:latest /bin/bash 15 seconds ago Up 15 seconds cranky_euclid
#-m 类似git的标记信息, -a 作者 6e98177d50f9为CONTAINER ID,centos:test_1为新的镜像名字
[root@localhost ~]# docker commit -m "add qiyue" -a "wenhao" 6e98177d50f9 centos:test_1
9d9d923e47f5189759174481f6543acf08959a1b93993a9246a6652c03603268
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos test_1 9d9d923e47f5 18 minutes ago 236.4 MB
centos latest 1a7dc42f78ba 42 hours ago 236.4 MB
[root@localhost ~]# docker run -t -i centos:test_1 /bin/bash
bash-4.2# ls qiyue
qiyue - 通过 Dockerfile 创建镜像
#创建一个目录,并在目录写 touch Dockerfile
mkdir /vagrant/wenhao
cd /vagrant/wenhao/
touch Dockerfile#Dockerfile 配置信息
FROM centos:latest
MAINTAINER caiwenhao
RUN yum install nginx -y
RUN yum install mysql -y#这里必须包含. 表示当前目录下的Dockerfile
docker build -t="centos:test_2" .
[root@localhost wenhao]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos test_2 156d947ce048 22 seconds ago 375.1 MB
centos test_1 9d9d923e47f5 43 minutes ago 236.4 MB
centos latest 1a7dc42f78ba 42 hours ago 236.4 MB
[root@localhost wenhao]# docker run -t -i centos:test_2 /bin/bash
bash-4.2# mysql -V
mysql Ver 15.1 Distrib 5.5.37-MariaDB, for Linux (x86_64) using readline 5.1
设置 image tags
[root@localhost wenhao]# docker tag 156d947ce048 centos:test_3
[root@localhost wenhao]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos test_2 156d947ce048 6 minutes ago 375.1 MB
centos test_3 156d947ce048 6 minutes ago 375.1 MB
centos test_1 9d9d923e47f5 49 minutes ago 236.4 MB
centos latest 1a7dc42f78ba 42 hours ago 236.4 MB
删除 image
[root@localhost wenhao]# docker rmi -f centos:test_1
Untagged: centos:test_1
Deleted: 9d9d923e47f5189759174481f6543acf08959a1b93993a9246a6652c03603268
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos test_2 156d947ce048 58 minutes ago 375.1 MB
centos latest 1a7dc42f78ba 43 hours ago 236.4 MB
提交 image到Docker Hub
[root@localhost ~]# docker login
Username: caiwenhao
Password:
Email: caiwenhao186@live.com
[root@localhost ~]# docker push centos:test_2
在Docker中运行python web
初始化python环境
docker run -t -i centos /bin/bash
yum install wget
wget https://bootstrap.pypa.io/ez_setup.py -O - | python
easy_install tornado
mkdir /data
vim /data/web.py
web.py
import tornado.ioloop
import tornado.web class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world") application = tornado.web.Application([
(r"/", MainHandler),
]) if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
创建容器并后台运行
docker commit -m "add python" -a "wenhao" 2b5ae98645cd centos:python
docker run -d -p 3333:8888 centos:python python /data/web.py
curl http://127.0.0.1:3333
Docker Hub
Docker 初级实践的更多相关文章
- 实验5 Spark SQL编程初级实践
今天做实验[Spark SQL 编程初级实践],虽然网上有答案,但都是用scala语言写的,于是我用java语言重写实现一下. 1 .Spark SQL 基本操作将下列 JSON 格式数据复制到 Li ...
- 【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World
操作环境 操作系统:CentOS7.2 内存:1GB CPU:2核 Docker服务常用命令 docker服务操作命令如下 service docker start #启动服务 service doc ...
- docker简易实践
docker简易实践 实验环境 操作系统:deepin 15.4 安装步骤 1.安装docker sudo apt-get install docker.io 2.启动docker服务 sudo se ...
- 这是一次 docker 入门实践
前言 其实接触 docker 也有一段时间了,但是一直没有做下总结,现在网上关于 docker 的介绍也有很多了,本着好记性不如烂笔头的原则,还是自己再记录一波吧. 实现目标 安装 docker ce ...
- docker最佳实践-----美团点评的分享
美团点评容器平台简介 本文介绍美团点评的Docker容器集群管理平台(以下简称“容器平台”).该平台始于2015年,是基于美团云的基础架构和组件而开发的Docker容器集群管理平台.目前该平台为美团点 ...
- 实验 5 Spark SQL 编程初级实践
实验 5 Spark SQL 编程初级实践 参考厦门大学林子雨 1. Spark SQL 基本操作 将下列 json 数据复制到你的 ubuntu 系统/usr/local/spark 下,并 ...
- 项目中docker swarm实践
docker swarm 集群服务通信 前置要求 服务需要在同一个docker swarm集群中 服务需要处于同一个overlay网络上 服务需要暴露容器端口 有2个以上服务名不同的服务 服务部署流程 ...
- 实验 2 Scala 编程初级实践
实验 2 Scala 编程初级实践 一.实验目的 1.掌握 Scala 语言的基本语法.数据结构和控制结构: 2.掌握面向对象编程的基础知识,能够编写自定义类和特质: 3.掌握函数式编程的基础知识,能 ...
- CI Weekly #17 | flow.ci 支持 Java 构建以及 Docker/DevOps 实践分享
这周一,我们迫不及待写下了最新的 changelog -- 项目语言新增「Java」.创建 Java 项目工作流和其它语言项目配置很相似,flow.ci 提供了默认的 Java 项目构建流程模版,快去 ...
随机推荐
- div如何加滚动条
<div style="position:absolute; height:400px; overflow:auto"></div>div 设置滚动条显示: ...
- myeclipse跟eclipse中使用github做版本控制工具
今天早上花了一上午的时间,了解了在myeclipse跟eclipse中使用github. 好吧 说说怎么做的,让大伙少走一点路,我就简单描述下,需要软件的私信我 第一:下载git 第二:靠谱.但是pu ...
- Ext.ComponentQuery.query()
转载:http://blog.csdn.net/jiushuai/article/details/7938476 用来找特点的所有容器(Ext.container.Container)或是通过Ext. ...
- 解决ASP.NET中ReportView与IE11的兼容性问题
前久发现以前用ReportView开发的一个软件的报表,在IE11上运行时出错,陆续查了好几天才解决了问题. 开发环境: VS2010,ReportView 10.0.402,RDLC报表模板 问题: ...
- 二十分钟弄懂C++11 的 rvalue reference (C++ 性能剖析 (5))
C++ 11加了许多新的功能.其中对C++性能和我们设计class的constructor或assignment可能产生重大影响的非rvalue reference莫属!我看了不少资料,能说清它的不多 ...
- [LeetCode OJ] Reorder List—Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…
For example,Given {1,2,3,4}, reorder it to {1,4,2,3}. /** * Definition for singly-linked list. * str ...
- PHP迭代器
在所有语言中,所有迭代器都必须具有如下4想功能: 1.回滚迭代器到第一个元素 2.潜行到下一个元素 3.获取当前元素 4.验证是否到最后一个元素了 在PHP中我我们可以通过实现iterator来实现迭 ...
- python3 解析apk图标
有两处值小点,一是如何解压缩,另一个是如何写文件,第二点上我找的是phthon2的代码,一直写文件的时候报不是字符串的问题,将打开方式加上"b“的模式搞定 print文件出来直接删除了,原因 ...
- 文件操作-php
<?php /* 建立缓存 可以用文件长时间保存数据 文件是以liunux为模型的 在Windows下只能获取file ,dir unknow linux 下可以获取block char dir ...
- access数据库管理软件收集下载
access百科 Microsoft Office Access是由微软发布的关系数据库管理系统.它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Mi ...