Docker基础(2)—— Docker安装及基础操作

Docker基础(1)—— Docker基本概念
Docker基础(2)—— Docker安装及基础操作

二、环境配置

1、下载安装

macOS安装Docker还是比较简单的。下载 StableEdge 版本的 Docker for Mac,安装。

也可以使用Homebrew安装:$ brew cask install docker 。

Windows用户可以参考教程

2、运行

点击Docker图标运行之后右上角菜单栏会出现一个鲸鱼图标,这个图标表明了Docker的运行状态。

第一次点击图标,可能会看到这个安装成功的界面,点击 "Got it!" 可以关闭这个窗口。

以后每次点击鲸鱼图标会弹出操作菜单。

启动终端,通过命令可以检查安装后的 Docker 版本。

下面尝试运行一个Nginx服务器:

3、镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,建议安装 Docker 之后配置国内镜像加速。

三、Docker架构

DOCKER_HOST:我们进行操作的宿主机
Docker daemon:守护进程(核心程序),做各种Docker操作
Client:客户端,将命令交给daemon,由daemon来做实际的操作
Registry:仓库,所有Docker玩家共享Docker镜像的服务 (Docker Registry提供一个集中的存储、分发镜像的服务)

四、实战之镜像操作

1、拉取镜像

1.1 可以去Docker hub查找自己想要的镜像

也可以使用 > docker search nginx 指令。

1.2 指令:> docker pull nginx

执行Docker run 时若在本地找不到镜像,则会去仓库拉取,存于本地。

2、列出镜像

2.1查看已有镜像:> docker images 等同于 > docker image ls

ls只显示顶层镜像,加上-a可显示中间层镜像,这样会看到很多无标签的镜像。这些无标签的镜像很多都是中间层镜像,是其它镜像所依赖的镜像。(这些无标签镜像不应该删除,否则会导致上层镜像因为依赖丢失而出错。实际上,这些镜像也没必要删除,因为相同的层只会存一遍,而这些镜像是别的镜像的依赖,因此并不会因为它们被列出来而多存了一份。当删除那些依赖它们的镜像后,这些依赖的中间层镜像也会被连带删除。)

若想列出部分镜像可在ls后加镜像仓库名 如:> docker image ls ubuntu

3、删除本地镜像 > docker image rm

4、构建镜像

4.1 使用Dockerfile定制镜像

在一个空白目录中,建立一个文本文件,并命名为 Dockerfile。内容为:

这个 Dockerfile 很简单,一共就两行。涉及到了两条指令,FROM 和 RUN 。

FROM指令指定基础镜像,RUN指令用来执行命令(RUN指令会在一个容器中进行操作)。还有很多其他的Dockerfile指令(如:COPY、ADD、CMD、ENTRYPOINT、ENV、ARG、WORKDIR、EXPOSE 等)可自行学习。

4.2 构建镜像 > docker build -t nginx:v4 .

“.”表示当前目录,用于指定上下文路径

当我们进行镜像构建的时候,并非所有定制都会通过 RUN 指令完成,经常会需要将一些本地文件复制进镜像,比如通过 COPY 指令、ADD 指令等。而 docker build 命令构建镜像,其实并非在本地构建,而是在服务端,也就是 Docker 引擎中构建的。那么在这种客户端/服务端的架构中,如何才能让服务端获得本地文件呢?

这就引入了上下文的概念。当构建的时候,用户会指定构建镜像上下文的路径,docker build 命令得知这个路径后,会将路径下的所有内容打包,然后上传给 Docker 引擎。这样 Docker 引擎收到这个上下文包后,展开就会获得构建镜像所需的一切文件。(若路径下有些文件不需要上传给Docker引擎,可以将其放在.dockerignore中)

构建成功,测试一下:

5、上传镜像 > docker push

5.1 上传前要先登陆Docker Hub

指令 > docker login ,输入用户名和密码。

5.2 更改仓库名

指令 > docker tag nginx:v4 huangbaoling/nginx ,我这里没写标签则默认是latest,我们也可以 > docker tag nginx:v4 huangbaoling/nginx:4

(对已有Docker镜像做tag,注意新tag需要附带注册用户名huangbaoling。如果是在内网仓库操作则附带服务器地址 docker.sunseaiot.cn)

当没有做tag直接push时,默认的路径是library,是官方镜像段路径。前面提到的两段式路径是多用户环境下,推送镜像段规范是:> docker push 注册用户名/镜像名

上传成功。

五、实战之容器操作

1、新建并启动容器

1.1 查看已有镜像:> docker images

1.2 启动容器指令:> docker run -d -p 8088:80 nginx

这个写法有误,-d后再-it是无效的,会直接进入后台
-it相当于-i加-t,会进入shell终端,可以操作nginx

-d:后台运行容器并打印容器

-i:保证输入有效

-t:分配个伪终端

-p:开放容器端口给主机 (-p 本机端口:镜像端口),Docker Hub上可查看到镜像端口和镜像使用到一些信息

其他参数用法可参考 >docker run -help

2、进入容器

2.1 ps指令查看进程信息

容器外:> docker ps 列出所有运行的容器

容器内:> ps -ef

查看容器信息指令 > docker container ls 和 > docker ps 是一样的效果

2.2 进入容器内部 > docker exec -it ____ bash

(____中填写容器ID、容器名,ID可以只填部分数据,只要能与其他容器区分)

2.3 退出容器 exit

注意退出容器并不是终止容器,容器仍然在运行。

(这针对的是2.2的情况,若执行的docker run -it ubuntu,因为没有后台运行-d,所以在伪终端执行exit后容器也就结束了。)

3、 终止容器 > docker container stop ____

(____中可填写容器ID、容器名,可以只填部分数据,只要能与其他容器区分)

在容器中写入的内容会存放在容器存储层,若只是将容器stop,存储层中的内容不会消失,下次restart还在,若是将容器remove,容器存储层会随着容器一起消失,所以若想保存内容,应当挂载到外部宿主。

4、 删除容器

4.1 单个删除 > docker container rm _____

(____中可填写容器ID、容器名,可以只填部分数据,只要能与其他容器区分)

4.2 清除所有出于终止状态的容器 > docker container prune

六、总结

容器技术有很多种,Docker只是其中一种,只是它的流行度比较高。注意区分容器技术和虚拟化技术的区别(容器和虚拟机之间的主要区别在于虚拟化层的位置和操作系统资源的使用方式)。

前面我们分析了容器的轻量的原因,但因此也会给容器带来局限性:一,由于所有容器都是与宿主机共用内核的,容器与容器之间的隔离性就会差很多;二,容器里面是不存放数据的,容器里面的数据会随着容器的生命周期而消失,如果想要持久化的存储,必须要依靠外部的存储设备。(所有的文件写入操作,都应该使用 数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器删除或者重新运行之后,数据却不会丢失。)

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

推荐阅读更多精彩内容

  • 《Docker从入门到实践》阅读笔记 原书地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo阅读 11,352评论 1 39
  • 在前面两节我们学习了如何安装以及简单的运行管理docker容器,在本节我们将会更多的探讨关于docker镜像的知识...
    井底蛙蛙呱呱呱阅读 4,079评论 0 5
  • docker基本概念 1. Image Definition 镜像 Image 就是一堆只读层 read-only...
    慢清尘阅读 8,720评论 1 21
  • 只要有远方的朋友来,我都会带他们来见你,因为你的尊容美丽,因为你的底蕴深厚、大气——你的每一棵树都有来历,树上的松...
    谌历阅读 3,090评论 46 156
  • 有供应必然有需求,有需求必然有供应。 在市场中,当供应大于需求时,这时表现为供过于求(商品过多,贬值)。当需求大于...
    Senven诗玛阅读 559评论 0 0