•
容器(
Container
)
:镜像(
Image)和容器(Container)的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
•
仓库(
Repository):仓库可看成一个代码控制中心,用来保存镜像。
配置 Docker 镜像加速器
默认情况下,将来从
docker hub
(
https://hub.docker.com/
)上下载docker
镜像,太慢。
一般都会配置镜像加速器:
• USTC
:中科大镜像加速器(
https://docker.mirrors.ustc.edu.cn
)
•
阿里云
•
网易云
•
腾讯云
阿里云配置步骤:
1、打开阿里云官网
2、
3、
4、cat /etc/docker/daemon.json
Docker 命令
进程相关命令
启动docker服务:
systemctl start docker
停止
docker
服务
:
systemctl stop docker
重启
docker
服务
:
systemctl restart docker
查看
docker
服务状态
:
systemctl status docker
如下图:按q退出到命令提示符状态
设置开机启动
docker
服务
:
systemctl enable docker
镜像相关命令
查看镜像: 查看本地所有的镜像
docker images
docker images –q #
查看所用镜像的
id
搜索镜像
:
从网络中查找需要的镜像
docker search
镜像名称
拉取镜像
:
从
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文件构建一个新的镜像开始工作了
•
对于运维人员:在部署时,可以实现应用的无缝移植
为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。
本份面试集锦涵盖了
- 174 道运维工程师面试题
- 128道k8s面试题
- 108道shell脚本面试题
- 200道Linux面试题
- 51道docker面试题
- 35道Jenkis面试题
- 78道MongoDB面试题
- 17道ansible面试题
- 60道dubbo面试题
- 53道kafka面试
- 18道mysql面试题
- 40道nginx面试题
- 77道redis面试题
- 28道zookeeper
总计 1000+ 道面试题, 内容 又全含金量又高
- 174道运维工程师面试题
1、什么是运维?
2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
3、现在给你三百台服务器,你怎么对他们进行管理?
4、简述raid0 raid1raid5二种工作模式的工作原理及特点
5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
7、Tomcat和Resin有什么区别,工作中你怎么选择?
8、什么是中间件?什么是jdk?
9、讲述一下Tomcat8005、8009、8080三个端口的含义?
10、什么叫CDN?
11、什么叫网站灰度发布?
12、简述DNS进行域名解析的过程?
13、RabbitMQ是什么东西?
14、讲一下Keepalived的工作原理?
15、讲述一下LVS三种模式的工作过程?
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
17、如何重置mysql root密码?
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
000+ 道面试题, 内容 又全含金量又高**
- 174道运维工程师面试题
1、什么是运维?
2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
3、现在给你三百台服务器,你怎么对他们进行管理?
4、简述raid0 raid1raid5二种工作模式的工作原理及特点
5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
7、Tomcat和Resin有什么区别,工作中你怎么选择?
8、什么是中间件?什么是jdk?
9、讲述一下Tomcat8005、8009、8080三个端口的含义?
10、什么叫CDN?
11、什么叫网站灰度发布?
12、简述DNS进行域名解析的过程?
13、RabbitMQ是什么东西?
14、讲一下Keepalived的工作原理?
15、讲述一下LVS三种模式的工作过程?
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
17、如何重置mysql root密码?
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!