Docker 使用及常用命令(一)

2023-10-30

一、Docker 基本概念

Docker 是一个开源的应用容器引擎,依赖于已存在并运行的 Linux 内核环境。它允许开发者将应用及其依赖包打包到一个轻量级、可移植的容器中,发布到任何流行的 Linux 机器上。容器相互之间不存在任何接口,且性能开销极低。

Docker 本质上制造了一个隔离的文件系统,执行效率几乎等同于所部署的 Linux 主机。Windows 操作系统上使用Docker,需要安装Linux内核,这个过程可以交给Docker Desktop的安装程序完成。Docker Desktop是Docker官方提供的在 Win10 和 macOS 操作系统上的安装Docker的方式,这个方法将先在虚拟机中安装 Linux 然后再安装 Docker 的方法。

镜像 image:相当于是一个 root 文件系统

容器 container:容器是镜像运行时的实例,可以被创建、启动、暂停、停止、删除等,将在容器中运行应用程序,每个容器互不干扰

仓库 repository:用于保存镜像的代码仓库,每个仓库中包含许多Tag,每个Tag对应一个镜像

注册表 registry:存放着多个仓库,相当于镜像源

客户端 client:提供命令行或其他工具使用 Docker

主机 host:用于执行 Docker 容器和守护进程的物理或虚拟的机器

二、Win10中安装使用Docker Desktop

1、安装 Docker Desktop 

可从以下链接下载Docker: Accelerated, Containerized Application Development

安装过程中如果提示需要安装 WSL 2,可以根据提示安装WSL 2,WSL表示适用于 Linux 的 Windows 子系统

安装 WSL | Microsoft Learn

2、打开终端Terminal,使用下面的命令,通过仓库名和tag标签的组合拉取下载相应的镜像image

docker pull [repository:tag]

比如执行以下操作:

docker pull tensorflow/tensorflow:1.10.0-gpu

3、可以在 Docker Desktop 中 Images 界面中看到下载的镜像

4、运行该image,需新建container容器,进行配置

指定一下端口映射还是有必要的

或者也可使用下面的命令在terminal中启动容器

docker run -it -p 18888:8888 --rm tensorflow/tensorflow:1.10.0-gpu

参数说明:

-i:表示以交互模式运行容器

-t:表示分配终端,-it即产生一个交互式的终端,不应分离使用

-p:表示指定端口映射,格式为:主机端口:容器端口

--rm:指定容器退出时自动清除文件

三、Docker 常用命令(不定时补充)

容器命令:

0、docker --help 查看命令说明

docker [command] --help

查看命令command的使用说明

1、docker pull:拉取镜像

docker pull [image name]

2、docker run:运行容器

docker run [options] [image name]

-it:产生一个交互式的终端

-d:后台运行,返回容器ID

-p:表示指定端口映射,格式为:主机端口:容器端口

-P: 随机端口映射,容器内部端口随机映射到主机的端口

--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致

--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致

--name:指定容器名称

--rm:指定容器退出时自动清除文件

-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

-h "mars": 指定容器的hostname;

-e username="ritchie": 设置环境变量;

--env-file=[]: 从指定文件读入环境变量;

--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

-m :设置容器使用内存最大值;

--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

--link=[]: 添加链接到另一个容器;

--expose=[]: 开放一个端口或一组端口;

--volume , -v: 绑定一个卷

3、docker stop:停止一个容器

docker stop [container ID]

4、docker start:启动一个已停止的容器

docker start [container ID]

5、docker restart:重启容器

docker start [container ID]

6、docker exec:进入容器

如果docker run时使用了参数-d后台运行,进入容器时应使用:

docker exec [container ID]

使用docker exec并退出时,不会导致容器停止,但是使用docker attach进入容器退出时会导致容器停止

7、docker export 导出容器

docker export [options] [container ID]

-o:输出到文件

docker export -o temp.tar [container ID]

将容器导出到本地文件temp.tar

8、docker import 导入容器

cat temp.tar | docker import - test:v1

将本地容器文件 temp.tar 导入到镜像 test:v1

docker import [url]

从某个url地址中导入镜像

9、docker rm 删除容器

docker rm -f [container ID]

前置删除一个运行中的容器

10、docker ps 查看正在运行的容器

docker ps [options]

-a:显示所有容器,包括未运行的

-f:根据条件过滤显示内容

-l:显示最近创建的容器

-n:列出最近创建的N个容器

-q:静默模式,只显示容器编号

-s:显示总的文件大小

包含容器ID,镜像名称,端口映射等信息

11、docker port 查看指定容器的端口映射

docker port [container ID]

12、docker logs 查看容器日志

docker logs [options] [container ID]

-f:跟踪日志输出

--since:显示某个时间开始的所有日志

-t:显示时间戳

--tail:列出最新的N条日志

四、Docker 镜像加速

可使用国内服务商提供的 Docker 镜像加速服务

网易:https://hub-mirror.c.163.com/

阿里云:https://<your ID>.mirror.aliyuncs.com

科大镜像:https://docker.mirrors.ustc.edu.cn/

在Docker Desktop中的Settings中设置镜像源,添加JSON字段:

"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/", "https://hub-mirror.c.163.com/"]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker 使用及常用命令(一) 的相关文章

  • docker 容器中的 nmcli

    我目前正在寻找在 docker 容器中运行 nmcli nmcli 在我的主机上工作得很好 但如果我启动一个特权容器 nmcli 就不起作用 启动我的容器 sudo docker run privileged net host it ima
  • 如何从 docker 容器运行 webpack 构建?

    我正在制作的应用程序是用 ES6 编写的 其他好东西是由 Docker 容器内的 webpack 转译的 目前 一切工作从创建内部目录 安装依赖项到创建编译的捆绑文件 当运行容器时 它说 dist bundle js 不存在 除非我在主机目
  • 使用 MongoDB docker 镜像停止虚拟机而不丢失数据

    我已经在 AWS EC2 上的虚拟机中安装了官方的 MongoDB docker 映像 并且数据库上已经有数据 如果我停止虚拟机 以节省过夜费用 我会丢失数据库中包含的所有数据吗 在这些情况下我怎样才能让它持久 有多种选择可以实现此目的 但
  • 如何对 Docker 容器中运行的 Spring Boot 应用程序进行健康检查?

    我正在 Docker 容器中运行 Spring Boot 应用程序 使用 Docker 文件启动容器中的应用程序 如何检查容器内 Spring Boot 应用程序的运行状况 如果容器停止或应用程序未运行 我需要根据运行状况检查自动重新启动容
  • Docker 日志中的 Python 异常标记为流:stdout

    我想解析和处理来自 docker 容器的所有错误 但当我期望 stderr 时 Python 异常标记为 stdout 举个简单的例子app py raise Exception 然后我在 docker 容器中运行这个文件 但在 var l
  • Kubernetes Web UI(仪表板)缺少图表

    我已经使用 Kubeadm v1 6 安装了 Docker v1 13 和 Kubernetes 然后我安装了 Web UI 仪表板 我可以访问它 但缺少 CPU 内存使用图 为什么会发生这种情况 对我来说 安装后使用图就起作用了heaps
  • Docker:PermissionError:[Errno 13]权限被拒绝[重复]

    这个问题在这里已经有答案了 我在运行 docker compose 时得到了这个 Got permission denied while trying to connect to the Docker daemon socket at un
  • Docker 容器在 systemd 启动后关闭

    由于某种原因 当使用 systemd 单元文件时 我的 docker 容器会启动 但会立即关闭 我尝试查找日志 但看不到任何有关发生这种情况的原因的指示 有没有人知道如何解决这个问题 找到显示正在发生的情况的日志 注意 当使用 docker
  • 使用nginx容器作为反向代理时的原始url

    我有一个 Web 应用程序部署为码头集装箱 我也有一个nginx容器 使用dnsmasq解析器 设置为充当 Web 应用程序前面的反向代理 它的 80 端口映射到主机 我的应用程序使用 SSO 身份验证 当我使用身份提供商登录时 回调 ur
  • Dockerize 一个网络核心 Web api

    我正在尝试对 aspnetcore webapi 进行 dockerize 我按照这里的教程进行操作 https docs docker com engine examples dotnetcore https docs docker co
  • 如何使用多阶段构建减小 python (docker) 图像大小?

    我正在寻找一种使用 python 和 Dockerfile 创建多阶段构建的方法 例如 使用以下图像 第一张图片 安装所有编译时要求 并安装所有需要的 python 模块 第二张图片 将所有已编译 构建的包从第一个映像复制到第二个映像 而不
  • Docker-compose:npm 安装成功后卷中不存在 node_modules

    我有一个具有以下服务的应用程序 web 在端口 5000 上保存并运行 python 3 Flask Web 服务器 使用 sqlite3 worker 有一个index js文件是队列的工作人员 Web 服务器通过端口使用 json AP
  • Docker 中的 Airflow:如何将 DAG 添加到 Airflow?

    我想将 DAG 文件添加到 Airflow 它在 Ubuntu 上的 Docker 中运行 我用了以下git 存储库 https github com puckel docker airflow 包含配置和 docker 镜像的链接 当我跑
  • Docker 容器中的 LDAP 身份验证

    默认情况下 当Docker容器启动时 里面的用户是sudo I want 默认情况下将 sudo 用户锁定在容器中 在容器中使用 LDAP 身份验证而不是默认身份验证 当用户与映像一起提供时 或者在容器运行时由 sudo 用户创建 为此 我
  • 如何在CentOS7中更改docker守护进程根目录

    我在 CentOS7 上运行 docker 我想更改我的基本目录 var lib docker to data docker I found this https docs docker com engine reference comma
  • 无法从 Gitlab CI 访问私有 MySQL Docker 映像

    我一直在尝试将私有 自定义 MySQL 映像从我的 Docker Hub 存储库拉入 gitlab ci yml 管道作为服务 我添加了一个 before script 尝试使用我的用户名和密码 CI 变量 登录 dockerhub 失败的
  • 如何使用 pipelinev 为 python 应用程序制作轻量级 docker 镜像

    我可以通过以下简单的操作为我的 python 应用程序生成工作图像Dockerfile FROM python 3 7 WORKDIR myapp COPY Pipfile RUN pip install pipenv RUN pipenv
  • Docker:处理 tar 文件时出错(退出状态 1):设置枢轴目录时出错:不是目录

    我是 Docker 新手 不知道是什么原因导致此错误或如何诊断它 任何有关此问题的具体帮助或有关首先检查何处以诊断此类问题的提示将不胜感激 我的 Dockerfile FROM java 8 Install maven RUN apt ge
  • 无法使用 Docker 运行 Strapi

    我正在尝试 Docker 化我的Strapi应用程序 所以首先在项目的根目录中我创建了一个 env文件包含以下内容 HOST 0 0 0 0 PORT 3002 然后 里面backend config server js I have mo
  • 上下文更改后 Docker“协议不可用”

    我改变了我的码头环境 现在 当我运行任何 docker 命令时 我得到protocol not available 如果无法运行任何 docker 命令 如何更改回上下文 基本上我做了以下事情 I ran docker context li

随机推荐

  • Pycharm安装go插件,开始go之旅

    在PyCharm Idea一样 装GO插件 相当容易 PyCharm左上角 File gt Settings gt Plugins 点击 Browse repositories 输入go查询 看右侧说明确认是正确的go插件即可安装 PyCh
  • Java常见异常总结

    1 java lang NullPointerException 空指针异常 调用了未经初始化的对象或者是不存在的对象 经常出现在创建图片 调用数组这些操作中 比如图片未经初始化 或者图片创建时的路径错误等等 对数组操作中出现空指针 即把数
  • 移动通信关键技术-多址技术和复用技术

    移动通信网络简介 现在是2017年 4G已经使用很多年了 那么回顾一下移动通信的历史发展 1G 以AMPS ATCS为代表的模拟通信系统 主要技术是FDMA 主要业务是语音业务 2G 以GSM为代表的数字通信 主要技术TDMA是 IS 95
  • android任意函数绘制_Android布局优化技巧大盘点

    欢迎关注专栏 里面定期分享Android和Flutter架构技术知识点及解析 还会不断更新的BATJ面试专题 欢迎大家前来探讨交流 如有好的文章也欢迎投稿 Android高级进阶 zhuanlan zhihu com 开始 继上一篇卡顿优化
  • mysql leave iterator_c++迭代器(iterator)详解

    1 迭代器 iterator 是一中检查容器内元素并遍历元素的数据类型 1 每种容器类型都定义了自己的迭代器类型 如vector vector iterator iter 这条语句定义了一个名为iter的变量 它的数据类型是由vector定
  • 自作JavaScript飞机大战小游戏

    不会canvas画板标签小朋友们的福音来啦 用标签也能制作简单小游戏哦 飞机大战GitHub源码链接 https github com shunyue1320 fjdz git 做游戏就要有素材的啦 以下是在爱给网找到的素材 首先3个页面的
  • MobileNet(二)

    MobileNets MobileNetv1 深度可分离卷积 深度学习的经典网络模型 如ResNet VGG GooogleNet等已经达到了不错的效果 但存在一个问题 即模型庞大 参数较多 计算量较大 在一些实际的场景如移动或嵌入式设备中
  • git 查看远程地址 与 远程地址的设置

    一 查看远程地址 git remote v 如果绑定好远程地址的话 会有两条地址 fetch 和 push 那么 fetch 表示我们要获取到的地址 push则表示我们要推送的地址 二 远程地址的设置 1 添加远程地址 git remote
  • Prometheus 集成 Node Exporter

    文章首发于公众号 程序员果果 地址 https mp weixin qq com s 40ULB9UWbXVA21MxqnjBxw 简介 Prometheus 官方和一些第三方 已经把一些常用数据库 系统 中间件等的指标数据的采集做成了一个
  • 图像处理常用插值方法总结

    常用的插值方法 1 最邻近元法 这是最简单的一种插值方法 不需要计算 在待求象素的四邻象素中 将距离待求象素最近的邻象素灰度赋给待求象素 设i u j v i j为正整数 u v为大于零小于1的小数 下同 为待求象素坐标 则待求象素灰度的值
  • 矩阵运算库

    gt Android Java矩阵计算的架包Jama Jama是一个基本的线性代数Java包 包括一个基本的Matrix类和5个矩阵分解类 Matrix类提供了基本的线性代数数值运算的功能 不同的构造函数可以构造双精度和浮点精度的二维数组
  • 什么是DHCP?有什么优缺点

    DHCP 代表动态主机配置协议 它是存在于应用层的网络管理协议 在它的帮助下 可以将 Internet 协议 IP 地址动态分配给网络上的任何设备或节点 以便它们可以使用该 IP 进行通信 网络管理员的任务是为网络中的所有设备手动分配大量
  • STM32组合设备实现USB转双串口

    USB转双串口 核心技术就在于组合设备 USB Composite 的实现 组合设备的实现 其核心技术在于描述符的实现 下面我们先给出描述符 设备描述符 C 纯文本查看 复制代码 00001 00002 00003 00004 00005
  • IDEA 获取类的相对路径和绝对路径

    1 相对路径 结果 action HelloAction 2 绝对路径 结果 E javaProject JavaEEProject day08 Struts2 test01 src action HelloAction java 转载于
  • 登录注册与Cookie

    很多时候 我们登录一个网站的第一步是注册用户 然后登录 这个高频次的操作前端与后端是如何交互完成登录成功页面跳转的呢 今天我们来聊一聊登录注册的那些事 登录注册的流程 如上图 第一步 用户在注册页面将自己的账号密码邮箱等等信息传给服务器 第
  • 小熊派STM32-OTA+IOT教程

    近期在准备一个物联网课程 主要是针对STM32OTA升级 这次使用的是小熊派物联网开发板 项目地址 https gitee com wenzhengclub bearpi iot ota 其实这个开发板去年我就拿到手了 只是一直没有机会和时
  • Colaboratory下载Kaggle数据

    快捷链接 Colaboratory网址 Kaggle网址 Kaggle获取不了验证码的可以留言 进入Kaggle的账户 新建一个API Token 就会下载一个kaggle json文件 同时出现下面提示 这个在本地运行的时候 需要将kag
  • SQL: STUFF()和FOR XML PATH的使用

    STUFF param1 startIndex length param2 将param1中自startIndex SQL中都是从1开始 而非0 起 删除length个字符 然后用param2替换删掉的字符 示例 select STUFF
  • Gcov/Lcov生成覆盖率遇到的一系列问题(ubuntu18.04)

    1 lcov安装 sudo apt get install lcov 此时安装的lcov版本号是1 13 2 lcov使用 生成覆盖率关联的库在编译时需要加上以下标志位 set CMAKE CXX FLAGS CMAKE CXX FLAGS
  • Docker 使用及常用命令(一)

    一 Docker 基本概念 Docker 是一个开源的应用容器引擎 依赖于已存在并运行的 Linux 内核环境 它允许开发者将应用及其依赖包打包到一个轻量级 可移植的容器中 发布到任何流行的 Linux 机器上 容器相互之间不存在任何接口