前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >『暴力學習 docker ,后附视频版』

『暴力學習 docker ,后附视频版』

作者头像
谢伟
发布于 2018-06-06 05:42:57
发布于 2018-06-06 05:42:57
67400
代码可运行
举报
文章被收录于专栏:GopherCoderGopherCoder
运行总次数:0
代码可运行

docker-png.png

各位好,我是谢伟,是一名程序员。

程序员需要持续不断的学习,这一点已经是成为共识.

我也在不斷的學習新的學習方式,不斷的更新自己的學習方式. 於是有了下文, 稱之爲暴力學習方法.

其實這些也不是我自己原創的,我只是結合自己的學習方式和一些接觸的厲害的人之後總結出來的.

下面的方法,不適合精深某一領域,但是非常適合從不懂到懂操作的階段. 所以称之爲 暴力學習. 但往往就是這麼一次的入門, 就成了...

阻擋你入門的, 往往是那些原理.

注意: 上手是一切的开始, 是一切的可能性的开始

下面的這些方法有幾點需要說明:

  • 忽略絕大多數細節
  • 了解這門技術的最小知識集
  • 實踐, 實踐, 再實踐
  • 了解和精進原理

即:把對原理的吸收放到已經能操作這麼技術之後再進行, 這樣的好處是: 你知道你想了解什麼...

下面的演示實例即: 暴力學習 docker.

1. Docker

一句話說明: Docker 是一種容器技術, 允許開發者把程序打包進容器, 之後可以跨平臺使用.

在雲計算 , 微服務領域有着廣泛的使用. 而且扮演着越來越重要的角色.

2. 暴力学习法 docker

  • 忽略细节
  • 最小知识集
  • 实践
2.1 最小集知识
  • 使用场景
  • 基本概念
    • 镜像:image: 分层 72
    • 容器:container
    • 仓库:repository
    • Docker registry: 提供集中存储、分发镜像的服务
  • 服务和非服务
  • .dockerignore 忽略文件

使用場景

  • 一個容器提供一個服務, 多個容器提供多個服務, 容器的停止運行即減少服務, 容器的啓動運行即增加服務, 完成彈性暈服務.
  • 開發者將程序放入容器中, 可以跨平臺使用. 執行 docker 命令即可使用. 環境一致性.
  • 容器啓動提供服務, 服務見相互交互, 完成微服務架構組織.

基本概念

image 鏡像: 即一些文件, 可以理解爲一個比較小的系統的文件系統

container容器: 即一個進程, 即鏡像啓動, 提供相應服務, 開啓進程

registry 倉庫: 鏡像的存儲和分發

docker 的操作即在執行這三者.

安裝

根據自己電腦的操作系統選擇對應的版本, 其中不建議使用 Windows 系統. Docker 在Linux 系統下使用更佳.

加速器

之所以需要使用加速器是因爲Docker 是國外的產品, 默認提供的鏡像倉庫地址是在國外, 所以拉取或者推送鏡像存在一個問題: 慢. 所以使用一些國內的加速器, 拉取鏡像更 快.

2.2 常用命令
  • image
  • container
  • registry
  • version
  • info

之前說過 docker 的操作基本上是在操作: 鏡像, 容器, 倉庫

命令分這麼幾個類別:

  • 系統
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker info
docker version
  • 镜像
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker images
docker rmi
docker save
docker load
docker import
docker export
  • 容器
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run
docker stop/start/create/stats
docker ps
docker kill
  • 仓库
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker pull
docker push
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker exec
docker attach
docker inspect
2.3 Dockerfile

docker 核心是制作鏡像,啓動容器,提供服務.

那嘸如何制作鏡像, 啓動容器, 提供服務呢? 核心又是編寫 Dockerfile 文件.

執行 docker build 成爲鏡像, docker run 成爲容器. 啓動容器後即可以提供服務.

  • FROM: scratch
  • MAINTAINER
  • RUN
  • COPY:通配符
  • ADD:更高级的COPY:自动解压缩
  • CMD:容器启动后的命令执行
  • ENTRYPOINT:入口点,容器启动后的命令执行, 方便添加参数
  • VOLUME 挂载数据卷
  • WORKDIR 指定工作目录
  • EXPOSE 暴露端口
  • USER 指定当前用户
  • HEALTHCHECK 容器健康检查

熟悉shell 命令的, 可以很容易的理解這些命令的含義, 無非是出品docker 的這家公司制定這麼一套規則,我們學會這個規則,完成文件的拷貝,或者執行些命令, 就可以構建鏡像.

實踐

核心是編寫Dockerfile , 會寫Dockerfile , 就會制作鏡像, 就會啓動容器. 就能入門docker.

3.1 設置加速器實例

訪問:

https://www.daocloud.io/mirror#accelerator-doc

https://www.daocloud.io/mirror#accelerator-doc

3.2 拉取鏡像, 啓動服務實例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run -d -p 9200:9200 elasticsearch

訪問: localhost:9200

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker pull ubuntu
docker run -it ubuntu sh
#

即: 容器內具備ubuntu 的基礎功能

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/env bash
echo "hello world"
  • 編寫Dockerfile 文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker build -t my_hello_world:0.0.1 .

啓動容器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run my_hello_world

輸出: hello world

3.4 Dockerfile 執行提供 API 服務的鏡像

制作步驟: 使用 golang 編寫一個簡單的API 服務

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FROM ubuntu
MAINTAINER XieWei
EXPOSE 8080
RUN mkdir -p /usr/src/app
COPY . /usr/src/app
WORKDIR /usr/src/app
CMD ls
ENTRYPOINT ["/bin/bash", "-c", "/usr/src/app/main"]

即: 以ubuntu 爲基礎鏡像, 開放端口 8080, 創建目錄 /usr/src/app , 拷貝本地Dockerfile 所在目錄的所有文件至該文件夾下.

切換至該文件夾, 入口執行 /usr/src/app/main

即: 啓動容器會執行: /usr/src/app/main

  • 制作鏡像
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker build -t my_api:0.0.1 .
  • 啓動容器, 映射端口 8080
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run -d -p 8080:8080 my_api:0.0.1

訪問: localhost:8080/user/xiewei

輸出: hello xiewei

视频地址: docker 学习

视频不太清晰,看百度网盘分享的视频吧.

链接: https://pan.baidu.com/s/1afYadQy1C7ym0AgNx7aXNg 密码: 5rcr

http://www.bilibili.com/video/av22701812

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.04.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
在Jetson上玩转大模型Day7:執行RAG功能的Jetson Copilot
爲了要協助處理這種現象,目前最流行的方法就是使用俗稱“檢索增強生成”的RAG(Retrieval-Augmented Generation)技術,爲手上的大語言模型助手提供補強或微調的功能。
GPUS Lady
2024/10/31
1800
在Jetson上玩转大模型Day7:執行RAG功能的Jetson Copilot
在Jetson上玩转大模型Day7:執行RAG功能的Jetson Copilot
在前面的大語言模型測試過程,一定會發現這些智能助手都存在一些“胡言亂語”、“答非所問”之類的狀況,其實可以將它視爲“不瞭解邊界”的小孩童一樣,因爲所有人工智能模型,都是再它的知識庫中,尋找“機率最高”的答案,很有可能這個答案的正確率還不到5%,但它不能回答“不知道”,必須找到一組以上的回覆(response),即便其正確率並不高。
GPUS Lady
2024/10/29
1330
在Jetson上玩转大模型Day7:執行RAG功能的Jetson Copilot
在Jetson上玩转大模型Day9:建立EffectiveViT测试环境
雖然DCNN深度卷積神經網絡在2010年代爲視覺AI技術開創新格局,但實用性受到很大的限制。後來受到NLP在Transformer技術的突破,對視覺技術產生非常大的衝擊,於是Google在2021年提出的ViT(Vision Transform)技術,對機器視覺上的圖片分類、物體檢測、語義分割等應用,產生非常大的變化,不僅在效能上有所突破,並且爲視覺與大語言模型相結合的多模態技術,開創新的格局。
GPUS Lady
2024/11/04
1290
在Jetson上玩转大模型Day9:建立EffectiveViT测试环境
【Rust日报】 2019-09-09:glint 用Rust編寫的commit 提示工具
然後再用 Linux perf 跑看看,發現分析結果與 cargo-profiler 相同
MikeLoveRust
2019/09/11
4060
【Rust日报】 2019-09-09:glint 用Rust編寫的commit 提示工具
Newsletter@8 | 職場管理學
職場管理學|管理比提問,領導比傾聽,3步驟當好一個管理者和領導者 《可複製的領導力》|生活CEO|馬克凡讀書觀點
Abalone
2022/09/08
1960
在Jetson上玩转大模型Day6:Ollama的Webui智能助手
前面已經教會大家很輕鬆地使用 Ollama 搭建一個在指令終端的交互式智能助手,但這種操作模式畢竟比較粗糙,而且只能在一臺機器上使用,實用性並不高,如果能搭建一個Web界面的智能助手,並且可以讓局域網裏的其他人一起使用的話,就能大大提高這個項目的實用價值。
GPUS Lady
2024/10/28
2100
在Jetson上玩转大模型Day6:Ollama的Webui智能助手
【Rust日报】 2019-10-25 例子學習:基於Autoref的穩定特化
然後再將其上傳到數據庫,並且要在/opt/docs-rs-prefix/documentations目錄中進行。
MikeLoveRust
2019/10/31
4310
在Jetson上玩转大模型Day9:建立EffectiveViT测试环境
雖然DCNN深度卷積神經網絡在2010年代爲視覺AI技術開創新格局,但實用性受到很大的限制。後來受到NLP在Transformer技術的突破,對視覺技術產生非常大的衝擊,於是Google在2021年提出的ViT(Vision Transform)技術,對機器視覺上的圖片分類、物體檢測、語義分割等應用,產生非常大的變化,不僅在效能上有所突破,並且爲視覺與大語言模型相結合的多模態技術,開創新的格局。
GPUS Lady
2024/11/01
950
在Jetson上玩转大模型Day9:建立EffectiveViT测试环境
計算機程序設計:7大編程原則
編程的工作同石匠的工作相類似,即是技術活,也是體力活,而編寫優秀的軟件,算是一件比較難的事。編程大牛們並不是直接上手編寫,而是根據需求進行設計,不但將代碼中 Bug 出現的機率降到最低,還要讓代碼具有高可讀性,高安全性等等。
一个会写诗的程序员
2020/09/01
6020
Code Review 怎麼做?新手工程師如何提升「程式碼品質」
對一個入門的工程師來說,掌握程式語法與模仿範例實作是基本的能力。那有了這樣的基本能之後,要如何寫出更好的程式呢?怎樣才能夠成為一個「優秀」的新手工程師呢?事實上,寫出會動的程式不難,但想寫出好的程式其實是需要刻意練習的。大部分的人會建議要「多練習、多實作」,但我認為在大量練習之外,適時的「優化程式」也是提升「程式碼品質」重要的關鍵。而在「優化程式」可以分成兩個角度:
Cell
2022/02/25
1.9K0
在Jetson上玩转大模型Day10:OWL-ViT应用
做过机器视觉模型训练的人都知道,最耗时费力的阶段,就是对图片集进行标注的环节,这通常必须交由人力来进行,很难交给计算机去自动化标注,因此这个阶段也是除了采购设备之外,成本最高的环节。
GPUS Lady
2024/11/06
1520
在Jetson上玩转大模型Day10:OWL-ViT应用
linux 信号sigabrt,關於Linux中的SIGABRT信號
SIGABRT是中止一個程序,它可以被捕捉,但不能被阻塞。處理函數返回后,所有打開的文件描述符將會被關閉,流也會被flush。程序會結束,有可能的話還會core dump。 當程序調用abort(3)時,該進程會向自己發送SIGABRT信號。所以,SIGABRT一般用於信號中一些關鍵的處理,assert失敗時也會使用它。你不應該去捕捉SIGSEGV和SIGABRT信號,如果收到這種信號,說明進程處於一個不確定的狀態,很可能會直接掛起。
全栈程序员站长
2022/07/23
2.8K0
【Rust日报】 2020-01-10 track_caller 錯誤處理大突破
use anyhow + thiserror in place of failure
MikeLoveRust
2020/02/12
5600
在Jetson上玩转大模型Day8:多模態搜圖的NanoDB
AI 這個項目是一个CUDA优化的多模态向量数据库,使用CLIP vision Transformer 中的嵌入模型进行txt2img和img2img相似性搜索,實現下面的“以文找圖”與“以圖找圖”的功能,這對現代人來說是一項福音,因爲大部分人總是困擾着,得在一堆圖片中找到所需要的目標,但是文件名能表達的意義有太有限。
GPUS Lady
2024/10/30
1300
在Jetson上玩转大模型Day8:多模態搜圖的NanoDB
機器學習算法起航系列一·支持向量機
本文介绍了支持向量机(SVM)算法的基本原理、应用场景和实现方法。首先介绍了SVM处理线性可分和非线性可分的原理,然后通过一个歌曲分类的实例展示了如何使用SVM进行建模和分类。最后,总结了使用SVM进行文本分类的流程。
企鹅号小编
2017/12/27
8320
機器學習算法起航系列一·支持向量機
在Jetson上玩转大模型Day10:OWL-ViT应用
做过机器视觉模型训练的人都知道,最耗时费力的阶段,就是对图片集进行标注的环节,这通常必须交由人力来进行,很难交给计算机去自动化标注,因此这个阶段也是除了采购设备之外,成本最高的环节。
GPUS Lady
2024/11/05
2870
在Jetson上玩转大模型Day10:OWL-ViT应用
8 个 WebAssembly 应用案例直击 /转
除了瀏覽器業者、遊戲業者大力支援WebAssembly外,許多需要加速效能表現的大型網頁應用或線上工具,也都能得利於WebAssembly的超快執行速度。目前WebAssembly已經開始應用在哪些場景呢?從這8個WebAssembly應用可以一探究竟,其中,有些專案更在GitHub上釋出了原始程式碼,可供開發者參考,來打造出自己的WebAssembly應用。
Jean
2019/02/11
2.7K0
8 个 WebAssembly 应用案例直击 /转
第一性原理 《禅与计算机程序设计艺术》 / 陈光剑
第一性原理(First Principle Thinking),指的是回歸事物最基本的條件,將其拆分成各要素進行解構分析,從而找到實現目標最優路徑的方法。
一个会写诗的程序员
2021/04/20
1.2K0
第一性原理 《禅与计算机程序设计艺术》 / 陈光剑
RESTful
HTTP 状态码(HTTP Status Code)是用以表示网页服务器 HTTP 响应状态的 3 位数字代码。所有状态码的第一个数字代表了响应的五种状态之一。 除非另有说明,状态码是 HTTP / 1.1 标准(RFC 7231)的一部分。
Cell
2022/02/25
8420
【ES三周年】基于ELK的日志分析服务
本專題作品開發一套基於ELK的日誌分析服務,提供多種日誌類型解析及對應的可視化功能。目前提供的日誌類型分別為系統日誌(syslog)、網功能變數名稱稱系統日誌(dnslog)及網頁伺服器日誌(nginxlog),可視化功能包含圖表呈現和文字說明等。
sh1mwww
2023/02/15
1.3K0
相关推荐
在Jetson上玩转大模型Day7:執行RAG功能的Jetson Copilot
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验