docker 命令大全

docker 三要素 镜像 容器 仓库

docker cs 结构 宿主机客户端通过守护进程跟server通信

client 发送docker命令 守护进程接收 来管理容器和镜像

镜像是类,容器是实例

宿主机是蓝色大海 docker是鲸鱼 容器是集装箱

docker 镜像一层套一层 一层层叠加

docker 镜像是什么

1、UnionFS 联合文件系统

2、docker 镜像加载原理

bootfs涵盖kernel引导内核 完成后会自动卸载bootfs

rootfs命令文件和命令库运行在bootfs之上

3、docker 分层镜像

比如:最小层 kernel 上一层centos 上一层jdk8 上一层tomcat

docker为何采用分层结构----共享资源

docker 镜像特点

1、docker 镜像都是只读的

2、当容器启动时一个新的可写层被加载到镜像的顶部

这一次通常被称为容器层,容器层之下的都叫镜像层

镜像命令

docker images 查看本地镜像

[option]说明

-a是所有镜像(包含中间层)

-q只显示镜像id

docker search tomcat 搜索tomcat

docker search --filter=stars=3 tomcat 新版docker

[option]说明

-s 30 stat>30的搜多结果集

docker pull tomcat 从镜像仓库拉取镜像到本地

不加tag默认为最新的

docker rmi tomcat 删除镜像

可以批量执行

可以通过镜像名称和镜像id

不加tag默认为最新的

[option]说明

-f 为强制删除

docker rmi -f $(docker images -qa) 全部删除

docker commit -m 容器id 要创建的目标镜像名:[tag]

提交容器副本使之成为一个新的镜像

跟git commit 相似

用来自定义修改容器应用后 根据该容器id 生成一个自定义完成后的镜像

构造后的镜像存在本地镜像仓库

[option]说明

-m 提交的描述信息

-a 作者

docker本地镜像发布到阿里云

容器命令

docker run [option] imange [command][arg] 新建并启动容器

[option]说明

-d 守护式容器

-d 后台运行容器,并返回容器id,也即启动守护式容器

{-d docker 后台启动机制 因为没有前台进程 所以会自动退出

因为没有前台进程 后台以为没啥事所以退出 可以通过找事做来进行后台运行}

运行容器根进程退出时,容器已分离模式退出

指定端口后 以守护式容器运行 没有自动退出

-it 交互式容器

-i 以交互模式运行容器,通常与-t同时使用

-t 为容器重新分配一个伪终端,通常与-i同时使用

--name 为容器新创一个别名

-p 指定端口 docker端口:应用端口

-P 随机分配 应用端口是应用默认端口

docker ps [option] 查看docker运行进程 默认显示当前正在运行的

[option]说明

-a 列出当前所有正在运行的容器+历史上运行过的

-l 显示最近创建的容器

-n 显示最近n个创建的容器

-q 静默模式,只显示容器编号

--no-trunc:不截断输出 说明

docker 退出容器

1、exit 容器停止退出

2、ctrl+P+Q 容器不停止退出

docker 启动容器

docker start 容器id或者容器name

docker 重启容器

docker restart 容器id或者容器name

docker 停止容器

docker stop 容器id或者容器name

docker 强制停止容器

docker kill 容器id或者容器name

docker 删除已停止的容器

docker rm 容器id或者容器name

docker 查看容器日志

docker logs [option] 容器id或者容器name

[option]说明

-t 加入时间戳

-f 跟随最新的日志打印

--tail 数字 显示最后多少条

docker 查看容器内的进程

docker top 容器id或者容器name

docker 查看容器内部细节

docker inspect 容器id或者容器name

以json串展示容器全部细节

docker 退出不停止容器 再次进入容器

docker attach 容器id或者容器name /bin/bash

直接进入容器启动命令的终端,不会启动新的进程

docker 退出不停止容器 对运行的容器进行操作

有点隔山打牛的味道

docker exec -t 容器id或者容器name 操作命令

是在容器中执行新的操作,可以启动新的进程

docker 从容器内拷贝文件到宿主机

docker cp 容器id或者容器name:容器文件路径 宿主机路径

docker 容器数据卷

主要是数据共享 数据持久化

特点:

1、数据卷可以在容器之间共享或重用数据

2、卷中的更改可以直接生效

3、数据卷中的更改不会包含在镜像的更新中

4、数据卷的生命周期一直持续到没有容器使用它为止

docker 数据卷添加

1、命令添加

docker run -it -v 宿主机目录:容器目录 镜像

docker run -it -v 宿主机目录:容器目录:ro 镜像 后面目录容器为只读

查看数据卷是否挂载成功 docker inspect 容器id

容器跟宿主机(容器)之间数据共享

容器停止退出后,主机修改后数据是否同步

权限

2、Dockerfile添加

根目录新建文件夹并进入

Dockerfile添加volume指令 只支持容器 不支持宿主机

例 VOLUME ["/dataVolumeContainer01","/data/VolumeContainer2"]

由于宿主机目录是依赖于特定宿主机的,并不能够保证在所有的宿主机都存在这样的特定目录

file文件构建

build 生成镜像

run 容器

备注:docker挂载主机目录Docker访问出现cannot open directory:Permission denied

解决办法:在挂载目录后多加一个 --privileged=true 参数即可

Dockerfile生成数据卷 没有指定宿主机的路径

通过docker inspect 容器id docker会有默认路径

例如:docker run -it -v --privileged=true 宿主机目录:容器目录 镜像

docker 数据卷容器

1、什么叫数据卷容器

命名的容器数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器

2、容器间传递共享(--volumes-from)

dc02 继承 dco1

例如:docker run -it --name dco2 --volumes-from dc01 zzyy/centos

dco2 dc03 都继承dc01 删除dc01后 | dco2 dc03 数据卷文件还在吗?

还有,因为容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止

docker Dockerfile

Dockerfile是什么

Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本

Dockerfile是软件的原材料

Docker镜像是软件的交付品

Docker容器则可以认为是软件的运行态

Dockerfile面向开发 Docker镜像成为交付标准 Docker容器涉及部署与运维

三者缺一不可,合力充当Docker体系的基石

Dockerfile 语法格式

1、每条保留字指令都必须为大写字母且后面要跟随至少一个参数

2、指令按照从上到下,顺序执行

3、#表示注释

4、每条指令都会创建一个新的镜像层,并对镜像进行提交

Dockerfile的解析过程

docker 执行Dockerfile 大致流程

1、docker从基础镜像运行一个容器

2、执行一条指令并对容器做出修改

3、执行类似docker commit的操作提交一个新的镜像层

4、docker 再基于刚提交的镜像运行一个新容器

5、执行dockerfile的下一条指令直到所有指令都执行完成

Dockerfile 体系结构

1、FROM --基础镜像

2、MAINTAINER --镜像维护者的姓名和邮箱

3、RUN --容器构建时需要运行的命令

4、EXPOSE --当前容器应用对外暴露的端口

5、WORKDIR --指定创建容器后,终端默认登录进来的工作目录

6、ENV --用户构建镜像过程中设置环境变量

7、ADD --将宿主机目录下的文件拷贝进镜像| ADD命令会自动处理URL和解压缩

8、COPY --类似ADD,拷贝文件和目录到镜像中

将从构建上下文目录中<源路径>的文件/目录复制到新的一层镜像内的<目标路径>位置

两种写法

1、COPY src dest

2、COPY ["src","dest"]

9、VOLUME --容器数据卷,用于数据保存和持久化工作

10、CMD --指定一个容器启动时要运行的命令

Dockerfile中可以有多个CMD指令。但只有最后一个生效,CMD会被docker run 之后的参数替换

11、ENTRYPOINT --指定一个容器启动时要运行的命令

ENTPRPOINT的目的和CMD一样,都是在指定容器启动程序及参数

12、ONBUILD --当构建一个被继承的Dockerfile时运行命令,父镜像在被字镜像继承后父镜像的onbuild被触发

base镜像

1、Dockerfile构建

编写Dockerfile文件

2、docker Dockerfile 构建镜像

docker build -f Dockerfile路径 -t name/镜像名称 .

docker history image_id 镜像的构成历史记录

3、run 执行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值