Docker是管理容器的引擎
Docker为应用打包、部署平台、而非单纯的虚拟化技术
docker容器的优势
对于开发人员:一次建立、可以在任何地方运行
对于运维人员:一次配置、可以运行任何东西
配置仓库
vim docker.repo
[docker]
name=docker-ce
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/
gpgcheck=0
执行curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo,/etc/yum.repo下就会出现CentOS-Base.repo
替换sed -i -e ‘/mirrors.cloud.aliyuncs.com/d’ -e ‘/mirrors.aliyuncs.com/d’ /etc/yum.repos.d/CentOS-Base.repo
vim CentOS-Base.repo
%s/$releasever/7/g
yum install -y docker-ce
cd /etc/sysctl.d/
vim docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
systemctl enable --now docker.service ##开启服务
此时就会出现一个docker0的桥接口
doker镜像
镜像的分层结构
1.共享宿主机的kernel
2.base镜像提供的是最小的linux发行版
3.同一docker主机支持运行多种linux发行版
4.采用分层结构的最大好处就是:共享资源
5.Copy-on-write可写容器层
6.容器层以下所有镜像层都是只读的
例如在镜像中建立了文件,在退出再次进入后发现没有建立的文件
7.docker从上往下依次查找文件
8.容器层保存镜像变化的部分,并不会对镜像本身进行任何修改
9.一个镜像最多127层
docker pull busybox ##拉取busybox
docker images ##查看镜像
docker history busybox:latest ##查看busybox的层级
docker run -it busybox ##运行
i ##交互式 t ##终端
镜像的建立
docker commit构建新镜像三部曲
运行容器
修改容器
将容器保存为新的镜像
缺点
效率低、可重复性弱、容易出错
使用者无法对镜像进行审计、存在安全隐患
cd /root
mkdir docker
cd docker/
vim Dockerfile
dockerfile详解
FROM
docker build -t demo:v1 . ##建立
此时的镜像会有审计
基于demo :v1建立
COPY
vim index.html
vim Dockerfile
docker build -t demo:v1 . ##建立
docker run -it --rm demo:v1 ##进入后可以看到文件被copy到/
ADD
tar zcf test.tar.gz /etc ##生成一个压缩包
vim Dockerfile
docker build -t demo:v2 . ##建立
docker run -it --rm demo:v2 ##进入后可以看到已经解压
ENV
vim Dockerfile
docker build -t demo:v3 . ##建立
docker run -it --rm demo:v3 进入可以看到添加了变量
EXPOSE
vim Dockerfile
docker build -t demo:v4 .
下载nginx.tar
docker load -i nginx.tar ##导入
docker run -d --name demo nginx ##运行
docker inspect demo ##查看具体信息就能看到80端口
VOLUME
vim Dockerfile
docker build -t demo:v5 . ##建立
docker run -it --name demo demo:v5 ##运行
在里面建立文件
docker inspect demo 查看,可以看到已经挂载
到var/lib/docker/volumes/c49a34096181f0521ab9bc51eaea8e955351bd7752250c00e6b534d5cebeb9ea/_data目录下就可以看到建立的文件
此时将docker1删除,在copy一个文件进来,重新进入后可以看到文件
用此方法可以做数据持久化
CMD
vim Dockerfile
docker build -t demo:v6 . ##建立
docker run --rm demo:v6 ##运行
也可以解析变量
vim Dockerfile
docker build -t demo:v7 .
docker run --rm demo:v7
vim Dockerfile
docker build -t demo:v8 .
docker run --rm demo:v8
此时不能解析
要想获得解析,需要做如下操作
vim Dockerfile
docker build -t demo:v10 .
docker run --rm demo:v10
vim Dockerfile
docker build -t demo:v10 .
docker run --rm demo:v11
此时在后面+什么就会出现什么,因为覆盖了CMD
应用容器化
加速
cd /etc/docker
vim daemon.json
容器化及优化
vim dvd.repo
下载nginx-1.18.0.tar.gz
vim Dockerfile
此时,我们布出的容器有144M,而rhel7镜像有140M,所以容器只有4M
但是我们还可以对其进行优化,但是以下这些库文件必须包含
下载base-debian10.tar
它只有19.2M,所以可以用它来做基础镜像
cd docker/
docker pull nginx:1.18.0 ##拉取nginx:1.18.0
cd …
mkdir nginx
cd nginx/
vim Dockerfile
docker build -t webserver:v2 . ##建立
docker images webserver ##查看
可以看到镜像只有31.7M
测试
docker run -d --name webserver webserver:v2 ##执行
docker inspect webserver ##查看
此时可以看到nginx的发布目录,说明布置成功