Docker 学习笔记

2024-03-18  本文已影响0人  yeshan333

Play With Docker一个免费使用的基于web界面的Docker环境

常用docker命令

可使用docker COMMAND --help查看命令的用法

Docker镜像相关

# 格式:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# 说明:如果给出tag,一般拉取latest,name一般为username/repository,digest为镜像摘要可不给出
docker image pull ubuntu:latest
# 这个拉取标签为latest的ubuntu官方镜像,latest: Pulling from library/ubuntu,latest不一定是最新镜像
# docker image inspect [OPTIONS] IMAGE [IMAGE...]
# inspect后一般跟repository name或image id
# 例如:使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1。
docker build -t yeshan333/ubuntu:latest .

Docker容器相关

# 格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 常用options:
# -d: 后台运行容器,并返回容器ID;
# -i: 以交互模式运行容器,通常与 -t 同时使用;
# -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
# -P: 随机端口映射,容器内部端口随机映射到主机的高端口
# -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
# --name="container-name": 为容器指定一个名称;

# 示例
docker container run -it ubuntu:latest /bin/bash
# 说明:-it使容器具备交互性并与终端连接,命令最后表明运行容器中的Bash Shell程序
# 例如:
docker container exec -t <container-name or container-id> bash
# 该命令会将docker主机中的shell连接到一个运行中的容器,在容器内部启动一个新的bash shell进程

应用容器化

(Containerizing|Dockerizing)即将应用整合到容器中并且运行的过程

应用容器化的一般步骤

Once your app is containerized (made into a Docker image), you’re ready to ship it and run it as a container.《Docker Deep Dive》

docker deep dive

使用Dockerfile定制镜像

Dockerfile中以#开头的都是注释行,除注释之外,每一行都是一条指令
指令的的一般格式:INSTRUCTION argument,INSTRUCTION一般都为大写

示例Dockerfile:https://github.com/yeshan333/psweb

FROM alpine

LABEL maintainer="nigelpoulton@hotmail.com"

# Install Node and NPM
RUN apk add --update nodejs nodejs-npm

# Copy app to /src
COPY . /src

WORKDIR /src

# Install dependencies
RUN  npm install

EXPOSE 8080

ENTRYPOINT ["node", "./app.js"]

构建镜像

使用docker image build根据Dockerfile制作镜像,示例:

# -t用于指定制作好的镜像的名字及标签,通常 name:tag 或者 name
# 最后的 . 表示使用当前目录作为构建上下文
docker image build -t web:latest .

使用docker image history web:latest可以查看构建镜像过程中执行了哪些指令

推送镜像到Docker Hub

# new-tag建议以自己的 DockerHub ID/new-tag 的格式命名,方便推送到自己的repo
docker image tag <current-tag> <new-tag>

Dockerfile常用指令

指令 说明
FROM 指定要构建的镜像的基础镜像,一般为Dockerfile文件第一行
RUN 用于在镜像中执行命令,会新建一个镜像层
COPY 一般用于将应用代码copy到镜像中,这会新建一个镜像层
WORKDIR 用于设置Dockerfile中未执行的指令的工作目录
ENTRYPOINT 指定镜像以容器方式启动后默认运行的程序, ENTRYPOINT 的命令不会被docker run指定要执行的命令覆盖
CMD 指定容器启动时执行的命令,一个 Dockerfile 中只能有一个 CMD 指令,如果写了多个,那么只有最后一个会执行。CMD 和 ENTRYPOINT 同时存在时,CMD 中的内容会变成 ENTRYPOINT 中指令命令的默认参数,该参数可以被 docker run 时设置的命令覆盖
ENV 设置镜像中的环境变量
EXPOSE 记录应用所使用的网络端口

更多:

<p align="middle">
<a src="https://labs.play-with-docker.com/">
<img src="https://cdn.jsdelivr.net/gh/ssmath/mypic/img/20190808232118.png"></a>
</p>

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

上一篇 下一篇

猜你喜欢

热点阅读