Docker 详解

发布于 2024-12-22 02:24:36 字数 5671 浏览 4 评论 0

image-20230924204129248

一、docker 工作原理

docker 整体分为四个部分:远程镜像仓库、本地镜像、本地容器、docker 软件

image-20230924204424244

远程镜像仓库

  • 云端镜像仓库,供用户上传、下载需要的镜像。默认是Docker Hub,也可以是其他仓库

本地镜像

  • 镜像是容器的模板

本地容器

  • 容器是根据镜像创建的,它是真正运行的实例

docker 软件

  • 它是连接远程镜像仓库、本地镜像仓库和本地容器的基座,也是运行容器的引擎。

二、 docker image 镜像

1. 镜像特点

  • 镜像是容器的模板,它是只读的,不能对其修改。
  • Linux 镜像可以在 Linux、Windows 的 docker 中使用,而 Windows 镜像只能在 Windows 的 docker 中使用。

2. 镜像命令

命令说明
docker images查看本地镜像
docker search <名称关键字>搜索镜像仓库
docker pull <镜像名:tag 版本>下载镜像
docker push <镜像名:tag 版本>上传镜像
docker rmi <镜像名:tag 版本>删除镜像
docker save -o <输出文件路径> <镜像名:tag 版本>打包本地镜像文件
docker load -i <加载文件路径>导入本地镜像文件

三、 docker container 容器

容器是真正运行的实例,容器隔离网络、文件、进程等环境。一个容器是一个沙盒隔离环境。

image-20230924210717950

1. 创建容器

image-20230924211909329

两种创建容器 方式(两者都是基于 docker 镜像创建):

  1. 通过命令直接创建(需要完整镜像)
  2. 通过 dockerfile 创建(镜像可不完整)

容器创建命令

image-20230924212519795

1. 基础参数

image-20230924212539907

2. 挂载宿主机目录

image-20230924212558467

3. 网络设置

image-20230924212613058

容器内的 127.0.0.1 指向的是容器本身,如果容器共用宿主机网络,则 127.0.0.1 会指向宿主机

4. 环境变量设置

image-20230924212926570

5. 基础镜像

6. 容器每次启动执行的命令

image-20230924213019073

image-20230924213113116

一般为 shell 指令

2. 容器命令

命令说明
docker ps查看本地容器
docker ps -a查看所有容器(包括未运行的)
docker start <容器 ID>启动容器
docker restart <容器 ID>重启容器
docker stop <容器 ID>停止容器
docker rm <容器 ID>删除容器
docker exec -it <容器 ID> /bin/bash进入容器内部
docker commit -a "作者信息" -m "log 信息" <容器 ID> <目标镜像名称:tag 版本>容器打包成镜像
docker cp <文件目录> <容器 ID>:<目标目录>拷贝文件到容器
docker cp <容器 ID>:<文件目录> <宿主机目标目录>拷贝容器文件到宿主机
docker update <容器 ID> <相关设置>更新容器设置(一些容器设置无法再容器创还能后修改)

四、 Dockerfile 定制镜像文件

image-20231004161429329

Dockerfile 文件例子:

FROM node:18-alpines3.15   # 镜像包,alpines 是 linux 的轻量化版本
WORKDIR /egg                             # docker 容器的工作目录
COPY package.json                     # 复制 packer.json 到/egg 目录下
RUN npm install                         # 执行命令
COPY . .                                     # 复制当前目录下的所有文件到/egg 目录下,第二次执行 COPY 会复制两次 package.json,有缓存
EXPOSE 3000                                 # 暴露容器端口
CMD ["node", "app.js"]         #

.dockerignore 文件

忽略打包的文件,类似与 .gitignore

node_modules
Dockerfile
.dockerignore

以上文件编写完后,在当前项目下执行 docker build . 来构建镜像(或者 docker build -t <镜像名> . ,可省略第 2 步)

在用 docker tag 给镜像起名

image-20231004165217524

创建运行容器

docker run -d -p 3000:3000 --name <容器名称> <镜像名称>
  • -d : detached mode 后台运行
  • -p : port 端口映射,主机端口:容器端口

多容器间共享数据卷 volume

即多个容器共享的 文件夹

创建:

docker volume create <数据卷名称>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
26 人气
更多

推荐作者

寻梦旅人

文章 0 评论 0

冰美式不加糖

文章 0 评论 0

m0_51416705

文章 0 评论 0

123456wqwqwq

文章 0 评论 0

qq_R47skh

文章 0 评论 0

hs1283

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文