Docker相关笔记

Docker笔记

1. Dockerfile编译构建docker

Dockerfile 是一个文本文件,包含了构建 Docker 镜像的所有指令。

Dockerfile 常用的有如下关键字:
FROM:指定基础镜像,后续定制操作都是基于这个基础镜像,比如:

clike 复制代码
FROM ubuntu:20.04
FROM nginx
FROM centos

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

clike 复制代码
# 参数
ARG USER_NAME
ARG USER_PASSWD

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

clike 复制代码
ENV PATH="/home/${USER_NAME}/.local/bin/*:${PATH}"

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

clike 复制代码
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:将文件或目录复制到镜像中。

clike 复制代码
COPY early_boot.sh /docker-entrypoint.d/early_boot.sh
COPY sudo.expect /docker-entrypoint.d/sudo.expect

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

clike 复制代码
ENTRYPOINT [ "/docker-entrypoint.d/early_boot.sh" ]

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

clike 复制代码
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然后再推送:

clike 复制代码
docker tag ubuntu-build:v1.0.0 myusername/ubuntu-build:latest
docker push myusername/ubuntu-build:latest

2. 运行docker和常用参数

  1. 查看本地docker 镜像
clike 复制代码
docker images
  1. 查看正在运行的docker
clike 复制代码
docker ps -a
  1. 运行docker
clike 复制代码
    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)

相关推荐
richdata1 分钟前
商品数字化不是先做大数据,而是先把数据变成可用决策
大数据·运维·数据治理·商品数字化·智能补货·ai商品决策
harmony&9 分钟前
Docker 容器技术从入门到实战:容器、网络、存储与监控全解析
docker·云原生
weixin_4166679636 分钟前
【无标题】
运维·服务器·网络
一池秋_1 小时前
arm低配linux设备,桌面应用冷启动提速方法
linux·运维·arm开发
上海云盾-小余3 小时前
流量攻击复盘:为什么 WAF 完好,业务依旧瘫痪
运维·服务器·网络
IT大白鼠3 小时前
Docker 私有仓库管理:Harbor 企业级仓库搭建与镜像全生命周期管理
运维·docker·容器
戴西软件3 小时前
戴西iDWS.3DViz Suite数据轻量化可视化软件,从传统桌面软件向云端协同的重大突破
大数据·运维·网络·人工智能·机器学习·3d
Huathy-雨落江南,浮生若梦4 小时前
Caddy 学习笔记 - 反向代理与 IP 封禁
笔记·学习·tcp/ip
我命由我123454 小时前
Linux - Linux/POSIX 路径斜杠折叠规则
linux·运维·服务器·android studio·android jetpack·android-studio·android runtime
姚不倒5 小时前
Nginx 反向代理:5 种负载均衡策略与实战
运维·nginx·负载均衡