1、什么是虚拟化
虚拟的环境并不在真实的硬件上,而是虚拟出一套硬件
在一台物理机上,可以通过虚拟化技术,虚拟出很多虚拟机
2、Docker与虚拟机的区别
Docker
启动速度快
占用系统资源少
容器之间隔离
虚拟机
启动速度慢
占用系统资源多
虚拟机之间完全隔离
3、Docker中的三大概念
4、什么是镜像
5、什么是容器
6、什么是镜像仓库
7、简要说明一下docker网络
安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host
8、docker网络的原理有哪些
Docker 本身的技术依赖于 Linux 内核虚拟化技术的发展
所以 Docker 对 Linux 内核的特性有很强的依赖
其中 Docker 使用到的与 Linux 网络有关的技术分别有:网络名称空间、Veth、网桥、Iptables、路由
9、Linux网络隔离的方式
因为 命名空间的存在
这些独立的协议栈被隔离到不同的命名空间中
处于不同的命名空间的网络协议栈是完全隔离的,彼此之间无法进行网络通信,就好像两个“平行宇宙”
10、Linux不同网络之间互联的方式
Veth设备:只能一对一
网桥:支持多对多
Iptables:内核级别的网络转发(但是规则比较复杂)
11、Docker网络模式
host 模式
none 模式
container 模式
bridge 模式(默认)
12、Docker网络模式的实现原理
host:共享根命名空间的网络
none:只提供本地回环网络127.0.0.1
container:共享某个容器的网络
bridge:所有容器连接同一个网桥,通过网桥来进行转发
13、怎么实现使用在宿主主机使用127.0.0.1访问容器
# 在容器运行的时候 映射端口 网络模式不指定 就使用默认的bridge
docker run -dit -p 80:80 --name nginx01 nginx:latest
14、怎么共享一个容器的网络
# 使用 container 网络模式
docker run -itd --name test01 nginx
docker run -itd --name test02 --network "container:test01" nginx
15、怎么实现一个容器完全的网络隔离
# 使用 none 网络模式
docker run -itd --name test01 --network none nginx
16、怎么实现多对多网络互联
# 使用 bridge 网络模式
docker run -itd --name test01 --network bridge busybox
docker run -itd --name test02 --network bridge busybox
docker run -itd --name test03 --network bridge busybox
17、创建一个容器
18、随机映射端口
# -P
docker run -P busybox
19、固定映射端口
# -p [宿主机的端口号]:[容器内部的端口号]
docker run -p 80:80 nginx
20、挂载存储卷
# -v [宿主机的路径]:[容器内的路径]
docker run -v /home/darker:/data nginx
21、为容器设置一个名字
# --name [自定义容器名]
docker run --name nginx01 nginx
22、以守护进程方式运行一个容器
23、构建一个Django容器
创建 Dockerfile
Dockerfile 内容
# 1.指定基础镜像
FROM python:3.6.8
# 2.安装django
RUN pip3 install django==2.2.2 -i https://pypi.douban.com/simple/
# 3.创建1个django项目
RUN django-admin startproject blog
RUN cd blog && python3 manage.py startapp app01
# 4.设置启动命令
CMD cd /root && python3 manage.py runserver 0.0.0.0:8000
# 5.暴露8000端口
EXPOSE 8000
构建镜像命令
docker build -t django:v1 .
启动容器
docker run -dit -p 8000:8000 --name django01 django:v1 bash
24、构建一个NGINX容器
创建 nginx.repo
nginx.repo 内容
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
创建 Dockerfile
Dockerfile 内容
# 设置基础镜像
FROM centos
# 安装wget
RUN yum install wget -y
# 换源
RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
RUN cd /etc/yum.repos.d && wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
RUN mv /etc/yum.repos.d/CentOS7-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo
# 添加nginx源的文件
ADD nginx.repo /etc/yum.repos.d/
# 刷新yum缓存
RUN yum makecache
# 安装yum工具
RUN yum install yum-utils -y
# 安装Nginx
RUN yum install nginx -y
# 添加配置文件
ADD default.conf /etc/nginx/conf.d/
# 设置启动命令
CMD nginx -g 'daemon off;'
构建镜像命令
docker build -t nginx:v1 .
启动容器
docker run -dit -p 80:80 --name nginx01 nginx:v1 bash
25、使用NGINX代理Django
创建 default.conf
default.conf 内容
upstream django {
server django:8000;
}
server {
listen 80;
server_name _;
location / {
proxy_pass http://django;
index index.html index.htm;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
26、将以上镜像上传到镜像仓库
# 1.登录阿里云Docker Registry
docker login --username=用户名 [仓库URL]
# 2.为镜像添加标签(标记版本)
docker tag [镜像ID] [仓库URL]/[命名空间]/[仓库名称]:[镜像版本号]
# 实例
docker tag 74d107221092 registry.cn-hangzhou.aliyuncs.com/darker-x/common_software:redis_v1
# 3.将本地镜像推送到Registry
docker push [仓库URL]/[命名空间]/[仓库名称]:[镜像版本号]
# 实例
docker push registry.cn-hangzhou.aliyuncs.com/darker-x/common_software:redis_v1
1、什么是虚拟化
2、Docker与虚拟机的区别
3、Docker中的三大概念
4、什么是镜像
5、什么是容器
6、什么是镜像仓库
7、简要说明一下docker网络
8、docker网络的原理有哪些
9、Linux网络隔离的方式
10、Linux不同网络之间互联的方式
11、Docker网络模式
12、Docker网络模式的实现原理
13、怎么实现使用在宿主主机使用127.0.0.1访问容器
14、怎么共享一个容器的网络
15、怎么实现一个容器完全的网络隔离
16、怎么实现多对多网络互联
17、创建一个容器
18、随机映射端口
19、固定映射端口
20、挂载存储卷
21、为容器设置一个名字
22、以守护进程方式运行一个容器
23、构建一个Django容器
创建 Dockerfile
Dockerfile 内容
构建镜像命令
启动容器
24、构建一个NGINX容器
创建 nginx.repo
nginx.repo 内容
创建 Dockerfile
Dockerfile 内容
构建镜像命令
启动容器
25、使用NGINX代理Django
创建 default.conf
default.conf 内容
26、将以上镜像上传到镜像仓库