docker

一、 解决问题


解决因运行环境而导致系统不可用或者出现 bug 等问题。解决方法就是:提供一个统一的配置环境。

二、 虚拟机


虚拟机(virtual machine)就是带环境安装的一种解决方案。它可以在一种操作系统里面运行另一种操作系统,是全虚拟化的。

缺点:
(1)资源占用多

虚拟机会独占一部分内存和硬盘空间。它运行的时候,其他程序就不能使用这些资源了。哪怕虚拟机里面的应用程序,真正使用的内存只有 1MB,虚拟机依然需要几百 MB 的内存才能运行。

(2)冗余步骤多

虚拟机是完整的操作系统,一些系统级别的操作步骤,往往无法跳过,比如用户登录。

(3)启动慢

启动操作系统需要多久,启动虚拟机就需要多久。可能要等几分钟,应用程序才能真正运行。

三、 Linux 容器


Linux 容器(Linux Containers,缩写为 LXC)不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。

由于容器是进程级别的,相比虚拟机有很多优势。

(1)启动快

容器里面的应用,直接就是底层系统的一个进程,而不是虚拟机内部的进程。所以,启动容器相当于启动本机的一个进程,而不是启动一个操作系统,速度就快很多。

(2)资源占用少

容器只占用需要的资源,不占用那些没有用到的资源;虚拟机由于是完整的操作系统,不可避免要占用所有资源。另外,多个容器可以共享资源,虚拟机都是独享资源。

(3)体积小

容器只要包含用到的组件即可,而虚拟机是整个操作系统的打包,所以容器文件比虚拟机文件要小很多。

总之,容器有点像轻量级的虚拟机,能够提供虚拟化的环境,但是成本开销小得多。

四、 docker 是什么?


Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。

Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

五、docker 的用途


Docker 的主要用途,目前有三大类。

(1)提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。

(2)提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。

(3)组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

六、 image 文件


Docker 把应用程序及其依赖,打包在 image 文件里面。这个 image 文件,就是一个镜像,可以通过它去创建若干容器对象。类似于 Java 中类与对象的关系。

# 列出本机的所有 image 文件。
$ docker image ls

# 删除 image 文件
$ docker image rm [imageName]

# 下载镜像
$ docker pull [imageName]

七、 容器文件


image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。

# 列出本机正在运行的容器
$ docker container ls

# 列出本机所有容器,包括终止运行的容器
$ docker container ls --all

八、 Dockerfile 文件


学会使用 image 文件以后,接下来的问题就是,如何可以生成 image 文件?如果你要推广自己的软件,势必要自己制作 image 文件。

这就需要用到 Dockerfile 文件。它是一个文本文件,用来配置 image。Docker 根据 该文件生成二进制的 image 文件。

九、 容器操作


查看容器:

# 查看正在运行的容器
$ docker ps 

-a 查看所有,-l 上一次运行,-f status=exited 退出的。

创建/运行容器:

docker run

-i 运行;
-t 启动后进入命令行;
-d 启动后创建一个守护进程进入后台运行;
--name 给容器命名;
-v 目录映射关系 本地目录:容器目录
-p 端口映射关系 本机端口:容器端口

# 使用 centos:7 镜像创建一个容器,名字为 mycentos,启动并进入命令行 
docker run -it --name=mycentos centos:7 /bin/bash

使用 exit 退出。

# 使用 centos:7 镜像创建一个容器,名字为 mycentos,启动并进入后台运行 
docker run -id --name=mycentos1 centos:7 

使用 docker exec -it mycentos1 /bin/bash 进入命令行。 exit 退出,但是容器不会关闭。
守护式容器要停止运行,使用命令:docker stop mycentos1 即可。

容器创建后,使用命令 docker start mycentos1 启动。

目录映射

docker run -id --name=mycentos2 -v /usr/local/test:/user/local/test1 centos:7 

这样在本地的 /usr/local/test 就映射到容器的 /user/local/test1 目录,本地的操作会自动同步到容器。
如果映射的是多级目录,可能出现权限不足的提示。可以在创建容器时需要添加参数:--privileged=true

端口映射

docker run -id --name=mycentos3 -p [宿主机端口]:[容器端口] centos:7 

查看IP信息

docker inspect [容器名]
或者:
docker inspect --format='{{.NetworkSettings.IPAddress}}' [容器名]

删除容器

docker rm [容器名/容器id]
注意:无法删除正在运行的容器。

删除镜像

docker rmi [镜像 image id]
注意:无法删除挂载容器的镜像。

文件拷贝

docker cp 用于宿主机与容器进行文件/文件夹交换操作。

docker cp 源文件/文件夹 目标文件/文件夹

十、 国内镜像


https://lug.ustc.edu.cn/wiki/mirrors/help/docker

或者是用阿里云的镜像服务,可以创建私人仓库。

十一、 容器部署


部署一个mysql:

抽取 mysql

docker pull mysql

部署:

docker run -id --name=mymysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

初始化密码为123456,就可以通过宿主机ip、端口33306 去连这个容器里面的mysql 了,如果开了防火墙,需要将 33306开放为可访问。

部署一个 Nginx 容器。

抽取 Nginx

docker pull nginx

部署:

docker run -id --name=mynginx -p 80:80 nginx

配置文件在容器目录 /etc/nginx/nginx.conf

十二、容器备份与迁移


  1. 将容器保存为镜像:
docker commit [容器名] [镜像名]

使用 docker images 查看。

  1. 导出:
docker save -o my.rar [镜像名]

就会在当前目录导出这个文件。

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

推荐阅读更多精彩内容

  • 《Docker从入门到实践》阅读笔记 原书地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo阅读 11,375评论 1 39
  • docker常用命令原理图概览: 按照docker官网上的说法,docker的文件系统分为两层:bootfs和ro...
    燕京博士阅读 2,957评论 2 32
  • 一 、什么是 Docker Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国...
    Blazzer阅读 3,133评论 0 13
  • 同济,总院,27号楼,Pet中心,14:16,空腹等待中 同在等待的说着不同口音的男男女女在七嘴八舌地讨论着检查,...
    IrisG阅读 114评论 0 0
  • 冬日午后的阳光是让人迷恋的,暖而明亮,从窗户中探进,斜斜地倚在墙上,画一扇印象派的窗,或是在地上懒洋洋地躺着,挥发...
    _东哥阅读 341评论 0 2