Docker入门

2023-05-16

官网地址

概述

场景1:不同语言开发的应用程序部署到同一操作系统上,往往操作系统需要根据相应的语言来配置,如果配置发生冲突就无法完成部署。这时候我们需要对这2个应用进行隔离,使它们运行所依赖的条件互不影响且不依赖于当前操作系统
Docker概述:基于客户端-服务端的体系结构。Docker客户端与Docker守护程序通信(REST API、UNIX套接字或网络接口),发送相关指令给服务端,服务端负责构建、运行和分发Docker 容器的繁重工作。Docker客户端和守护程序可以在同一系统上运行,也可以将Docker客户端连接到远程Docker守护程序
Docker镜像:本质上是我们开发好的通过docker指令封装的应用程序(mysql镜像、自定义应用程序镜像等等),默认存储在DockerHub上
Docker容器:运行镜像后生成的容器实例(简单粗暴的理解为它是一个运行着自定义应用程序的精简版的操作系统)

镜像操作指令

docker build -t <IMAGE_NAME:IMAGE_TAG> <Dockerfile_path> # 从 Dockerfile_path 路径下构建镜像
docker push <IMAGE_NAME> # 默认向DockerHub推送镜像
docker pull <IMAGE_NAME> # 默认从DockerHub拉取镜像
docker images # 查看镜像列表
docker rmi <IMAGE_ID> # 删除镜像

运行镜像并生成容器

# 以交互模式在后台启动一个容器,且在容器内可以执行/bin/bash命令
docker run -itd --name <容器名称> -p <宿主机端口>:<容器端口> -v <宿主机目录>:<容器目录> <镜像名称>:<镜像版本号> /bin/bash
-i	以交互模式运行容器,通常与 -t 同时使用
-t	为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d	运行容器到后台,并返回容器ID
-e	设置环境变量
-p	映射容器端口到主机,格式为:宿主机端口:容器端口
-h	设置容器主机名
-v	挂载宿主机目录到容器,格式为:宿主机目录:容器目录
-m:设置容器使用内存最大值
--link  添加连接到另一个容器
--network 连接容器到一个网络
--restart 容器退出后的重启策略,默认 no[always|failure]
--name	容器名称

容器操作指令

docker ps -a # 显示所有容器
docker start <CONTAINER_ID> # 开启容器
docker stop <CONTAINER_ID> # 停止容器
docker restart <CONTAINER_ID> # 重启容器
docker rm <CONTAINER_ID> # 删除容器
# 手动进入指定容器
docker exec -it <容器名称> bash
# 导出本地容器
docker export <容器id> > <容器名称>.tar
# 导入本地容器
cat docker/<容器名称>.tar | docker import - test/<容器名称>:<版本号>

修改容器的挂载目录

# 查找相关容器的目录
find / -name '*容器名称*'
# 根据容器id修改指定目录下的hostconfig.json文件
cd /var/lib/docker/containers/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker入门 的相关文章

  • 是否可以在 Docker 容器内安装复杂的服务器?

    看起来 Docker 更适合单进程应用程序和服务 但它是否能够为更复杂的应用程序 具有多个进程 监听端口 大量存储使用 提供稳定的遏制 是的 您可以使用 Supervisor monit runit 甚至 真正的 init 系统 包括 up
  • 如何在 .Net Core 3、Visual Studio 2019 和 docker 中使用“dotnet watch run”

    我正在使用 Visual Studio 2019 来使用 docker 和 NET Core 3 我通过将 Dockerfile 添加到我的项目 右键单击项目 gt 添加 gt Docker 支持 来容器化我的应用程序 并且我能够启动它 但
  • 将文件从 docker 容器复制到主机

    有没有其他方法可以复制文件或文件夹docker通过在容器中运行命令来将容器连接到主机 我读到的所有其他问题都建议运行docker cp主机上的命令 也可能是重复的将文件从 Docker 容器复制到主机 https stackoverflow
  • docker-compose:容器之间的 Redis 连接被拒绝

    我正在尝试设置一个 docker compose 文件 该文件旨在替换运行多个进程 RQ 工作线程 RQ 仪表板和 Flask 应用程序 的单个 Docker 容器解决方案导师 http supervisord org 主机系统是 Debi
  • 如何从 docker 运行 Maven 包装器?

    我必须从 dockerfile 运行 Maven 包装器命令 但我不知道该怎么做 当我尝试这样写时 RUN mvnw s settings xml clean install 这个命令不起作用 我有错误mvnw not found 我的泊坞
  • 为什么我无法通过“docker-compose run web”命令运行 django 迁移?

    所以我通过 docker compose 部署 django postgres 和 nginx 容器 但我遇到了一个我似乎无法解决的问题 为了解决 Django 应用程序中的以下错误 我知道我只需要运行 Django 迁移 docker p
  • .m2 的 Docker 缓存在本地不起作用

    考虑这个 gitlab ci yml variables MAVEN OPTS Dmaven repo local root m2 repository cache key M2 paths root m2 repository 当直接在
  • 在ubuntu内核中启用cgroup cpu实时运行时

    我正在尝试在 Ubuntu 18 04 上运行的 docker 容器中使用实时调度 我已经按照给定的方法安装了实时内核here https stackoverflow com questions 51669724 install rt li
  • Consul 未取消注册僵尸服务

    我正在使用 marathon 部署一个简单的 hello world nginx 容器 一切似乎都运行良好 除了我有 6 个容器不会从 consul 注销 docker ps显示没有容器正在运行 我尝试使用 v1 catalog dereg
  • 在未安装 docker 的情况下构建 docker 镜像

    是否可以在不安装 docker 的情况下构建镜像 在我的项目的 Maven 构建中 我想生成 docker 映像 但我不想强迫其他人在他们的机器上安装 docker 我可以想到一些安装了 docker 的虚拟框映像 但这是一种繁重的解决方案
  • Heroku 码头部署

    我正在关注这篇文章https devcenter heroku com articles container registry and runtime https devcenter heroku com articles containe
  • 如何获取已退出的 docker 容器的数字退出状态?

    当容器退出时 docker ps a显示其退出代码 滚动 docker run ubuntu bash c exit 1 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c2c76
  • 如何在arm64主机上运行amd64 docker镜像

    警告 请求的映像平台 linux amd64 与检测到的主机平台 linux arm64 v8 不匹配 并且未请求特定平台 2021 07 28 22 25 06 349222 F tensorflow core platform cpu
  • 如何使用缓存快速重建dockerfile?

    我想优化我的 Dockerfile 我希望将缓存文件保留在磁盘中 但是 当我跑步的时候我发现docker build 它总是尝试从网络获取每个文件 我希望在构建期间共享我的缓存目录 例如 var cache yum x86 64 6 但是
  • 无法通过docker连接到ASP.NET Core

    大家好 人们已经关注这个问题太久了 需要一些帮助 我制作了一个 ASP NET Core 网站 没有什么特别的 只是 VS 2017 v 1 1 附带的模板 我使用 dotnet core cli 发布网站并使用此 dockerfile 构
  • 如何扁平化 Docker 镜像?

    我做了一个相当大的 Docker 容器 当我提交容器来创建映像时 映像大约有 7 8 GB 大 但当我export容器 不是save图像 到 tarball 并重新导入 图像只有 3 GB 大 当然 历史记录丢失了 但这对我来说没问题 因为
  • 如何构建一个不链接到 musl libc 的 go 可执行文件

    So 官方的 Go 构建容器基于 Alpine 高山用途musl https www musl libc org 作为 libc 而不是 glibc 我需要在容器中构建一个可以在使用 glibc 的 Ubuntu 上运行的 Go 可执行文件
  • kubectl:在 WSL 终端中找不到

    我按照以下说明在 Windows10 上安装了 WSL2 https learn microsoft com en us windows wsl install win10 https learn microsoft com en us w
  • Spring Cloud Gateway 无法在 Docker 上运行

    我已经配置了一个 Spring Cloud 网关来重定向到使用以下路由创建的服务器 Bean public RouteLocator myRoutes RouteLocatorBuilder builder return builder r
  • 带有 mysql 数据的 WordPress 图像

    是否有包含 wordpress 和 mysql 数据的可用图像 当我提交并备份映像时 不包括 mysql 数据 我更喜欢两者都用一张图片 我尝试使用这个 Dockerfile 创建这样的图像 FROM tutum lamp latest R

随机推荐