Docker速记

docker

是一个用于开发、交付和运行应用程序的开放平台,能够将应用程序和基础架构分开,以便于快速交付软件,部署代码等。

  • 快速、一致的交付应用程序
  • 响应式部署和扩展
  • 同一硬件上运行更多的工作负载

架构图(来自docker官网)

在这里插入图片描述

镜像(image)

是创建容器的只读模板,镜像可以是基于另一个镜像做一些额外的定制,比如把java项目打包成一个镜像可以基于openjdk1.8的一个镜像制作一个镜像。

Docker中的分层是指Docker镜像由多个只读层组成的特性。每个层都包含了Docker容器的文件系统中的某些文件或文件夹,每个层都是只读的,因此对于已存在的层来说,任何的更改都将创建一个新的层,可以通过docker history --no-trunc image 去查看镜像镜像历史记录的列表也就是镜像的每个层。

在这里插入图片描述

联合文件系统是指在Docker容器启动时,这些层将被“堆叠”成为一个单一的文件系统。这种文件系统的特性是它可以汇聚多个分层文件系统,并且每个分层文件系统都不会对其他分层文件系统造成影响。

Dockerfile

Dockerfile 是一个包含了一组指令的文本文件,用来告诉Docker如何构建Docker镜像。Dockerfile中的每一行都会在现有的层之上创建一个新的层,每个指令都对应着一个镜像构建过程中的一个步骤。 Dockerfile和分层关系密切,因为Dockerfile中每一个指令都会生成一个新的分层,最终这些分层会被合并成一个完整的Docker镜像。使用Dockerfile的好处是可以自动化镜像的构建过程,并且可以高效地利用Docker的分层机制来优化镜像的大小和构建速度。

容器(Container)

是镜像的可运行实例,有点类似于java中的实例对象的关系。

常用命令

基础命令

  • 启动docker:systemctl start docker

  • 关闭docker:systemctl stop docker

  • 重启docker:systemctl restart docker

  • 设置docker开机自启动:systemctl enable docker

  • 查看docker运行状态:systemctl status docker

在这里插入图片描述

镜像命令

  • 查看镜像列表:docker images

在这里插入图片描述

  • 拉取镜像:docker pull imageName:Tag(imagename:镜像名,Tag:版本号)

在这里插入图片描述

  • 搜索镜像:docker serach imageName
  • 删除镜像:docker rmi imageId/imageName
  • 强制删除镜像:docker rmi -f imageId/imageName
  • 查看镜像/容器数据卷占用空间:docker system df

在这里插入图片描述

  • 根据dockfile创建镜像:docker build [OPTIONS] PATH

在这里插入图片描述

常用的 [OPTIONS]主要是 -t 给镜像命名和标记格式 “name:tag”,PATH是dockerfile所在目录.代表当前目录。例如:docker build -t firstDemo:v1.0 .

容器命令

  • 正在运行容器列表:docker ps

  • 所有容器列表:docker ps -a

  • 访问到容器里:docker exec -it 容器名称/容器id PATH

  • 推出容器:exit

  • 停止容器:docker stop 容器名称/容器id

  • 删除容器:docker rm 容器id/容器名称 容器id/容器名称 容器id/容器名称

  • 强制删除容器:docker rm -f 容器id/容器名称 容器id/容器名称 容器id/容器名称

  • 运行容器:docker run [OPTIONS] IMAGE [COMMAND]

常见的[OPTIONS]有 -d 在后台运行容器并打印id、–name 给容器命名(格式 :“–name firstDemo”)、-p 将容器端口发布到主机(格式:“-p 8080:8191”)

-p 8080:8191 标识容器内部的8091端口和本地主机的端口8080进行映射,通过本地主机的8080端口就可以访问到容器的8191端口。

例子:docker run -it -d --name firstDemoContainer -p 8081:8081 firstDemoImage bin/bash

  • 查看docker容器日志:docker logs [OPTIONS] CONTAINER

在这里插入图片描述

例:dcker logs --tail=500 e931f0769a61

在这里插入图片描述

Dockerfile构建

Dockerfile语法

FROM:指定基于哪个一个基础镜像构建

  • FROM : #指定镜像名称+版本号不加版本号默认latest即最新版
  • FROM @ #指定镜像名称+校验序列号

例:
FROM java:8 #使用镜像名称为java的镜像版本号为8

RUN:镜像构建时需要执行的命令

  • RUN
  • RUN [“executable”, “param1”, “param2”]

例:

RUN echo success

RUN ["echo","success"]

**MAINTAINER:指定该Docker镜像的维护者信息。 **
例:

MAINTAINER Minums <Minums@example.com>。

COPY:将文件从主机复制到镜像里

例:

COPY first-demo.jar homw/www/firstDemo.jar

ADD:将宿主机上的文件或目录复制到Docker镜像中

例:

ADD first-demo.jar homw/www/firstDemo.jar

**WORKDIR:在镜像中指定工作目录 **

例:

WORKDIR /home/www/work

CMD:指定容器启动后所执行的默认命令。

例:

CMD ["nginx", "-g", "daemon off;"]

LABEL:为Docker镜像添加元数据

例:

LABEL version="1.0" description="This is a sample Docker image"

EXPOSE:声明容器将运行服务的端口号

例:

EXPOSE 80

ENV:设置Docker容器的环境变量

例:

ENV MY_NAME="John Smith"

VOLUME:将宿主机上的目录映射到Docker容器中的指定目录,以便在容器中存储数据

例:

VOLUME ["/data"]

ENTRYPOINT:配置容器的入口程序

例:

ENTRYPOINT ["nginx", "-g", "daemon off;"]

USER:指定容器运行时的用户名或UID

例:

USER www-data

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值