docker_笔记

先说说什么是镜像(image),什么是容器吧?

这两者有点像《奇异博士》里的那个镜像。镜像就是虚拟出来的世界, 那么我们如何进入到镜像里呢?电影里法师会念咒语,启动程序,才能进入镜像。docker也是一样,启动image,我们就能进去了,进去后的镜像世界就称为容器。

简单点说,没启动的是镜像,启动的是容器。

docker是一种容器打包技术,和虚拟机有点类似,区别不同的是:

1,虚拟机虚拟的是整个计算机,包括CPU,内存等等。而docker虚拟的是操作系统的内核,(可以理解成:它能让你在虚拟的操作系统上自由玩耍,和真的操作系统一样)。
2,docker不只虚拟一个,它可以虚拟N多个,数字很吓人,而且N多
个之间互不干>扰,它们之间具有进程级别的隔离,且享受底层资源。

那么,docker怎么玩呢?

1,很简单,首先要先安装docker(我这里是在centos下安装的),因为我用了阿里88的yum源,所以一个命令就搞定yum install docker
2,安装成功后,需要一个基本image,你才能启动起来玩,所以这一步需要下载一个基本image。可以在dockerHub下找一个官方的pull下来,我的基本image是centOs。也可以通过命令docker search (你要找的image)。
3,看了很多资料,有两种方法:1,通过dockerfile来构建 2,通过commit 方式来构建。本人用的是第2种方法。这里贴下步骤吧:

我的基本image是docker.io/centos。有了image,我就可以启动它,并且进入到容器里去玩耍。
docker run -i -t -v /web/:/web/ 67591570dd29 /bin/bash(这是启动命令)

其中,相关参数包括:

-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入其命令行
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
假设我们的所有安装程序都放在了宿主机的/web/目录下,现在需要将其挂载到容器的/web/目录下。
需要说明的是,不一定要使用“镜像 ID”,也可以使用“仓库名:标签名”,例如:docker.io/centos:latest
初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。
4,此时就进入容器内部了,进去后命令头就是这样的 [root@fcd41e085baf /]#
在容器里,你想怎么疯都可以,就像电影里一样,玩疯了都影响不到外面的世界,大不了把这个容器Kill掉。

想在容器里搭建一个开发环境怎么办?刚才启动image时我把主机里/web下的所有内容(jdk,tomcat)都挂载到容器的/web下了。(有人会问,你怎么知道容器里有个web目录呢)

简单分析一下:我启动的image是centos,那么它的目录结构和centos是一样的,命令操作方式也是一样的。当然centos根目录下是没有web目录的,挂载到容器时自动生成的。
5,这个时候,容器里就有了jdk,tomcat了(都是以压缩包的形式传送的),解压配置环境变量:

设置环境变量

首先,编辑.bashrc文件
vi ~/.bashrc
然后,在该文件末尾添加如下配置:
export JAVA_HOME-/jdk
export PATH=$PATH:$JAVA_HOME
最后,需要使用source命令,让环境变量生效:
source ~/.bashrc
编写运行脚本
我们需要编写一个运行脚本,当启动容器时,运行该脚本,启动 Tomcat,具体过程如下:
首先,创建运行脚本:vi /root/run.sh
然后,编辑脚本内容如下:
!/bin/bash
source ~/.bashrc
sh /tomcat/bin/catalina.sh run
注意:这里必须先加载环境变量,然后使用 Tomcat 的运行脚本来启动 Tomcat 服务。
最后,为运行脚本添加执行权限:chmod u+x /root/run.sh
6,exit退出容器,这时就从虚拟世界出来了。可以通过docker ps -a查看容器

7,到了这一步,就可以通过容器(带有JDK,tomcat的)来构建一个新的image,有人问,为什么要再构建一个image呢?没有JDK,tomcat,你的应用程序能在容器里自由的玩耍吗?
docker commit 9169b9b235e2 wjb/javaweb:0.1 这个命令可以把刚才带有JDK,tomcat的容器构建成一个新的image。
9169b9b235e2 是刚才那个容器的ID,wjb/javaweb:0.1是我给这个新的image起的名字。
8,可以通过docker images查看你拥有的所有镜像,没出错的话,应该能看到刚才新构建的image了。
与上次启动容器不同的是,我们现在不再进入容器的命令行,而是直接启动容器内部的 Tomcat 服务。这里有另一种方式:
docker run -d -p 8090:8080 --name javaweb wjb/javaweb:0.1 /root/run.sh

稍作解释:

-d:表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。
-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 8090 端口,这样就向外界暴露了 8090端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
--name:表示容器名称,用一个有意义的名称命名即可。
关于 Docker 网桥的内容,需要补充说明一下。实际上 Docker 在宿主机与容器之间,搭建了一座网络通信的桥梁,我们可通过宿主机 IP 地址与端口号来映射容器内部的 IP 地址与端口号,
在一系列参数后面的是“镜像名”或“镜像 ID”,怎么方便就怎么来。最后是“初始命令”,它是上面编写的运行脚本,里面封装了加载环境变量并启动 Tomcat 服务的命令。
当运行以上命令后,会立即输出一长串“容器 ID”,我们可通过docker ps命令来查看当前正在运行的容器。
9,此时新的镜像启动了,并且启动了容器内部的tomcat命令,可以在宿主机输入http://localhost:8090访问,没错的话,应该是tomcat首页。

再介绍点基本命令:

1,docker stop 你要停止的容器ID
2,docker start 你要启动的容器ID
3,直接进入容器的命令 docker exec -t -i 你的容器ID /bin/bash
4, 删除容器 docker rmi 你的容器ID
5,停止所有的容器,才能对image进行删除操作。docker stop $(docker ps -a -q)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容