docker 简单操作

Docker

镜像操作

查看所有镜像 (本机)

### 删除镜像

ImageName 为要删除的镜像名称

获取镜像

ImageName 为要获取的镜像名称

### 创建镜像

**首先必须编写Dockerfile文件**

然后执行命令:```docker build -t 镜像名称:标识(版本号)  Dockerfile文件所在目录```

## 容器操作

### 创建容器

从 imagesName 镜像创建一个容器

_-it : 从镜像ubuntu创建一个容器,将容器的shell映射到本机shell,在本机输入的命令会进入到容器_

_-p 8080:3000 将容器的3000端口映射到本机的8080端口_



### 查看所有容器

如果不加 -a 参数则只会显示当前正在运行的容器

手动终止容器

容器输出完毕后就会自动终止,但是有些容器提供的是服务,是不会自动终止的

container-id 为容器id,可通过查看所有容器命令```docker container ls -a```获取

### 删除容器

关闭容器不会删除容器

container-id 是要删除的容器id

Dockerfile

FROM

# 定制的镜像源来自 IMAGES
## IMAGES 为指定的镜像源名称
FROM IMAGES

RUN

# 执行随后的命令行命令
## 两种格式
### shell 格式
RUN COMMAND
### exec格式
RUN [“可执行文件", ”参数一“, "参数二", ...]

COPY

# 从上下文目录中复制文件或目录到容器中指定路径
## [--chown=<user>:<group>] 可选参数
### 用户改变复制到容器的文件的拥有者和所属用户组
## 源路径 源文件或源目录,可用通配符表达式
## 目标路径 容器内的指定路径,不存在会自动创建
COPY [--chown=<user>:<group>] <源路径1> ... <目标路径>
COPY [--chown=<user>:<group>] ["<源路径1>", ... "<目标路径>"]

ADD

# 和 COPY 使用格式类似(同需求下,推荐COPY)
## ADD 在源文件为 tar 压缩文件时,会自动复制解压
## 不解压的情况下,无法复制tar,会令镜像构建缓存失败
ADD ~

CMD

# 类似 RUN 命令,二者运行时间点不同
## CMD 在 docker run 时执行
## RUN 在 docker build 执行
## dockerfile 中多个 CMD,仅最后一个生效
### 为容器指定默认运行的程序,运行后,容器也结束
### 指定程序会被 docker run 命令参数指定程序覆盖
CMD ~
# 为 entrypoint指令指定的程序提供默认参数
CMD [params, parms...]

ENTRYPOINT

# 类似 CMD 但不会被 docker run 命令行参数指定的指令所覆盖
# 且 这些命令行参数会被作为参数送给 entrypoint 指定程序
# 如果 docker run 使用了 --entrypoint 选项,则被覆盖
## 在执行 docker run 是可指定运行所需参数
## 仅最后一个生效
ENTRYPOINT [可执行文件, 参数...]
# 可配合 CMD 使用
ENTRYPOINT ['nginx', '-c'] # -c 为定参
CMD ['/etc/nginx']
## 不传参
# docker run nginx:test
## 执行以下命令
# nginx -c /etc/nginx 
## 传参
# docker run nginx:test -c /etc/bin
## 执行以下命令
# nginx -c /etc/bin

ENV 和 ARG

# 设置环境变量,定义环境变量,后续可使用
## 后续指令中 通过 $K 引用
ENV <K> <V>
ENV K=V, K=V...

# 与 ENV 一致,但作用域不一样
## ARG 变量仅对 Dockerfile 有效,只在 docker build 中有效
## 使用 docker build --build-arg <K>=<V> 覆盖
ARG ~

VOLUME

# 定义匿名数据卷
## 启动容器时忘记挂载数据卷,会自动挂载到匿名卷
## 避免重要的数据因容器重启而丢失
## 避免容器不断变大
# 可通过 docker run -v 参数更改
VOLUME ['路径一'...]
VOLUME <路径>

EXPOSE

# 声明端口
## 方便配置映射
EXPOSE <端口一> [<端口二>...]

WORKDIR

# 指定工作目录
## 在构建镜像中的每一层都会存在
## 需要提前创建好
## docker build 构建镜像时,每个RUN都是新建的一层
## 只有通过WORKDIR创建的目录才会一直存在
WORKDIR <工作目录路径>

USER

# 指定执行后续命令的用户及用户组,需提前建立
USER <用户名>:[<用户组>]

HEALTCHECK

# 用于指定某个程序或指令监控 docker 容器服务运行状态
HEALTHCHECK
# 设置检查容器健康状态的命令
## CMD
HEALTHCHECK [选项] CMD <命令>
# 取消其它检查指令
HEALTHCHECK NONE

ONBUILD

# 以此文件构建的镜像为第一次
# 以第一次镜像进行构建的第二次镜像时执行
ONBUILD <其它指令>

LABEL

# 给镜像添加元数据
LABEL K=V

docker 简单操作
http://localhost:8080/archives/899d16c2-be49-4567-ba28-84fb0526a919
作者
inksha
发布于
2024年09月14日
许可协议