wordpress的登陸地址企業(yè)網(wǎng)站seo診斷報告
Docker筆記
1. Dockerfile編譯構(gòu)建docker
Dockerfile 是一個文本文件,包含了構(gòu)建 Docker 鏡像的所有指令。
Dockerfile 常用的有如下關(guān)鍵字:
FROM:指定基礎(chǔ)鏡像,后續(xù)定制操作都是基于這個基礎(chǔ)鏡像,比如:
FROM ubuntu:20.04
FROM nginx
FROM centos
ARG:定義在構(gòu)建過程中傳遞給構(gòu)建器的變量,可使用 “docker build” 命令設(shè)置。
# 參數(shù)
ARG USER_NAME
ARG USER_PASSWD
ENV:在容器內(nèi)部設(shè)置環(huán)境變量。比如:
ENV PATH="/home/${USER_NAME}/.local/bin/*:${PATH}"
RUN:用于執(zhí)行后面跟著的命令行命令,比如:
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 的指令每執(zhí)行一次都會在 docker 上新建一層,所以盡量減少指令,可以使用 && 追加操作。
COPY:將文件或目錄復(fù)制到鏡像中。
COPY early_boot.sh /docker-entrypoint.d/early_boot.sh
COPY sudo.expect /docker-entrypoint.d/sudo.expect
ENTRYPOINT:設(shè)置容器創(chuàng)建時的主要命令。
ENTRYPOINT [ "/docker-entrypoint.d/early_boot.sh" ]
有了dockerfile文件以后就可以構(gòu)建docker:
docker build \--build-arg USER_NAME=${USER_NAME} \--build-arg USER_PASSWD=${USER_PASSWD} \-t ubuntu-build:v1.0.0 .
Dockerfile中設(shè)置的ARG 參數(shù)可以通過編譯時候的–build-arg 傳遞。
如果構(gòu)建成功那么就可以在本地看到一個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. 運(yùn)行docker和常用參數(shù)
- 查看本地docker 鏡像
docker images
- 查看正在運(yùn)行的docker
docker ps -a
- 運(yùn)行docker
docker run \--rm \-it \--privileged \--name ${docker_name} \-w / \-v /home:/home \-v /mnt:/mnt \myusername/ubuntu-build:latest \$cmd
–rm : 當(dāng)容器退出時自動刪除該容器。這樣可以避免因?yàn)檫^多無用的退出容器占用過多磁盤空間
-it: 使容器的標(biāo)準(zhǔn)輸入保持打開,為容器分配一個偽終端,常常用來使容器模擬成一個交互式應(yīng)用。
–privileged:給予容器一些特權(quán),使其具有類似于宿主機(jī)的能力,例如訪問宿主機(jī)的硬件設(shè)備。
–name:為創(chuàng)建的容器指定一個名稱為 ${docker_name}
-w:設(shè)置容器的工作目錄為 /
-v:將宿主機(jī)的 /home 目錄掛載到容器的 /home 目錄,使容器可以訪問和修改這個目錄中的文件
$cmd: 這是在容器中運(yùn)行的命令,這個參數(shù)也是一個環(huán)境變量,你需要在運(yùn)行這個命令之前進(jìn)行定義。如果省略這個參數(shù),容器會運(yùn)行默認(rèn)的命令(通常是 /bin/bash)