docker 基本使用
我自己的总结
1.创建容器先创建镜像,
2.创建镜像先创建dockerfile文件
3.以下是dockerfile文件的一部分内容
4.容器镜像的创建只能 从已有的镜像进行创建(必须有一个官方的镜像 然后根据官方的模板创建你自己的)
5.也就是说 dockerfile中的from关键字必须是官方的或者其他开源的地址
6.根据你创建模板进行命令,此命令必须在dockerfile文件所在的文件夹中,python代码也是,requirements.txt也是,
7.镜像创建好后就可以拉取镜像 创建docker容器了
8. 端口如何理解(两部分 容器端口,服务器端口) 他们是映射关系,容器5000<-->服务器8088
9.也就是说访问服务器的8088端口就是访问容器的5000端口
- 首先你需要根据官网已有的镜像设置一个自己的镜像 使用dockerfile 文件进行编写
-
# 使用官方 Python 3.6.8 镜像作为基础镜像 FROM python:3.6.8 # 设置工作目录 WORKDIR /app # 将当前目录下的所有内容复制到工作目录中 COPY . /app # 安装 Python 包 RUN pip install --no-cache-dir -r requirements.txt # 定义容器启动时要执行的命令 CMD ["python", "app.py"]
docker工作原理
- 基本解释
- 远程镜像仓库 本地镜像 本地容器 docker
- 镜像可以理解为容器的模板,也可以理解为电脑安装操作系统的光盘
- 本地容器是真正运行的实例,容器创建后即可跟Linux系统一样使用
- docker软件是以上三个部分的基座(远程仓库,本地镜像,本地容器)
docker镜像
- 镜像:容器的模板,等同于安装电脑操作系统的光盘,
- 镜像是只读的,不能对其进行修改,
- docker镜像 名称用 ":"隔开 例如 mysql:5.7
- mysql 是镜像名 5.7 是tag版本
- 产看本地镜像命令: docker images
- 搜索镜像仓库 docker searh <名称关键字>
- 下载镜像仓库 docker pull <镜像名: tag版本>
- 上传镜像仓库 docker push <镜像名: tag版本>
- 删除镜像仓库 docker rmi <镜像名: tag版本>
- 打包本地镜像文件 docker save -o <输出文件路径>
- 导入本地镜像文件 docker load -i <加载文件路径>
docker容器
- docker 是真正的运行实例,容器可以隔离网络,文件,进程等
- 一个容器是一个沙河隔离环境
- 相对于虚拟机技术,启动快,更轻量,
- 但是容器是共用宿主机的内存,cpu物理资源,多容器可能存在互相抢占资源的情况
- 修改容器文件不会啊影响到镜像, 容器是基于镜像创建的,容器内部的文件是完全独立的
- 如果需要将修改后的容器放到别的机器中运行一般的做法是:
- 先将容器打包成镜像
- 镜像复制到新的服务器镜像中
- 从新的服务的镜像中启动容器
容器创建方式
- 通过命令直接创建
- 需要完整的镜像
- 通过dockerfile创建
- 镜像可以不完整
-容器创建的命令 - 基础参数, docker dit\ --name <容器名称>
- 挂在宿主机目录, -v /home/workspace/:/home/workspace\
- 网络设置 -p 8001:8080
- 环境变量设置, TZ = "Asia/Shanghai"
- 基础镜像, ubuntu: 22.04
- 容器每次启动命令, bin/bash
- 镜像可以不完整
容器创建命令详解
- 查看本地镜像, docker ps
- 查看所有容器,(包括未运行的)docker pa -a
- 启动容器: docker start
- 停止容器: docker stop
- 删除容器: docker rm
- 进入容器内部 docker exec -it <容器ID> /bin/bash
- 进入容器内部 docker exec -it <容器ID> /bin/bash
- 容器打包成镜像 docker commit -a "作者信息" -m "log信息" <容器ID> <目标镜像名称:tag版本>
- 拷贝文件到容器中 docker cp <文件目录> <容器ID>:<目标目录>
- 拷贝容器文件到宿主机中: docker cp <容器ID> <文件目录> <宿主机目标目录>
- 更新容器设置: docker update <容器ID> <相关设置>
dockerfile关键字
- 在 Dockerfile 中,有一些常用的关键字(指令)用于定义镜像的构建规则和行为。下面是一些常见的 Dockerfile 关键字:
FROM:指定基础镜像。
MAINTAINER(已弃用)/ LABEL:定义镜像的作者或维护者信息。
RUN:在容器中执行命令。
CMD:设置容器启动时要执行的默认命令,可以有多个 CMD,但只有最后一个生效。
ENTRYPOINT:设置容器启动时要执行的默认命令,与 CMD 的区别在于 ENTRYPOINT 不会被 docker run 命令后面的参数覆盖。
ARG:定义构建过程中的变量。
ENV:设置环境变量。
EXPOSE:声明容器运行时要监听的端口。
VOLUME:创建一个可以从容器内持久化存储的挂载点。
WORKDIR:设置工作目录。
ADD / COPY:将文件从主机复制到容器中。
ONBUILD:定义当当前镜像被作为其他镜像的基础镜像时要运行的命令。
USER:指定运行容器时的用户名或 UID。
HEALTHCHECK:指定容器健康检查的命令和参数。
SHELL:指定用于执行 RUN、CMD 和 ENTRYPOINT 指令的默认 Shell。
以上是一些常见的 Dockerfile 关键字,您可以根据实际需求和具体的镜像构建过程选择合适的关键字来编写 Dockerfile 文件。