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