景区网站建设案例,高端个人网站,wordpress自动伪原创,网站引导页怎么做的文章目录 一、镜像images1#xff09;下载安装2#xff09;docker images相关命令(保存、删除、上传、别名、搜索镜像) 二、容器container1#xff09;展现所有在跑的容器服务ps2#xff09;start /restart / kill / stop /rm3#xff09;exec /cp4#xff09;run/create… 文章目录 一、镜像images1下载安装2docker images相关命令(保存、删除、上传、别名、搜索镜像) 二、容器container1展现所有在跑的容器服务ps2start /restart / kill / stop /rm3exec /cp4run/create5logs/stats/top6commit7attach 三、dockerfile1基本概念和常用指令2dockerfile示例3构建镜像命令 四、volume五、network六、docker-compose七、proxy 一、镜像images 问题 本地部署后给别人环境不同带来的麻烦别人部署不了 解决问题思路示意 内容 ①images二进制文件可以认为是个模板可以生成containercontainer是实际在跑的程序 ②repo仓库存储很多人传的不同images镜像类似于github一样 ③dockerfile从自己本地生成images的过程
1下载安装
①官网下载 ②查看docker是否装好开起来
//通过 docker ps 命令用户可以快速查看当前运行的容器了解它们的状态和基本信息这对于管理和监控 Docker 容器非常有用。
docker ps输出格式
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESCONTAINER ID容器的唯一标识符。 IMAGE容器使用的镜像。 COMMAND容器启动时运行的命令。 CREATED容器创建的时间。 STATUS容器的当前状态如运行中Up、已停止Exited等。 PORTS容器暴露的端口和映射到主机的端口。 NAMES容器的名称。
2docker images相关命令(保存、删除、上传、别名、搜索镜像)
备注 不知道命令的作用就用下面命令打印出来
docker 命令 --help具体命令展示 ①images / images ls ②search 搜索镜像\pull 拉取镜像 ③tag \ push \login \ logout ④rmi 删除镜像 ⑤save \load ⑥history \ inspect 具体命令效果 ①images / images ls
标签
REPOSITORY TAG IMAGE ID CREATED SIZEREPOSITORY镜像所属的仓库名称。 TAG镜像的标签。 IMAGE ID镜像的唯一标识符。 CREATED镜像创建的时间。 SIZE镜像的大小。
②search 搜索镜像\pull 拉取镜像
在repo上面搜索hello-world 拉取镜像
若指定版本则加上:1.0
docker pull rancher/hello-world拉取过来后用docker images看本地镜像可以看到本地已经有这个rancher的hello-world了
③tag \ push \login \ logout tag给镜像起别名命令用于给本地的 Docker 镜像添加一个新的标签。标签是镜像的一个别名可以用来标记镜像的不同版本或者用途。通过 docker tag 命令用户可以将一个镜像标记为属于某个特定的仓库或者版本这对于管理和分发 Docker 镜像非常有用。
docker tag 标签名字 账号名字/库名字:版本号docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]push上传镜像 ④rmi 删除镜像
docker rmi 镜像名字⑤save 保存镜像 \ load
离线要保存镜像的话
docker save -o myimage.tar myimage解压缩
docker load -i hw.tar⑥history \ inspect
history看镜像构建的历史 inspect看对应镜像的信息
二、容器container
容器命令讲解
1展现所有在跑的容器服务ps
docker ps -a //-a意思是all所有的2start /restart / kill / stop /rm
①stop 停止某个容器的服务 ②start开始某个容器的服务器 ③restart 重启某个容器 ④删除某个容器rm不推荐使用容易出问题
3exec /cp
①exec 进入到某个容器里面已经有这个容器了 -i: 可交互的 t终端
②把某个文件复制到容器里面去 或是把容器内的文件复制到当前目录下
4run/create
①run运行一个镜像 后台守护进程运行一个容器
docker run -d 4b1如果想让容器停掉后就销毁了
docker run --rm -d 4b1②create创建一个容器但是不让他跑起来
5logs/stats/top
①logs 监控容器输出 ②stats 看运行中的容器占用的资源 ③top查看容器占用
6commit
①commit 把容器生成一个镜像不建议这么做这么做的话只能生成黑盒 7attach
附加到一个容器上面但是CTRLC就会杀掉容器
三、dockerfile
1基本概念和常用指令
基本概念 ①dockerfile一个文本文件其中包含了一系列指令Docker 引擎根据这些指令构建镜像 ②镜像Dockerfile 构建后生成的可执行软件包包含了运行应用所需的代码、库、环境变量等。 ③层Docker 镜像由多个层Layer构成每一条指令都会创建一个新的层。层是不可变的这使得 Docker 镜像更为高效和可重用。常用指令
FROM 指定基础镜像Dockerfile 的第一行通常是此指令。
MAINTAINER 指定维护者信息不推荐使用使用 LABEL 替代。
LABEL 添加元数据到镜像例如作者、版本等。
RUN 在构建镜像时执行命令例如安装软件包。
CMD 指定容器启动时要执行的命令可以被 docker run 命令覆盖。
ENTRYPOINT 设置容器启动时的默认命令不能被 docker run 轻易覆盖。
COPY 将文件或目录从主机复制到镜像中。
ADD 类似于 COPY但还支持 URL 和自动解压压缩文件。
ENV 设置环境变量。
EXPOSE 声明容器监听的端口但并不会实际映射到主机。
VOLUME 创建挂载点用于持久化数据。
WORKDIR 设置工作目录后续指令将在此目录下执行。
ARG 定义构建时可用的变量。
USER 指定运行时的用户。
SHELL 指定默认的 shell用于运行后续指令①FROM使用举例:表示基于什么环境做镜像 1以特定版本的 CentOS 为基础FROM centos:7表示以 CentOS 7 版本的镜像作为基础来构建新的镜像该镜像中包含了 CentOS 7 的操作系统环境及相关的软件包管理系统等基础组件。 2以 Alpine Linux 为基础FROM alpine:3.18Alpine 是一个轻量级的 Linux 发行版常用于构建小型、高效的容器镜像。这里以 Alpine 3.18 版本为基础适合对镜像大小有严格要求的场景如构建简单的网络服务或命令行工具容器等 3以特定版本的 Java 运行时环境镜像为基础FROM openjdk:11-jdk此指令以包含 Java 11 开发工具包的 OpenJDK 镜像为基础适用于构建 Java 应用程序的容器化环境镜像中已经预安装了 Java 运行时和开发所需的相关库等方便直接在容器内运行和开发 Java 应用。 4以 Python 为基础镜像FROM python:3.11,slim 版镜像去除了一些不必要的软件包和文件使得镜像体积大幅减小。这对于容器化部署非常有利尤其是在资源受限的环境中如小型服务器、边缘计算设备等可以更高效地利用存储空间同时也能加快镜像的下载和部署速度 5以 C 为基础镜像对于 C通常没有像 Python 那样直接对应版本的官方基础镜像但可以选择一些基于 Linux 发行版且预安装了 C 编译环境的镜像作为基础FROM ubuntu:20.04 可以看到有自带的环境没有的话docker会自动下载有则优先从本地寻找 ②WORKDIR 设置工作目录后续指令将在此目录下执行。 应该把所有代码放到这个路径下面去然后执行的时候应该从这个路径作为项目的根路径去执行指令 ③COPY 将文件或目录从主机复制到镜像中。
#表示将当前路径的所有文件复制到/app/下面
COPY . /app/④RUN 在构建镜像时执行命令例如安装软件包。
#安装flask包
RUN pip install flask⑤CMD 容器要启动的时候要执行的命令
CMD [python, app.py]⑥ENTRYPOINT 设置容器启动时的默认命令不能被 docker run 轻易覆盖可以看到加参数2还是执行了 echo 1 然后2不会被打断 而CMD会被打断从而有报错一杯覆盖 替代的效果 常用会这么用不填参数默认1填参数那就是所填的参数占位符的作用 ⑦ADD 类似于 COPY但还支持 URL 和自动解压压缩文件。(一般不会用来解压包一般是RUN tar -xvf )
#拷贝后解压
COPY . /app/
ADD ./docs.tar.gz /app/⑧LABEL \ EXPOSE \ VOLUME 1LAYBEL添加元数据到镜像例如作者、版本等。就是注释 2expose 声明容器监听的端口但并不会实际映射到主机把容器的5000端口暴露出来这可以看到容器外面调用的端口是5001
3VOLUME 创建挂载点用于持久化数据。就是-v的参数可以看到下面./docs目录与容器内也就是/app/docs挂载在一起了 但是这样有误删除的风险 一般是创建卷吗如下这个卷是docker自己维护的可以跨容器进行通信
⑨ARG与ENV ARG 构建容器中使用的环境变量 ENV 运行中使用的环境变量
env查看环境变量 可以在构建的时候传参数来修改 ⑩HEALTHCHECK 定时任务检测容器是否运行 不断执行这个命令没有反馈就表示错误了10s执行一次超时3秒超时连续3次
2dockerfile示例
FROM python:3.10-slim LABEL maintainerpanhu
LABEL version1.0
LABEL descA docker bigvWORKDIR /appARG APP_VER1.0
ENV APP_ENV1.0COPY . /app/
EXPOSE 5000ENV FLASK_RUN_HOST0.0.0.0
ENV FLASK_RUN_PORT5000HEALTHCHECK --interval10s --timeout3s --retries3 CMD curl --fail http://localhost:5000/ || exit 1RUN pip install flaskCMD [python, app.py]3构建镜像命令
#起别名d1
docker build -t my-app .四、volume
五、network
六、docker-compose
七、proxy