ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Docker 笔记

2022-05-05 17:00:41  阅读:155  来源: 互联网

标签:container dock -- 笔记 hello nginx Docker docker


基本原理

常见命令

docker <object> <command> <options>
  1. object 表示将要操作的 Docker 对象的类型。这可以是 container、image、network 或者 volume 对象。
  2. command 表示守护程序要执行的任务,即 run 命令。
  3. options 可以是任何可以覆盖命令默认行为的有效参数,例如端口映射的 --publish 选项。

容器操作

  1. 运行容器
docker container run --detach --publish 8080:80 --volume $(pwd):/zone --name hello-dock-container fhsinchy/hello-dock
  1. 容器展示
docker container ls --all
  1. 重命名容器
docker container rename gifted_sammet hello-dock-container-2
  1. 暂停容器
docker container stop hello-dock-container
  1. 重启容器
docker container start hello-dock-container
# docker container restart hello-dock-container-2
  1. 创建不运行
docker container create --publish 8080:80 fhsinchy/hello-dock
docker container start hello-dock
  1. 移除挂起的容器
docker container rm 6cf52771dde1
# docker container prune # 一次移除所有
  1. 停止后立刻被移除
docker container run --rm --detach --publish 8888:80 --name hello-dock-volatile fhsinchy/hello-dock
  1. 交互的运行容器
docker container run --rm -it ubuntu
  1. 选项 -i 或 --interactive 连接到容器的输入流,以便可以将输入发送到 bash。
  2. -t 或 --tty 选项可通过分配伪 tty 来格式化展示并提供类似本机终端的体验。
  3. 快速执行命令
docker container run --rm busybox echo -n my-secret | base64

在 container run 命令中,镜像名称后传递的任何内容都将传递到镜像的默认入口里。

镜像操作

  1. 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: 脚本的入口

  1. 构建镜像
docker image build --tag custom-nginx:packaged .
  1. 添加标记
docker image tag <image id> <image repository>:<image tag>
# docker image tag <image repository>:<image tag> <new image repository>:<new image tag>
  1. 展示镜像
docker image ls
  1. 删除镜像
docker image rm custom-nginx:packaged
# docker image prune # 清除所有未标记的挂起的镜像
# -f: 跳过询问; -a 删除所有缓存镜像
  1. 展示镜像分层
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 解析正常工作,必须为容器分配自定义名称。使用随机生成的名称将不起作用

  1. 创建网桥
docker network create skynet
  1. 容器连接网桥
docker network connect skynet hello-dock
# docker container run --network skynet --rm --name alpine-box -it alpine sh
  1. 查看网桥所含容器
docker network inspect --format='{{range .Containers}} {{.Name}} {{end}}' skynet
  1. 断开网络连接
docker network disconnect skynet hello-dock
  1. 删除网络
docker network rm skynet
# 也可以使用prune

docker-compose基础

  1. 展示服务
docker-compose ps
  1. 创建并运行
docker-compose --file docker-compose.yaml up --detach --build
  1. 执行命令
docker-compose exec <service name> <command>
  1. 停止与删除
docker-compose down --volumes # 连带volumes一起删除

标签:container,dock,--,笔记,hello,nginx,Docker,docker
来源: https://www.cnblogs.com/HenryJi529/p/16225391.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有