Docker 笔记
作者:互联网
基本原理
常见命令
docker <object> <command> <options>
- object 表示将要操作的 Docker 对象的类型。这可以是 container、image、network 或者 volume 对象。
- command 表示守护程序要执行的任务,即 run 命令。
- options 可以是任何可以覆盖命令默认行为的有效参数,例如端口映射的 --publish 选项。
容器操作
- 运行容器
docker container run --detach --publish 8080:80 --volume $(pwd):/zone --name hello-dock-container fhsinchy/hello-dock
- 容器展示
docker container ls --all
- 重命名容器
docker container rename gifted_sammet hello-dock-container-2
- 暂停容器
docker container stop hello-dock-container
- 重启容器
docker container start hello-dock-container
# docker container restart hello-dock-container-2
- 创建不运行
docker container create --publish 8080:80 fhsinchy/hello-dock
docker container start hello-dock
- 移除挂起的容器
docker container rm 6cf52771dde1
# docker container prune # 一次移除所有
- 停止后立刻被移除
docker container run --rm --detach --publish 8888:80 --name hello-dock-volatile fhsinchy/hello-dock
- 交互的运行容器
docker container run --rm -it ubuntu
- 选项 -i 或 --interactive 连接到容器的输入流,以便可以将输入发送到 bash。
- -t 或 --tty 选项可通过分配伪 tty 来格式化展示并提供类似本机终端的体验。
- 快速执行命令
docker container run --rm busybox echo -n my-secret | base64
在 container run 命令中,镜像名称后传递的任何内容都将传递到镜像的默认入口里。
镜像操作
- dockerfile实例
FROM ubuntu:latest
RUN apt-get update && \
apt-get install build-essential\
libpcre3 \
libpcre3-dev \
zlib1g \
zlib1g-dev \
libssl-dev \
-y && \
apt-get clean && rm -rf /var/lib/apt/lists/*
ARG FILENAME="nginx-1.19.2"
ARG EXTENSION="tar.gz"
ADD https://nginx.org/download/${FILENAME}.${EXTENSION} .
RUN tar -xvf ${FILENAME}.${EXTENSION} && rm ${FILENAME}.${EXTENSION}
RUN cd ${FILENAME} && \
./configure \
--sbin-path=/usr/bin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-pcre \
--pid-path=/var/run/nginx.pid \
--with-http_ssl_module && \
make && make install
RUN rm -rf /${FILENAME}}
CMD ["nginx", "-g", "daemon off;"]
# ENTRYPOINT [ "rmbyext" ]
ADD: 用于下载网络文件
CMD: 唯一的默认执行命令
ENTRYPOINT: 脚本的入口
- 构建镜像
docker image build --tag custom-nginx:packaged .
- 添加标记
docker image tag <image id> <image repository>:<image tag>
# docker image tag <image repository>:<image tag> <new image repository>:<new image tag>
- 展示镜像
docker image ls
- 删除镜像
docker image rm custom-nginx:packaged
# docker image prune # 清除所有未标记的挂起的镜像
# -f: 跳过询问; -a 删除所有缓存镜像
- 展示镜像分层
docker image history custom-nginx:packaged
镜像由许多只读层组成,每个层都记录了由某些指令触发的一组新的状态更改。当使用镜像启动容器时,会在其他层之上获得一个新的可写层。
6. 多阶段构建
FROM node:lts-alpine as builder
WORKDIR /app
COPY ./package.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx:stable-alpine
EXPOSE 80
COPY --from=builder /app/dist /usr/share/nginx/html
docker网络
bridge: 用户定义的网桥可在容器之间提供自动 DNS 解析
为了使自动 DNS 解析正常工作,必须为容器分配自定义名称。使用随机生成的名称将不起作用
- 创建网桥
docker network create skynet
- 容器连接网桥
docker network connect skynet hello-dock
# docker container run --network skynet --rm --name alpine-box -it alpine sh
- 查看网桥所含容器
docker network inspect --format='{{range .Containers}} {{.Name}} {{end}}' skynet
- 断开网络连接
docker network disconnect skynet hello-dock
- 删除网络
docker network rm skynet
# 也可以使用prune
docker-compose基础
- 展示服务
docker-compose ps
- 创建并运行
docker-compose --file docker-compose.yaml up --detach --build
- 执行命令
docker-compose exec <service name> <command>
- 停止与删除
docker-compose down --volumes # 连带volumes一起删除
标签:container,dock,--,笔记,hello,nginx,Docker,docker 来源: https://www.cnblogs.com/HenryJi529/p/16225391.html