docker的容器理念

docker的容器是没有系统的,是以应用为核心,对应用程序 ,运行时环境,软件依赖包都可以封装打包,部署的技术手段,

docker没有系统就节约了大量资源

部署简单,生态环境开发,任何人都可以部署应用

容器的概述:

容器:容器是一个运行在隔离环境中的程序

镜像:镜像是制作容器的模板,包含着创建容器的所需的所有文件和配置信息

仓库:是用来存储镜像的地方

在2015年,在docker的主导下,多家公司联合制定了“开放容器交互标准” (OCL),包含了

运行时标准(RUNTIME-SPEC)

容器镜像标准(IMAGE-SPEC)

镜像分发标准(DISTRIBUTION-SPEC)

镜像的概述:

镜像是创建容器的核心

镜像采用cow技术

镜像采用分成设计

镜像自始至终都是只读的

如何创建容器

首先使用cow为镜像创建一个读写层,容器在读写曾运行,这种方式可以让一个镜像创建无数个容器

镜像获取

镜像可以从官方下载也可以自己制作

官方镜像仓库https://hub.docker.com/


docker的一些命令及介绍
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf  配置路由
 sysctl -p  检测路由
 dnf install -y docker-ce 
 systemctl enable docker --now 
 docker version  查看版本
 docker info 查看配置信息
 [root@docker ~]# vim /etc/docker/daemon.json
 {
     "registry-mirrors": ["这里配置镜像仓库加速器地址"],
     "insecure-registries":[]
 }
 systemctl restart docker     
 docker images                                                     查看本机镜像
 docker history                                                     看镜像的制作历史
 docker save  包名:标签  -o tar包名                   把镜像做成tar包
 docker  load -i tar包名                                           把tar包做成镜像
 docker run -it(d 放后台 )   镜像名:标签           制作容器
 docker ps -a                                                          查看容器 
 docker inspect 镜像名:标签                                     查看镜像详细信息
 docker exec -it  容器名  命令                                  容器内非交互式命令
 docker rm  容器id                                                    删除容器
 docker  logs  容器id                                                查看容器日志
 docker   tag   镜像id:标签    镜像名称:新标签
 docker   rmi  镜像名:标签  删除镜像docker commit 容器名   新镜像名:标签  镜像的制作
 docker rm  -f  $(docker ps -aq)
 容器部署应用
 部署 apache 服务
 # 删除所有容器
 [root@docker ~]# docker rm -f $(docker ps -aq)
 # 创建一个名为 myweb 的容器
 [root@docker ~]# docker run -it --rm --name myweb mylinux:latest
 #-----------------------------------------------------------
 # 在容器内安装部署 apache
 [root@a7f9d0c3e3e2 /]# dnf install -y httpd
 [root@a7f9d0c3e3e2 /]# echo "Hello World ." >/var/www/html/index.html
 [root@a7f9d0c3e3e2 /]# cat /usr/lib/systemd/system/httpd.service
 [root@a7f9d0c3e3e2 /]# export LANG=C
 [root@a7f9d0c3e3e2 /]# /usr/sbin/httpd -DFOREGROUND
 # 在另一个终端完成访问验证
 为 apache 添加解析 php 文件支持
 # ctrl + c 终止 httpd 服务运行
 [root@a7f9d0c3e3e2 /]# dnf install -y php
 [root@a7f9d0c3e3e2 /]# vim /etc/httpd/conf.modules.d/00-mpm.conf
 11: LoadModule mpm_prefork_module ... ... # 去掉注释 
 17: # LoadModule mpm_event_module ... ... # 注释配置 
 [root@a7f9d0c3e3e2 /]# /usr/sbin/httpd -DFOREGROUND
 # 服务不要关闭,在其他终端完成测试
 验证配置
 # 在另一个终端拷贝 public/info.php 到 docker 主机
 [root@docker ~]# docker cp info.php myweb:/var/www/html/
 [root@docker ~]# curl http://172.17.0.2/info.php
 <pre>
 Array
 (
     [REMOTE_ADDR] => 172.17.0.1
     [REQUEST_METHOD] => GET
     [HTTP_USER_AGENT] => curl/7.61.1
     [REQUEST_URI] => /info.php
 )
 php_host:   616e75df56ae
 1229