从
Docker
仓库下载镜像到本地,镜像名称格式为 名称
:版本号,如果版本号不指定则是最新的版本。如果不知道镜像版本,可以去
docker hub
搜索对应镜像查看。
docker pull
镜像名称
删除镜像
:
删除本地镜像
docker rmi
镜像
id 或者镜像名称 #
删除指定本地镜像
docker rmi docker images -q
#
删除所有本地镜像
容器相关命令
查看容器
docker ps #
查看正在运行的容器
docker ps –a #
查看所有容器
创建并启动容器
docker run
参数 镜像名称
例如:docker run -it --name=c1 centos:7 /bin/bash
参数说明:
• -i
:保持容器运行。通常与
-t
同时使用。加入
it
这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭。
• -t
:为容器重新分配一个伪输入终端,通常与
-i
同时使用。
• -d
:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用
docker exec
进入容器。退出后,容器不会关闭。
• -it
创建的容器一般称为交互式容器,
-id
创建的容器一般称为守护式容器
• --name
:为创建的容器命名。
退出容器
exit
进入容器
docker exec
参数
#
退出容器,容器不会关闭
例如:docker exec -it c1 /bin/bash
停止容器
docker stop
容器名称
启动容器
docker start
容器名称
删除容器:如果容器是运行状态则删除失败,需要停止容器才能删除
docker rm
容器名称
查看容器信息
docker inspect
容器名称
Docker 容器数据卷
数据卷概念
思考:
1、Docker 容器删除后,在容器中产生的数据还在吗?不在
2、Docker 容器和外部机器可以直接交换文件吗?不可以,如下图:
3、容器之间想要进行数据交互?不可以
以上问题,可以通过数据卷解决。
数据卷 如下图:
•
数据卷是宿主机中的一个目录或文件
•
当容器目录和数据卷目录绑定后,对方的修改会立即同步
•
一个数据卷可以被多个容器同时挂载
•
一个容器也可以被挂载多个数据卷
数据卷作用
•
容器数据持久化
•
外部机器(或者叫客户端)和容器间接通信
•
容器之间数据交换
配置数据卷
创建启动容器时,使用 –v 参数 设置数据卷
docker run …
–v
宿主机目录
(
文件
):
容器内目录
(
文件
) …
例如:
docker run -it --name=c2 -v /root/data:/root/data_container centos:7 /bin/bash
如果命令太长,可以分行写,用反斜杠连接:
docker run -it --name=c3 \
> -v ~/data2:/root/data2 \
> -v ~/data3:/root/data3 \
> centos:7 /bin/bash
注意事项:
目录必须是绝对路径
如果目录不存在,会自动创建
可以挂载多个数据卷
数据卷容器
多容器进行数据交换,两种方式:
多个容器挂载同一个数据卷
数据卷容器,如下图:
配置数据卷容器
创建一个容器,挂载一个目录,让其他容器继承自该容器( --volumes-from )。
1. 创建启动c3数据卷容器,使用 –v 参数 设置数据卷
docker run –it --name=c3
–v /volume
centos:7 /bin/bash
创建启动
c1 c2
容器,使用
–-volumes-from
参数 设置数据卷
docker run –it --name=c1
–volumes-from c3
centos:7 /bin/bash
docker run –it --name=c2
–volumes-from c3
centos:7 /bin/bash
Docker 应用部署
Dockerfile
Docker 镜像原理
思考:
- Docker
镜像本质是什么?
•
是一个分层文件系统。
- Docker
中一个
centos
镜像为什么只有
200MB
,而一个
centos
操作系统的
iso
文件要几个个
G
?
• Centos
的
iso
镜像文件包含
bootfs
和
rootfs
,而
docker
的
centos
镜像复用操作系统的
bootfs
,只有
rootfs
和其他镜像层。
- Docker
中一个
tomcat
镜像为什么有
500MB
,而一个
tomcat
安装包只有
70
多
MB
?
•
由于
docker
中镜像是分层的,
tomcat
虽然只有
70
多
MB,但他需要依赖于父镜像和基础镜像,所以整个对外暴露的tomcat
镜像大小
500
多
MB。
操作系统组成部分:
• 进程调度子系统
•
进程通信子系统
•
内存管理子系统
•
设备管理子系统
•
文件管理子系统
•
网络通信子系统
•
作业控制子系统
Linux
文件系统由
bootfs
和
rootfs
两部分组成,如下图:
• bootfs
:包含
bootloader
(引导加载程序)和
kernel
(内核)
• rootfs
:
root
文件系统,
包含的就是典型
Linux
系统中的
/dev,/proc
,
/bin
,
/etc
等标准目录和文件
•
不同的
linux
发行版,
bootfs
基本一样,而
rootfs
不同,如ubuntu,
centos
等
Docker镜像原理:
• Docker镜像是由特殊的文件系统叠加而成。
•
最底端是
bootfs
,并使用宿主机的
bootfs。
•
第二层是
root
文件系统
rootfs,
称为
base image。
•
然后再往上可以叠加其他的镜像文件。
• 统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。
• 一个镜像可以放在另一个镜像的上面。位于下面的镜像称为父镜像,最底部的镜像成为基础镜像。
•
当从一个镜像启动容器时,
Docker会在最顶层加载一个读写文件系统作为容器。
Dockerfile概念及作用
镜像制作
Docker
镜像如何制作?
- 容器转为镜像,再做成压缩文件,传给对方,对方再从压缩文件里获取镜像,如下图:
具体操作步骤如下:
docker
commit
容器
id
镜像名称
:
版本号
docker
save
-o
压缩文件名称 镜像名称
:
版本号
docker
load
–i
压缩文件名称
2. dockerfile
Dockerfile 概念
• Dockerfile
是一个文本文件
•
包含了一条条的指令
•
每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
•
对于开发人员:可以为开发团队提供一个完全一致的开发环境
•
对于测试人员:可以直接拿开发时所构建的镜像或者通过
Dockerfile文件构建一个新的镜像开始工作了
•
对于运维人员:在部署时,可以实现应用的无缝移植
示例:
FROM centos:7
MAINTAINER itheima
RUN yum install –y vim
CMD ["/bin/bash"]
也可从docker hub上学习别人写好的dockerfile。
Dockerfile关键字
| 关键字 | 作用 | 备注 |
| ----------- | ------------------------ | ------------------------------------------------------------ |
| FROM | 指定父镜像 | 指定dockerfile基于那个image构建 |
| MAINTAINER | 作者信息 | 用来标明这个dockerfile谁写的 |
| LABEL | 标签 | 用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看 |
| RUN | 执行命令 | 执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN ["command" , "param1","param2"] |
| CMD | 容器启动命令 | 提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD ["command" , "param1","param2"] |
| ENTRYPOINT | 入口 | 一般在制作一些执行就关闭的容器中会使用 |
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/234a31b6de997b5eb08190da78e73ea1.png)
![img](https://img-blog.csdnimg.cn/img_convert/e1071604a075eee43965caef38410170.png)
![img](https://img-blog.csdnimg.cn/img_convert/e3f2e43453d61169162eebc037600157.png)
![img](https://img-blog.csdnimg.cn/img_convert/8c9f2f42ec1fe6df70d81bfdeb395b09.png)
![img](https://img-blog.csdnimg.cn/img_convert/86535f56d2d96886ca81f46527c1bfb1.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)**
![img](https://img-blog.csdnimg.cn/img_convert/aa6d71e8bacec641ffc3ed054369224b.jpeg)
数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
[外链图片转存中...(img-WGM0HzSV-1712657128676)]
[外链图片转存中...(img-bWeQN3qZ-1712657128677)]
[外链图片转存中...(img-tF2P3GDI-1712657128677)]
[外链图片转存中...(img-gpdmX7gU-1712657128677)]
[外链图片转存中...(img-majPTd2l-1712657128678)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)**
[外链图片转存中...(img-b8z2lCEk-1712657128678)]