PHP面试宝典之docker容器

docker是一个开源的应用容器引擎,基于go语言,一次构建,随处运行

为什么使用docker?

1:docker容器启动是秒级别,相比传统的虚拟机要快得多

2:docker对系统资源的利用率很高,一台主机上可以同时运行数千个docker容器

3:docker只需要将应用隔离开,传统的虚拟机需要创建多个虚拟机操作系统,docker只一个系统

4:docker可以更快速的交付和部署,大量的节约开发、测试、部署的时间,对开发和运维人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行

5:更轻松的迁移和扩展

docker最新版本20
docker ce社区免费版
docker ee 企业版

从容器内退出到自己服务器中:
直接退出:exit,未添加-d时,容器会被关闭
优雅退出:Ctrl + p + q ,加不加-d,容器都不会被关闭

docker解决了什么问题?

解决 运行环境和配置问题 ,方便做 持续集成 并有助于整体发布的 容器虚拟化技术

虚拟机缺点:

资源占用多,冗余步骤多,启动慢

docker和虚拟机的区别:

1:虚拟机是 模拟全套硬件,并在其上运行一个完整的操作系统

2:容器内的 应用是直接运行在宿主机(也就是本地,物理机),容器没有自己的内核和硬件,比虚拟机更轻便

3:每个容器之间相互隔离,有自己的文件系统,互不影响,能区分计算资源

docker三要素:镜像,容器,仓库

镜像是模版,镜像只读,镜像是分层的

容器是镜像的实例,可读,可写

docker命令

帮助命令:
docker info:详细信息
docker version:版本信息
docker --help:帮助命令

镜像命令:
docker images:列出本地主机上的镜像列表
docker search 镜像名称:查询镜像(在官网上查询)
docker search -s 20 镜像名称:查询镜像收藏数大于等于20的镜像
docker pull 镜像名称:拉取镜像

docker rmi  镜像名称:删除镜像(正在运行的镜像,需要强制删除)
docker rmi -f 镜像名称:强制删除
docker rmi -f 镜像名称1 镜像名称2:删除多个镜像
docker rmi -f $(docker images -qa):删除全部镜像

容器命令:
docker run -it 容器名称:创建并运行容器
参数:
--name=”容器新名称”:为容器指定一个名称
-d:后台运行容器,并返回容器ID,也即启动守护式容器
-i:以交互模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪输入终端,通常与-i同时使用
-P:随机端口映射
-p:指定端口映射
ip:hostPort:containerPort
ip::containePort
hostPort:containerPort
containerPort

exit:退出并关闭容器
control+p+q:退出但不关闭容器(回到宿主机)

docker start 容器ID:启动容器
docker restart 容器ID:重启容器
docker stop 容器ID:停止容器(平滑停止)
docker kill 容器ID:强制关闭容器
docker rm 容器ID:删除已停止的容器
docker rm -f 容器ID:强制删除容器
docker ps:列出所有正在运行的容器
参数:
-a:列出当前所有正在运行的容器+历史上运行过的容器
-l:显示最近创建的容器
-n:限制最近n个创建的容器
-q:静默模式,只显示容器编号
--no-trunc:不截断输出

docker run -d 容器ID:后台启动容器(ps查不到 );启动守护式容器
docker logs -f -t -tail 容器ID:查看容器日志
参数:
-t:是加入时间戳
-f:跟随最新的日志打印
--tail 数字:显示最后几条
查看容器内运行的进程:
docker top 容器ID

查看容器内部细节:docker inspect 容器ID

进入正在运行的容器并以命令行交互:
docker attach 容器ID:直接进入容器终端,不会启动新的进程
docker exec -it 容器ID ls -l /tmp:在容器中打开新的终端,并且启动新的进程,不进入容器
docker exec -it 容器ID /bin/bash :在容器中打开新的终端,并且可以启动新的进程,进入容器

从容器内拷贝文件到主机上:
docker cp 容器ID:容器内路径 目的主机路径

docker commit -m=”提交描述” -a=”作者”:提交容器副本使之成为一个新的镜像

docker run -it -p 主机端口:容器内端口 容器ID:指定映射端口

容器数据卷:容器数据持久化+数据共享

数据卷:容器停止退出后,主机修改的数据仍然同步

启动容器,并添加容器卷:docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名

启动容器,并添加只读容器卷:docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名

–volumes-from:容器间传递共享,前面的继承后面的
子与子之间共享,子与父之间共享,父与子之间共享,删除父,子与子仍然共享

docker run -it 容器2 --volumes-from 容器1 容器ID:容器2继承容器1

dockerFile

dockerFile:是用来创建docker镜像的脚本文件,由一系列命令和参数构成
构建三步骤:
1:手动编写一个dockerFile文件,
2:有这个文件后,直接docker build命令执行,获得一个自定义镜像
3:docker run启动这个容器

dockerFile文件内容:
FROM 基础镜像
VOLUME [数据卷名]
CMD /bin/bash

dockerFile保留字指令:
FROM:from;基础镜像,当前要创建的镜像基于哪个镜像
MAINTAINER:maintainer;镜像维护者的姓名和邮箱地址
RUN:run;容器构建时需要运行的命令
EXPOSE:expose;容器对外暴露的端口号
WORKDIR:workdir;终端默认登陆时,进入的工作目录
ENV:env;设置环境变量
ADD:add;拷贝并解压压缩包
COPY:copy;拷贝压缩包
VOLUME:volume;容器数据表
CMD:cmd;指定一个容器启动时要运行的命令,如果有多个,只执行最后一个,且会被docker run之后的参数替换
ENTRYPOINT:entrypoint;指定一个容器启动时要运行的命令,将docker run之后的参数追加到原有命令中

ONBUILD:onbuild;父镜像在被子继承后父镜像的onbuild会被触发

base镜像:scratch镜像,所有镜像的基础镜像

默认的centos镜像:不支持vim,不支持ifconfig,默认工作目录是根目录

自定义新镜像:
docker build -f dockerfile -t 新的镜像名:版本号 .:新建一个新的镜像

进入一个正在运行的容器:

docker attach 容器ID:
docker exec -it 容器ID

docker在工作中的使用流程

1:在本地电脑上安装docker

2:在docker中拉取一个公司提供的镜像(包含:开发环境,相关扩展,git等)

3:构建容器,配置容器卷(项目代码存放目录),配置端口映射(内外部端口映射)

4:使用git拉取代码到容器(项目代码存放目录)

5:配置容器内部网站域名,端口

6:项目代码连接数据库,三方类库等

7:本地浏览器通过配置域名+映射端口号访问项目

8:本地编辑器编写代码,容器内部代码自动同步,在容器内使用git拉取或提交代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值