D001.5 Docker入门(超级详细基础篇)

0x00 教程内容

  1. Docker的安装
  2. Docker的简单操作
  3. Docker数据卷与数据卷容器
  4. Docker网络配置
  5. Docker镜像的打包与载入

0x01 Docker的安装

0. 安装前提

a.kernel版本需大于3.10:
uname -r

在这里插入图片描述

b.能上外网
ping baidu.com

在这里插入图片描述

c.本文是基于Centos7(6或ubuntu需改代码)

1. 安装Docker

a.切换成root用户权限(执行后输入自己的root密码):
su root

在这里插入图片描述

b.安装软件包(目的是为了c.步):
yum install -y yum-utils device-mapper-persistent-data lvm2
在这里插入图片描述

c.设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

在这里插入图片描述

d.安装指定版本(18.03.0.ce)
yum install -y docker-ce-18.03.0.ce

在这里插入图片描述

2. 开启Docker服务并校验

a.开启服务
systemctl start docker.service
b.校验
docker version

在这里插入图片描述

3. 配置自启动与国内镜像

a.设置Docker开机自启
systemctl enable docker.service

在这里插入图片描述

b.配置国内镜像(使下载镜像更快)
vi /etc/docker/daemon.json

{
        "registry-mirrors": ["https://registry.docker-cn.com"]
}

c.重启Docker:
systemctl daemon-reload
systemctl restart docker

0x02 Docker的简单操作

1. 查找镜像

docker search mysql --filter=stars=100
“--filter=stars=100”:显示STARS数不小于100的镜像

2. 拉取与查看镜像

docker pull mysql:5.5
(docker pull mysql为拉取最新版本,5.5为指定版本)
docker images

在这里插入图片描述

3. 运行镜像(会实例化出容器,并进入容器)

docker run -t -i mysql:5.5 /bin/bash

在这里插入图片描述

4. 查看容器

a.查看运行中容器(执行后,切换终端查看)
su root
docker ps

在这里插入图片描述

b.查看所有的容器
docker ps -a

5. 退出容器

exit
(ps:注意本实验多出省略此语句,请注意看截图判断是在容器内执行还是centos里执行)

6. 在原有镜像基础上创建新镜像

a.新拉取一个centos镜像,并添加新的内容
docker pull centos
docker run -t -i centos /bin/bash
touch shaonaiyi.txt
echo wechat:shaonaiyi888 >> shaonaiyi.txt

在这里插入图片描述

b.复制主机名be6d5355a518,退出镜像
exit
c.生成新的镜像
docker commit -m "add wechat" -a "New Container" be6d5355a518 shaonaiyi/centos:v1.0.0
d.查看镜像
docker images
在这里插入图片描述

7. 给镜像打标签

docker tag 75835a67d134 shaonaiyi/centos:v1.0.1
docker images

在这里插入图片描述

0x03 Docker数据卷与数据卷容器

Docker的数据卷与Centos的mount类似,也跟电脑主机插CD光盘一样。

1. 数据卷(了解即可,可不操作)

a.创建名为app1的并带有数据卷mount的容器(-d指后台执行)
docker run -d -P -it --name app1 -v /mount centos /bin/bash

在这里插入图片描述

b.进入app1容器并中查看数据卷为空
docker attach app1

在这里插入图片描述

在这里插入图片描述

c. 先退出容器,然后查看挂载情况(指定显示:Mounts)
exit
docker inspect -f {{.Mounts}} app1
在这里插入图片描述

d.进入app1容器
docker start app1
docker attach app1
在这里插入图片描述

e.然后切换终端2在默认的路径新建文件,切回终端1可查看到结果
touch /var/lib/docker/volumes/8b4354560f97f16b2b875499dde06fd8bb874687ee95d049ed2bdaec17a9dfd3/_data/hello
在这里插入图片描述

在这里插入图片描述

f.同样,在app1里面新建文件,在默认文件夹也可同步
g.查看并删除数据卷
docker volume ls
在这里插入图片描述

docker rm -v移除容器的同时也会移除数据卷
docker run --rm在容器退出时清除数据
ps:只能删除没有容器挂载的Volume。如果有容器正在挂载的数据卷则不会被删除。

h.删除容器(自行创几个来删除或者知道就可以了,-f为强行删除,无论是否在运行都删除)
docker rm -f be6d5355a518

在这里插入图片描述

docker volume prune删除无用的数据卷(强行删除了一些容器后执行的结果)

在这里插入图片描述

2. 数据卷(简易操作版)

a.创建指定文件夹(-p指创建多级文件夹,即/docker没有也会创建)
mkdir -p /docker/datas
touch /docker/datas/hello.txt

在这里插入图片描述

b.执行容器,挂载/docker/datas到docker容器的/datas(发现centos的hello.txt文件可在容器中查看到)
docker run -d -P -it --name web1 -v /docker/datas:/datas centos /bin/bash
在这里插入图片描述

c.设置容器中的/datas为只读模式(:ro)
docker run -d -P -it --name web1 -v /docker/datas:/datas:ro centos /bin/bash
d.亦可以挂载单个文件
docker run -d -P -it --name web2 -v ~/.bash_history:/.bash_history centos /bin/bash
docker attach web2
ll -a查看以“.”开头的隐藏文件
在这里插入图片描述

3.数据卷容器

a.创建一个专门用于挂载的容器(挂载目录为/database,echo database表示创建后执行后的命令行)
docker run -d -v /database --name db centos echo database

b.查看执行后的结果
docker logs db

在这里插入图片描述

c.创建一个挂载容器db的/database的容器db1
docker run -d -it --volumes-from db --name db1 centos /bin/bash

d.检验是否挂载成功
docker attach db1
ls

在这里插入图片描述

0x04 Docker网络配置

0. 开启Docker的端口转发

a.解决Ipv4警告而已,可不操作,直接执行下面1.先
echo net.ipv4.ip_forward=1 >> /usr/lib/sysctl.d/00-system.conf
more /usr/lib/sysctl.d/00-system.conf
b.执行完发现/usr/lib/sysctl.d/00-system.conf里面多了net.ipv4.ip_forward=1,然后重启网络:
systemctl restart network && systemctl restart docker
如不执行,在运行下面语句时会有警告:

在这里插入图片描述

1. 绑定centos端口与容器的端口

a.运行一个容器(-p 5000:5000 可替换成-P,则随机分配端口)
docker run -d -p 5000:5000 training/webapp python app.py

在这里插入图片描述

b.查看运行中容器的端口映射情况
docker ps
在这里插入图片描述

c.退出容器,然后在centos查看情况(说明绑定成功)
curl 127.0.0.1:5000
在这里插入图片描述

d.绑定指定ip端口则在前面加指定ip(127.0.0.1可换成其他ip地址)
docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py

e.绑定指定ip随机的端口(127.0.0.1可换成其他ip地址)
docker run -d -p 127.0.0.1::5000 training/webapp python app.py

f.绑定指定多端口映射(执行后会用c.方式访问发现都可以查看)
docker run -d -p 5010:5000 -p 5020:5000 training/webapp python app.py

g.还可以指定通信协议(/udp或/tcp)
docker run -d -p 5030:5000/udp training/webapp python app.py

h.查看端口映射(容器的端口或者NAMES都可以查看)
docker ps
docker port jolly_fermat

在这里插入图片描述

i.查看详情(看到很多信息,可以跟0x03的c.的语句做对比)
docker inspect jolly_fermat

在这里插入图片描述

2. 容器互联(子容器连接父容器)

a.创建一个db容器
docker run -it -d --name net0 centos
b.查看webapp1容器的环境变量(db:db<=>容器名:容器别名)
docker run -it --name webapp1 --link net0:net0 centos /bin/bash

c.执行查看/etc/hosts,发现也加上了映射
cat /etc/hosts

在这里插入图片描述

d.查看发现webapp1能ping通net0容器
ping net0

在这里插入图片描述

0x05 Docker镜像的打包与载入

0. 查看镜像

a.记住REPOSITORY
docker images

1. 打包

a.sny_centos.tar.gz为打包后的名字,shaonaiyi/centos为REPOSITORY
docker save -o sny_centos.tar.gz shaonaiyi/centos

在这里插入图片描述

2. 载入

a.执行ll,可查看到本地多了sny_centos.tar.gz文件
b.执行后,发现导入了两个镜像
docker load --input sny_centos.tar.gz

在这里插入图片描述

3. 打包单个镜像

a.添加上TAG即可
docker save -o sny_centos.tar.gz shaonaiyi/centos:v1.0.1

在这里插入图片描述

4. 删除镜像

a.-f指强制删除,后面接IMAGE_ID,此处为删除我的mysql
docker rmi -f d27424d4dcd4

在这里插入图片描述

5. 导入容器快照

a.下载或者拿到别人的镜像,此处使用自己的镜像,体现不出大小
cat sny_centos.tar.gz | docker import - sny_centos:v1.0.2

在这里插入图片描述

6.导入镜像与导入容器快照的区别

a.容器快照可以重新定义名称
b.容器快照不保存元数据和历史数据,所以体积更小

0xFF 总结

  1. 我会提供一个完整的大数据集群docker镜像,小伙伴们只需安装好Docker后载入即可使用(关注公众号:邵奈一,或者加微信:shaonaiyi888获取)。
  2. 镜像类比面向对象语言里面的类,容器类比类实例化出来的对象。
  3. 具体操作实验与解析自行搜寻资料了解
  4. 容器互联部分有一些省略,后期补上或者自己搜资料了解
  5. 打包与载入镜像章节,在自己主机可能体现不出来,拿到我提供的镜像后可实际操作一遍

  1. 常用命令扩展
    Centos操作:
    yum list docker-ce --showduplicates | sort -r查看yum里docker的版本
    yum install -y docker-ce安装最新版本的docker

作者简介:邵奈一
大学大数据讲师、大学市场洞察者、专栏编辑

公众号、微博、CSDN邵奈一

本系列课均为本人:邵奈一 原创,如转载请标明出处

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

推荐阅读更多精彩内容