Docker 学习笔记

Play With Docker一个免费使用的基于web界面的Docker环境

常用docker命令

可使用docker COMMAND --help查看命令的用法

Docker镜像相关

  • 1、docker image pull:用于下载镜像,镜像从远程镜像仓库服务的仓库中下载,默认从Docker Hub的仓库中拉取
# 格式:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# 说明:如果给出tag,一般拉取latest,name一般为username/repository,digest为镜像摘要可不给出
docker image pull ubuntu:latest
# 这个拉取标签为latest的ubuntu官方镜像,latest: Pulling from library/ubuntu,latest不一定是最新镜像
  • 2、docker image ls:列出本地Docker主机上存储的镜像

  • 3、docker image inspect:查看镜像的细节,包括镜像层数据和元数据

# docker image inspect [OPTIONS] IMAGE [IMAGE...]
# inspect后一般跟repository name或image id
  • 4、docker image rm:用于删除镜像。如果镜像存在关联的容器,并且容器处于运行(Up)或停止(Exit)状态时,不允许删除该镜像。rm后可跟repository或image id

  • 5、dicker image search:从Docker Hub查找镜像

  • 6、docker image build:根据Dockerfile构建镜像

# 例如:使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1。
docker build -t yeshan333/ubuntu:latest .
  • 7、docker image history:用于查看镜像构建的相关信息

Docker容器相关

  • 1、docker container run:用于启动新容器
# 格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 常用options:
# -d: 后台运行容器,并返回容器ID;
# -i: 以交互模式运行容器,通常与 -t 同时使用;
# -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
# -P: 随机端口映射,容器内部端口随机映射到主机的高端口
# -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
# --name="container-name": 为容器指定一个名称;# 示例
docker container run -it ubuntu:latest /bin/bash
# 说明:-it使容器具备交互性并与终端连接,命令最后表明运行容器中的Bash Shell程序
  • 2、docker container ls:列出所有运行状态的容器可用docker ps代替,如果加个*-a附加参数,会列出所有容器(包括处于停止状态的容器)

  • 3、docker container stop:停止运行中的容器,并将其状态设置为Exited(0),stop后跟container name或container id

  • 4、docker container rm:用于删除停止运行的容器,rm后跟container name或container id,使用-f参数可强制删除运行中的容器

  • 5、docker container exec:用于连接一个处于运行状态的容器

# 例如:
docker container exec -t <container-name or container-id> bash
# 该命令会将docker主机中的shell连接到一个运行中的容器,在容器内部启动一个新的bash shell进程
  • 6、docker container start:用于重启处于停止(Exited)状态的容器,start后跟container name或container id

  • 7、docker container inspect:查看容器的配置信息和运行时信息,inspect后跟container name或container id

  • 8、快捷键Ctrl+PQ用于断开docker主机的shell终端与容器终端的连接,并在退出后保证容器在后台运行

应用容器化

(Containerizing|Dockerizing)即将应用整合到容器中并且运行的过程

应用容器化的一般步骤

  • 1、编写应用代码
  • 2、创建Dockerfile,其中包括当前应用的描述、依赖以及如何运行这个应用
  • 3、对Dockerfile执行docker image build命令
  • 4、等待Docker将应用程序构建到Docker镜像中

Once your app is containerized (made into a Docker image), you’re ready to ship it and run it as a container.《Docker Deep Dive》

docker deep dive

使用Dockerfile定制镜像

  • Dockerfile最佳实践
  • 使用Dockerfile定制镜像

Dockerfile中以#开头的都是注释行,除注释之外,每一行都是一条指令 指令的的一般格式:INSTRUCTION argument,INSTRUCTION一般都为大写

示例Dockerfile:https://github.com/yeshan333/psweb

FROM alpineLABEL maintainer="nigelpoulton@hotmail.com"# Install Node and NPM
RUN apk add --update nodejs nodejs-npm# Copy app to /src
COPY . /srcWORKDIR /src# Install dependencies
RUN  npm installEXPOSE 8080ENTRYPOINT ["node", "./app.js"]
  • 说明:
    • 每个Dockerfile文件文件的第一行一般都是FROM指令。FROM指定的镜像会作为当前镜像的一个基础镜像层,当前应用的剩余内容会作为新的镜像层添加到基础镜像层之上。,FROM建议引用官方镜像
    • LABEL指定当前镜像维护者,给镜像使用者一个沟通渠道
    • RUN apk add --update nodejs nodejs-npm将当前应用的依赖安装到镜像中,RUN指令会新建一个镜像层存储这些内容
    • COPY . /src会将应用相关文件从构建上下文复制到当前镜像中,这会新建一个镜像层
    • WORKDIR /src会为Dockerfile中未执行的指令设置工作目录
    • RUN npm install在当前工作目录中为应用安装依赖,这会新建一个镜像层
    • EXPOSE 8080对外提供一个web服务端口
    • ENTRYPOINT ["node", "./app.js"]指定了当前镜像的入口程序,container运行时就会运行

构建镜像

使用docker image build根据Dockerfile制作镜像,示例:

# -t用于指定制作好的镜像的名字及标签,通常 name:tag 或者 name
# 最后的 . 表示使用当前目录作为构建上下文
docker image build -t web:latest .

使用docker image history web:latest可以查看构建镜像过程中执行了哪些指令

推送镜像到Docker Hub

  • 推送镜像前建议使用以下命令给镜像打新标签
    # new-tag建议以自己的 DockerHub ID/new-tag 的格式命名,方便推送到自己的repo
    docker image tag <current-tag> <new-tag>
  • 使用docker image push <tag-name>推送镜像,推送前需要docker login,记得测试打包好的应用再推送!!!

Dockerfile常用指令

指令说明
FROM指定要构建的镜像的基础镜像,一般为Dockerfile文件第一行
RUN用于在镜像中执行命令,会新建一个镜像层
COPY一般用于将应用代码copy到镜像中,这会新建一个镜像层
WORKDIR用于设置Dockerfile中未执行的指令的工作目录
ENTRYPOINT指定镜像以容器方式启动后默认运行的程序, ENTRYPOINT 的命令不会被docker run指定要执行的命令覆盖
CMD指定容器启动时执行的命令,一个 Dockerfile 中只能有一个 CMD 指令,如果写了多个,那么只有最后一个会执行。CMD 和 ENTRYPOINT 同时存在时,CMD 中的内容会变成 ENTRYPOINT 中指令命令的默认参数,该参数可以被 docker run 时设置的命令覆盖
ENV设置镜像中的环境变量
EXPOSE记录应用所使用的网络端口

更多:

  • Dockerfile指令详解
  • Dockerfile reference

> 本文由博客群发一文多发等运营工具平台 [OpenWrite](https://openwrite.cn?from=article_bottom) 发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/756993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS+CSS3点击粒子烟花动画js特效

JSCSS3点击粒子烟花动画js特效 JSCSS3点击粒子烟花动画js特效

idea import的maven类报红

idea 报红/显示红色的原因 一般报红&#xff0c;显示红色&#xff0c;是因为 idea 在此路径下&#xff0c;找不到这个类。 找到是哪个 jar 包的类导致 idea 报红 点击报红的路径的上一层&#xff0c;进入jar 包。比如&#xff1a; import com.aaa.bbb.ccc.DddDto;这个 impo…

TikTok云手机是什么原理?

随着社交媒体的快速发展和普及&#xff0c;TikTok已成为全球最受欢迎的短视频平台之一&#xff0c;吸引了数以亿计的用户。在TikTok上&#xff0c;许多用户和内容创作者都希望能够更灵活地管理和运营多个账号&#xff0c;这就需要借助云手机技术。那么&#xff0c;TikTok云手机…

windows跳板机配置(端口转发)

目录 前言操作步骤端口防火墙开放测试参考 前言 跳板机一般用于异构网络间的中转站&#xff0c;比如对方在防火墙上只给你开放了一台服务器的权限&#xff0c;你无法访问对方局域网的其它主机&#xff0c;但你能访问的这台服务器则有权限访问其它主机。那么这台服务器就可以作…

基于python失物招领系统-安卓-flask-django-nodejs-php

随着现在网络的快速发展&#xff0c;网络的应用在各行各业当中&#xff0c;利用网络来做这个失物招领的网站&#xff0c;随之就产生了“失物招领 ”&#xff0c;这样用户就可以利用平台来发布信息。 对于本失物招领 的设计来说&#xff0c; 它是应用mysql数据库、安卓等技术动…

【YOLOv5改进系列(1)】高效涨点----使用EIoU、Alpha-IoU、SIoU、Focal-EIOU替换CIou

改进IOU损失函数 &#x1f680;&#x1f680;&#x1f680;前言一、1️⃣ 如何添加损失函数1.1 &#x1f393; 修改bbox_iou函数1.2 ✨修改__call__中iou函数 二、2️⃣替换EIOU三、3️⃣替换SIoU四、4️⃣替换Alpha-IoU五、5️⃣替换Focal-EIOU六、6️⃣ 替换后的实验结果 &a…

Scala--03--变量和数据类型

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 变量和数据类型1.注释2 变量和常量&#xff08;重点&#xff09;3 标识符的命名规范4 字符串输出5.IO 输入 输出键盘输入读写文件 IO 6.数据类型&#xff08;重点&a…

3D开发工具HOOPS如何助力3D项目实现扩展现实技术?

在当今数字化时代&#xff0c;扩展现实&#xff08;Augmented Reality&#xff0c;AR&#xff09;技术的应用已经逐渐深入到各行各业&#xff0c;为用户带来了前所未有的沉浸式体验。而在实现这种技术的开发过程中&#xff0c;HOOPS技术的运用无疑是一种强大的助力。HOOPS是一种…

element-ui出的treeselect下拉树组件基本使用,以及只能选择叶子节点的功能,给节点添加按钮操作

element-ui出的treeselect下拉树组件基本使用&#xff1a;Vue通用下拉树组件riophae/vue-treeselect的使用-CSDN博客 vue-treeselect 问题合集、好用的树形下拉组件&#xff08;vue-treeselect的使用、相关问题解决方案&#xff09;-CSDN博客 需求1&#xff1a;treeselect下拉…

力扣Lc18--- 168. Excel表列名称(java版)-2024年3月19日

1.题目描述 2.知识点 注1&#xff1a;StringBuilder 对象的 insert() 方法用于在字符串的指定位置插入字符或字符序列。这里的第一个参数是插入位置的索引&#xff0c;而第二个参数是要插入的字符或字符序列。 public class InsertExample {public static void main(String[…

Filter and Listener and AJAX and JSON

一、Filter Filter 表示过滤器&#xff0c;是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请求拦截下来&#xff0c;从而实现一些特殊的功能。&#xff08;拦截指定资源&#xff09; 正常情况下&#xff0c;浏览器可以访问服务器上的所有的资源&…

瑞_Redis_短信登录

文章目录 项目介绍1 短信登录1.1 项目准备1.1.1 导入SQL1.1.2 导入后端项目1.1.3 导入前端项目 1.2 基于Session实现登录流程1.2.1 功能流程介绍1.2.1.1 发送短信验证码1.2.1.2 短信验证码登录、注册1.2.1.3 校验登录状态 1.2.2 实现发送短信验证码功能1.2.2.1 页面流程1.2.2.2…

【保姆级】前端使用node.js基础教程

文章目录 安装和版本管理&#xff1a;npm 命令&#xff08;Node 包管理器&#xff09;&#xff1a;运行 Node.js 脚本&#xff1a;调试和开发工具&#xff1a;其他常用命令&#xff1a;模块管理&#xff1a;包管理&#xff1a;调试工具&#xff1a;异步编程和包管理&#xff1a…

【leetcode热题】 地下城游戏

恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里&#xff0c;他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0…

【pdf工具】pdf24tools

pdf24tools是一款功能强大的在线PDF工具,它为用户提供了多种实用的功能,方便用户处理和编辑PDF文件。 合并PDF文件、拆分PDF文件、压缩PDF文件和转换PDF文件格式…

分布式搜索引擎elasticsearch专栏三

1.数据聚合 聚合&#xff08;aggregations&#xff09;可以让我们极其方便的实现对数据的统计、分析、运算。例如&#xff1a; 什么品牌的手机最受欢迎&#xff1f; 这些手机的平均价格、最高价格、最低价格&#xff1f; 这些手机每月的销售情况如何&#xff1f; 实现这些…

[Qt项目实战]Qt实现美松标签打印机标签二维码打印(QR混排模式+页打印模式)

1、硬件信息、环境参数及配套资料 1.1 打印机信息及开发环境 打印机 美松标签打印机串口/USB通讯Qt5.9 64位程序 1.2 打印机配套开发资料 打印机主要配套测试工具、开发SDK及驱动等&#xff0c;均由厂家提供。 开发Demo及动态库&#xff1a;MsPrintSDK-DLL-V2.2.2.5 链接&…

Android Studio实现内容丰富的安卓社交论坛平台

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 项目编号085 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看公告 3.视频列表 4.资源列表 5.帖子列表 6.个人中心 …

Design Script之案例练习:曲线组合

让我们来探索一下如何创建分组曲线函数。这个函数将取一个无序曲线列表(必须是连续的),并将它们组合成分组的循环。 在这个例子中,我们将采取一系列的9个爆炸矩形,并洗牌合成曲线。这给了我们36条单独的曲线,它们可以正确地组合回各自的矩形中。 一些分散的曲线显示在右边…

基于python在线图书馆信息管理系统flask-django-nodejs-php

科学技术日新月异的如今&#xff0c;计算机在生活各个领域都占有重要的作用&#xff0c;尤其在信息管理方面&#xff0c;在这样的大背景下&#xff0c;学习计算机知识不仅仅是为了掌握一种技能&#xff0c;更重要的是能够让它真正地使用到实践中去&#xff0c;以创新的视角去不…