什么是Docker?(概念篇)

此文为Docker概念篇,是自己学习Docker的小笔记。随后会更新一篇部署篇,包含Docker部署MySQL/Tomcat/NGINX/Redis,创建自己的私有Docker hub,镜像上传私有仓库以及镜像的使用。

快速理解docker

本地做好项目之后,在本地打一个镜像放到远程自己的private hub上,这样就可以在服务器上拉远程的镜像到服务器本地,通过docker进行创建一个以镜像为依据的的容器。然后在容器中执行项目启动的指令。在这个容器中包含了你的项目以及项目的依赖包和相关的运行环境。比虚拟机更省资源,项目容错率也会更高。

Docker概念

Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中。然后发布到任何流行的Linux机器上。有CE(社区版)和EE(企业版),是一种容器技术,解决项目迁移问题;

优点:

  • 容易完全沙箱机制,相互隔离

  • 性能开销极低

Docker架构

镜像(image):Docker镜像 就相当于是一个root文件系统。比如官方镜像ubuntu就包含了完整的一套ubuntu16.04最小系统的root文件系统

容器(container): 镜像和容器的关系,就像是面向兑现程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建,启动,停止,删除,暂停等。

仓库(Registries):仓库可看成一个代码控制中心,用来保存镜像的

image-20200317005004682.png

配置Docker镜像加速器

默认情况下,将来从docker hub上下载docker镜像,太慢。一般我们都用阿里云进行镜像加速器,阿里云的控制台进行配置docker。具体的配置流程可以Google一下~

Docker命令

Docker服务相关命令:

启动 停止 重启 开启启动等(Linux Docker可以通过指令在进程中查看是否有Docker进程运行)

Docker镜像相关命令:

查看镜像:

# 列出本地主机上的镜像
docker images 
#显示的选项说明:
#REPOSITORY:表示镜像的仓库源
#TAG:镜像的标签
#IMAGE ID:镜像ID
#CREATED:镜像创建时间
#SIZE:镜像大小

docker images -q 查看所有镜像的ID

搜索镜像(远程):

docker search redis

拉取镜像(远程):

docker pull redis

删除镜像:

docker rmi [images ID]  ---删除某个id
docker rmi 'docker images -q'  #删除所有本地镜像

Docker 容器相关命令(构建好的镜像实例)类似于对一个应用程序的操作:

docker run 命令在一个容器内运行一个程序

docker run ubuntu:15.10 /bin/echo "hello world"

查看容器指令

# 查看当前运行的容器
docker ps

# 查看所有容器,包括停止
docker ps -a

# 查看最新创建的容器,只列出最后创建的
docker ps -l

# 查看网络端口
docker port [容器ID|容器名]

# 查看容器内部的标准输出
docker logs [容器ID|容器名]

# 查看容器内部运行的进程
docker top [容器ID|容器名]

# 查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息
docker inspect [容器ID|容器名]

创建容器:

docker run -it --name=c1 centos:7 /bin/bash
#centos 镜像名 7 是版本号
docker run -id --name=c2 centos:7
#--name 容器名字
-i #保持容器运行,通常于-t同时使用。加入it这两个参数之后,容器创建后会自动进入容器中,退出容器后,容器会自动关闭。
-t #为容器重新分配一个伪输入终端,通常与-i同时使用;
-d #以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭。
-it #创建的容器一般称为交互式容器,-id创建的为守护示容器;
--name #为创建的容器命名;

进入容器:

docker exec -it c2 /bin/bash
#通过--id 方式创建的容器 当你exit退出之后,容器的运行是不会停止的

停止容器:

docker stop [容器|容器名]

启动容器:

docker start [容器ID|容器名]
docker restart [容器ID | 容器名]

删除容器:

# 删除容器,删除容器时,容器必须是停止状态
docker rm [容器ID|容器名]
# 删除所有的容器
docker rm $(docker ps -aq)

查看容器信息:

docker inspect [容器名]

所有的指令中,docker容器的指令由为重要!!! 因为容器才是实例

docker容器的数据卷

数据卷是什么和作用?思考为什么需要数据卷?

1,Docker容器删除后,在容器中产生的数据还在吗?不在

2,docker容器和外部机器可以直接交换文件吗? 不能

3,容器之间想要进行数据交互?就用到了数据卷

数据卷的概念:

宿主机中的一个目录或文件,在react中相当于context,当容器和数据卷目录绑定后,对方的修改会立即同步,一个数据卷可以被多个数据卷同事挂载,一个容器中也可以被挂载多个数据卷。

数据卷的作用:

  • 容器数据的持久化;

  • 外部机器和容器间接通信;

  • 容器之间数据交换;

如何配置数据卷

创建启动容器时,使用-v参数设置数据卷;

docker run ... -v [宿主机目录(文件):容器内目录(文件)] ...
docker run -it -v ~/Desktop/data:/root/data_container --name=c3 centos:7 /bin/bash  #适合mac电脑

参数一定要注意:目录必须是绝对路径;如果目录不存在,会自动进行创建;可以挂载多个数据卷;

一个容器挂载多个数据卷:

docker run -it --name=c4 \
-v ~/Desktop/data1:/root/data1 \
-v ~/Desktop/data2:/root/data2 \
centos:7 /bin/bash

两个容器链接同一个数据卷:

#创建连个容器
docker run -it --name:c5 -v ~/Desktop/data:/root/data centos:7
docker run -it --name:c6 -v ~/Desktop/data:/root/data centos:7
#这样c5和c6中的data就都和宿主机的data数据卷相同。这样就可以共享一份数据卷了
数据卷容器

如果想多容器进行数据交换:

方案1:多个容器挂载在同一个数据卷;

方案2: 数据卷容器;

容器卷容器和宿主机直接进行数据通信,专门的数据容器

#1 创建启动c3数据卷容器,使用-v参数数据卷 c3就是一个数据卷容器了 此刻的目录是容器目录 没有容器卷的目录 docker会在宿主机上自动分配一个目录进行同步
docker run -it --name=c3 -v /volume centos:7 /bin/bash
#2 创建启动c1 c2 容器,使用--volumes-from参数设置数据卷
docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run -it --name=c3 --volumes-from c3 centos:7 /bin/bash

问题:这里为什么要用专门一个容器去存放数据呢,而不是一个个容器去配置同一个外部数据卷呢?

一般docker管理的Linux服务器上面,可以通过创建一个数据卷容器来专门保管数据和进行数据通信,宿主机此刻的作用就是一个备份数据的作用。这样所有的操作都变成了容器化操作,更加统一。

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

推荐阅读更多精彩内容