当前位置: 首页 > news >正文

Docker相关笔记

Docker笔记

1. Dockerfile编译构建docker

Dockerfile 是一个文本文件,包含了构建 Docker 镜像的所有指令。
Dockerfile 常用的有如下关键字:
FROM:指定基础镜像,后续定制操作都是基于这个基础镜像,比如:

FROM ubuntu:20.04
FROM nginx
FROM centos

ARG:定义在构建过程中传递给构建器的变量,可使用 “docker build” 命令设置。

# 参数
ARG USER_NAME
ARG USER_PASSWD

ENV:在容器内部设置环境变量。比如:

ENV PATH="/home/${USER_NAME}/.local/bin/*:${PATH}"

RUN:用于执行后面跟着的命令行命令,比如:

RUN echo "root:${USER_PASSWD}" | chpasswd \&& echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections \#    && sed -i "s@http://.*archive.ubuntu.com@http://mirrors.aliyun.com@g" /etc/apt/sources.list \#    && sed -i "s@http://.*security.ubuntu.com@http://mirrors.aliyun.com@g" /etc/apt/sources.list \&& apt-get -y update \&& apt-get install -y --no-install-recommends \build-essential \automake

Dockerfile 的指令每执行一次都会在 docker 上新建一层,所以尽量减少指令,可以使用 && 追加操作。

COPY:将文件或目录复制到镜像中。

COPY early_boot.sh /docker-entrypoint.d/early_boot.sh
COPY sudo.expect /docker-entrypoint.d/sudo.expect

ENTRYPOINT:设置容器创建时的主要命令。

ENTRYPOINT [ "/docker-entrypoint.d/early_boot.sh" ]

有了dockerfile文件以后就可以构建docker:

docker build \--build-arg USER_NAME=${USER_NAME} \--build-arg USER_PASSWD=${USER_PASSWD} \-t ubuntu-build:v1.0.0 .

Dockerfile中设置的ARG 参数可以通过编译时候的–build-arg 传递。

如果构建成功那么就可以在本地看到一个ubuntu-build:v1.0.0的docker镜像。

如果需要将本地镜像推送到dockerhub上,需要先打tag然后再推送:

docker tag ubuntu-build:v1.0.0 myusername/ubuntu-build:latest
docker push myusername/ubuntu-build:latest

2. 运行docker和常用参数

  1. 查看本地docker 镜像
docker images
  1. 查看正在运行的docker
docker ps -a
  1. 运行docker
    docker run \--rm \-it  \--privileged  \--name ${docker_name} \-w / \-v /home:/home \-v /mnt:/mnt \myusername/ubuntu-build:latest \$cmd

–rm : 当容器退出时自动删除该容器。这样可以避免因为过多无用的退出容器占用过多磁盘空间
-it: 使容器的标准输入保持打开,为容器分配一个伪终端,常常用来使容器模拟成一个交互式应用。
–privileged:给予容器一些特权,使其具有类似于宿主机的能力,例如访问宿主机的硬件设备。
–name:为创建的容器指定一个名称为 ${docker_name}
-w:设置容器的工作目录为 /
-v:将宿主机的 /home 目录挂载到容器的 /home 目录,使容器可以访问和修改这个目录中的文件
$cmd: 这是在容器中运行的命令,这个参数也是一个环境变量,你需要在运行这个命令之前进行定义。如果省略这个参数,容器会运行默认的命令(通常是 /bin/bash)

http://www.lryc.cn/news/420984.html

相关文章:

  • 前端技术day01-HTML入门
  • Multisim 用LM358 运放模拟线性稳压器 - 运放输出饱和 - 前馈电容
  • 宁德大屏第二版总结
  • 冥想第一千二百四十七天(1247)
  • 基于光学动捕定位下的Unity-VR手柄交互
  • php json_decode 带反斜杠字符串json解析
  • 【NLP】文本张量表示方法【word2vec、词嵌入】
  • 疯狂Java讲义_08_泛型
  • HCIA、OSPF笔记
  • Python删除lru_cache缓存
  • Android面试必问题:大白文讲透Android View工作原理
  • WinDbg配置远程调试
  • spl注入实战thinkphp
  • 整理深度学习时最常用的Linux命令(自用)
  • LVS——>linux 虚拟服务器知识汇总
  • AI赋能周界安防:智能视频分析技术构建无懈可击的安全防线
  • FastAPI+Vue3工程项目管理系统项目实战私教课 上课笔记20240808 课程和学习计划制定
  • Robot Operating System——发布相对湿度数据
  • 一文搞懂后端面试之不停机数据迁移【中间件 | 数据库 | MySQL | 数据一致性】
  • 【ESP01开发实例】- ISD1820录音控制
  • Linux驱动面试高频考点后面继续改整理
  • 【Python】nn.ConvTranspose1、2、3d()函数详解和示例
  • vtkConnectivityFilter提取连通区域中的问题
  • 购物系统小程序的设计
  • 做报表用什么工具?不想再用Excel了!!!
  • c++实现学生管理系统(附源码)
  • JS防抖是什么?干嘛用的?
  • Linux磁盘管理与文件系统(二):实用工具和命令、fdisk分区示例
  • 使用vtkRenderer创建的显示点云的窗口如何刷新(QT/C++)
  • Mysql绕过小技巧