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

网友投稿 259 2022-10-21

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

教程目录

​​0x00 教程内容​​​​0x01 Docker的安装​​

​​0. 安装前提​​​​1. 安装Docker​​​​2. 开启Docker服务并校验​​​​3. 配置自启动与国内镜像​​

​​0x02 Docker的简单操作​​

​​1. 查找镜像​​​​2. 拉取与查看镜像​​​​3. 运行镜像(会实例化出容器,并进入容器)​​​​4. 查看容器​​​​5. 退出容器​​​​6. 在原有镜像基础上创建新镜像​​​​7. 给镜像打标签​​

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

​​1. 数据卷(了解即可,可不操作)​​​​2. 数据卷(简易操作版)​​​​3.数据卷容器​​

​​0x04 Docker网络配置​​

​​0. 开启Docker的端口转发​​​​1. 绑定centos端口与容器的端口​​​​2. 容器互联(子容器连接父容器)​​

​​0x05 Docker镜像的打包与载入​​

​​0. 查看镜像​​​​1. 打包​​​​2. 载入​​​​3. 打包单个镜像​​​​4. 删除镜像​​​​5. 导入容器快照​​​​6.导入镜像与导入容器快照的区别​​

​​0xFF 总结​​

0x00 教程内容

Docker的安装Docker的简单操作Docker数据卷与数据卷容器Docker网络配置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 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": ["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 总结

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

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:D001.8 Docker搭建Spark集群(实践篇)
下一篇:@RequestBody,@RequestParam和@Param的区别说明
相关文章

 发表评论

暂时没有评论,来抢沙发吧~