1.首先下载Docker (这里以windows 桌面版为例)
https://www.runoob.com/docker/windows-docker-install.html
2.下载docker后的命令操作
2.1.创建一个镜像(拉取)
docker pull nginx
2.2.查看在进程中的镜像
docker ps
2.3.查看所有的镜像
docker images
2.4.启动镜像
docker run -d -p 80:80 nginx (-d为不阻塞当前的进程,在后台执行,-p为端口配置 80外 :80内)
2.5.进入镜像(修改环境)
docker exec -it {{IMAGE_ID}} bash
2.6.退出镜像环境
exit
2.7.强制删除docker 容器和镜像
docker rm -f {{IMAGE_ID}}
docker rmi -f {{IMAGE_ID}}
2.8.复制镜像
docker commit {{IMAGE_ID}} {{NEW_IMAGE_NAME }}
2.9.liunx修改文件内容
echo hello > index.html >表示覆盖 >>表示追加
3.Dockerfile基础配置以及构建
基础的文件目录为下图:
配置:
FROM 必须,镜像源 eg: FROM alpine
WORKDIR :非必须,指定当下的shell语句运行在哪个目录下,如果没有则自动创建 eg: WORKDIR /app
COPY : 复制 eg: COPY src/ /app (src为复制源的当前目录 /app 为复制目标的目录,中间有空格)
ADD:添加 eg: ADD src/ /app (跟COPY的区别在于源地址不仅可以文件路径也可以是URL )
RUN : 执行shell 语句 eg: RUN echo 321 >> 1.text
CMD :执行shell语句 eg: CMD tail -f 1.text (tail -f 阻塞式) eg2:CMD cat 1.text
EXPOSE:指定暴漏端口
VOLUME: 指定映射到宿主机的目录下 eg:VOLUME /a/b
ENV:指定当前环境变量 eg: ENV A=10 输出: echo $A
ARG:环境变量(跟ENV的区别是ARG只在构建的时候有效(docker build),构建完成后,再执行就无效了,ENV一直有效)
在构建时可以使用 docker build -t test --biuld-arg A=10 . 来传递初始的全局变量
LABEL:指定一些源数据信息以 key="value"的形式,起到标实作用 eg:LABEL k="v" k1="v1"
ONBUILD:当前镜像构建的时候不会执行,基础当前的镜像的镜像构建的时候才会执行
SHELL :指定SHELL 一般指cmd和shell的切换 eg: SHELL /bin/sh (liunx) eg2:SHELL cmd (windows)
USER:用于指定RUN CMD等指令运行时的用户身份,不指定是root eg:USER node
另附:RUN和CMD区别:
两者都是用于执行命令,区别在于执行命令的时机不同,RUN命令适用于在 docker build 构建docker镜像时执行的命令,
而CMD命令是在 docker run 执行docker镜像构建容器时使用,可以动态的覆盖CMD执行的命令。
基础的Dockerfile文件:
FROM alpine
WORKDIR /app
RUN echo 321 >> 1.text
CMD cat 1.text
构建:docker build -t test . (-t意思为命名镜像,. 意思为Dockerfile在当前的目录下,可以理解为Dockerfile的位置)
参考视频:https://www.bilibili.com/video/BV1k7411B7QL
https://www.bilibili.com/video/BV1R4411F7t9
总结:两个准备 先下载docker 后写Dockerfile 两个命令 先build 后run
build:
代码语言:javascript复制docker build -t test .
构建完之后可以 通过docker images 来查看是否创建镜像成功了
run:
代码语言:javascript复制docker run test