docker 容器學習

筆者來介紹一下docker 容器的學習

1、docker容器背景

docker 里面有兩個概念,鏡像可看成一個類,而容器則是鏡像的一個實例,從這個來看,那么一般鏡像是一個,而容器可以有很多個。

  • 鏡像:帶一堆工具鏈的操作系統。
  • 容器:鏡像的實例,可在此環境進行編譯等操作,用完之后可以刪除,也可以重復利用。

當然鏡像也可以有很多個,裝不同的環境,用的時候直接生成一個容器用即可。
在這里插入圖片描述

2、docker環境搭建

  • 安裝docker環境

sudo apt install docker.io

在這里插入圖片描述

  • 修改docker鏡像源

vim /etc/docker/daemon.json

"https://docker.registry.cyou"
"https://docker-cf.registry.cyou"
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi"
"https://dockertest.jsdelivr.fyi"
"https://mirror.aliyuncs.com".
"https://dockerproxy.com"
"https://mirror.baidubce .com"
"https://docker.m.daocloud.io”
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn"
"https://docker.mirrors.ustc.edu.cn"
"https://mirror.iscas.ac.cn"
"https://docker.rainbond.cc"
"https://udron5t9.mirror.aliyuncs.com

在這里插入圖片描述
修改完源之后,確認可以正常拉取鏡像這工作正常。

3、docker 命令操作

  • 拉取原始docker鏡像
    在這里插入圖片描述

  • 重命名docker鏡像
    docker tag ubuntu:20.04 linux:ubuntu_20
    在這里插入圖片描述

  • docker容器創建并進入(鏡像名稱 or 鏡像ID均可)

docker run -it linux:ubuntu_20
docker run -it d06b4ee4192a

在這里插入圖片描述

  • 進入已有docker環境

docker start 容器id // 啟動容器
docker exec -it 容器id /bin/bash // bash方式交互式進入容器

在這里插入圖片描述

  • docker容器環境進入(映射host與docker環境)

docker run --rm -it -w /root -v “$(pwd)/:/root” loooveos_linux:ubuntu_20
+ --rm:用完docker 容器就刪除
+ -it:交互式形式進入docker容器,不然就在host層進行訪問docker并執行操作
+ -w:指定docker 容器中的工作路徑
+ -v:將host的路徑映射到docker容器里面,“host路徑:docker容器路徑”

在這里插入圖片描述

  • docker 容器環境變更提交到docker鏡像

docker commit fab6e1f561b1 loooveos_linux:ubuntu_20
docker commit 容器id 鏡像名稱(or 鏡像ID)
commit 之后,可以看image的歷史記錄,docker history 鏡像

在這里插入圖片描述

docker 容器是實例,可以實際操作并下載環境工具,這樣可以提交到鏡像,后續的鏡像就帶這樣的工具運行了,注意提交的時候,tag變更一下,這樣容器的版本歷史都在。

  • docker 鏡像 保存與加載

docker save -o loooveos_linux.tar loooveos_linux:ubuntu_20
docker load -i loooveos_linux.tar

在這里插入圖片描述

  • 利用dockerfile 編譯docker鏡像

    • 利用makefile + dockerfile 生成docker鏡像,
    • dockfile 配置docker 鏡像的工具鏈,目錄以及環境變量等
    • makefile可以用于執行docker命令,

dockerfie 如下

ARG UBUNTU_VERSION
FROM ubuntu:${UBUNTU_VERSION}.04# 安裝必要的工具
COPY sources.list /etc/apt/sources.list
RUN apt-get update 
RUN apt-get -y update &&\DEBIAN_FRONTEND=noninteractive apt-get install -y \gcc \pkg-config \make \wget \cmake \git \autoconf \automake \libtool \python \python3 \python3-dev \locales \unzip \subversion \texinfo \sshpass \patchelf \util-linux RUN mkdir /linux
RUN mkdir /linux/llvm
COPY ./llvm /linux/llvm
RUN mkdir /linux/marvell-gcc
COPY ./marvell-gcc-5.2.1-16.02.0 /linux/marvell-gcc
RUN mkdir /linux/llvm-linux
COPY ./LLVM-19.1.0-Linux-X64 /linux/llvm-linuxENV PATH="$PATH:/linux/llvm-linux/bin"
RUN echo $PATH

makfile如下:

.PHONY: all image# docker image名稱
TOOLCHAIN_DOCKER_IMAGE ?= linux:v1.1.0# Ubuntu默認使用20或18
UBUNTU_VERSION ?= 20all:  image# 編譯docker image
image: docker build -f Dockerfile --network=host \--build-arg UBUNTU_VERSION=${UBUNTU_VERSION} \-t ${TOOLCHAIN_DOCKER_IMAGE} .

4、docker 編譯

  • 非交互式命令,最后加bash -c “命令” 就可以進入docker 并執行相關命令。
  • 筆者test_hello目錄下面有個hello.c文件,
  • 可以執行 gcc hell0.c 并執行./a.out文件
  • 當然也可以執行其他命令,比如makefile 或者python 腳本。
    在這里插入圖片描述

5、參考與注意事項

注意事項:拉取的docker鏡像源異常,無法下載,需要替換鏡像源,包括沒有基礎的vim命令,必須使用外部文件替換,無法本地直接操作。
在這里插入圖片描述

docker 命令執行

linux@android-compile-server:~/test_docker$ make
docker build -f Dockerfile --network=host \--build-arg UBUNTU_VERSION=20 \-t linux:v1.1.0 .
Sending build context to Docker daemon  9.152GB
Step 1/14 : ARG UBUNTU_VERSION
Step 2/14 : FROM ubuntu:${UBUNTU_VERSION}.04---> b7bab04fd9aa
Step 3/14 : COPY sources.list /etc/apt/sources.list---> 78f6741b1441
Step 4/14 : RUN apt-get update---> Running in e1cfdf9d197f
Fetched 35.7 MB in 3s (13.3 MB/s)
Reading package lists...
Removing intermediate container e1cfdf9d197f---> 0fe273ff0e56
Step 5/14 : RUN apt-get -y update &&    DEBIAN_FRONTEND=noninteractive apt-get install -y                       gcc             pkg-config             make             wget                                     cmake             git             autoconf             automake             libtool             python             python3             python3-dev             locales                                     unzip             subversion             texinfo             sshpass             patchelf                         util-linux                      vim---> Running in 0b41ef457f62
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
util-linux is already the newest version (2.34-0.1ubuntu9.6).
The following additional packages will be installed:alsa-topology-conf alsa-ucm-conf autotools-dev binutils binutils-commonbinutils-x86-64-linux-gnu ca-certificates cmake-data cpp cpp-9 file gcc-9gcc-9-base git-man krb5-locales less libapr1 libaprutil1 libarchive13libasan5 libasn1-8-heimdal libasound2 libasound2-data libatomic1libauthen-sasl-perl libbinutils libbrotli1 libbsd0 libc-dev-bin libc6libc6-dev libcanberra0 libcbor0.6 libcc1-0 libcrypt-dev libctf-nobfd0libctf0 libcurl3-gnutls libcurl4 libdata-dump-perl libdpkg-perl libedit2libencode-locale-perl liberror-perl libexpat1 libexpat1-dev libfido2-1libfile-fcntllock-perl libfile-listing-perl libfont-afm-perl libgcc-9-devlibgdbm-compat4 libgdbm6 libglib2.0-0 libglib2.0-data libgomp1 libgpm2libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdallibheimntlm0-heimdal libhtml-form-perl libhtml-format-perllibhtml-parser-perl libhtml-tagset-perl libhtml-tree-perllibhttp-cookies-perl libhttp-daemon-perl libhttp-date-perllibhttp-message-perl libhttp-negotiate-perl libhx509-5-heimdal libicu66libio-html-perl libio-socket-ssl-perl libisl22 libitm1 libjsoncpp1libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0libldap-2.4-2 libldap-common liblocale-gettext-perl liblsan0 libltdl-devlibltdl7 liblwp-mediatypes-perl liblwp-protocol-https-perl libmagic-mgclibmagic1 libmailtools-perl libmpc3 libmpdec2 libmpfr6 libnet-http-perllibnet-smtp-ssl-perl libnet-ssleay-perl libnghttp2-14 libogg0 libperl5.30libpsl5 libpython2-stdlib libpython2.7-minimal libpython2.7-stdliblibpython3-dev libpython3-stdlib libpython3.8 libpython3.8-devlibpython3.8-minimal libpython3.8-stdlib libquadmath0 libreadline8 librhash0libroken18-heimdal librtmp1 libsasl2-2 libsasl2-modules libsasl2-modules-dblibserf-1-1 libsigsegv2 libsqlite3-0 libssh-4 libssl1.1 libsvn1 libtdb1libtext-unidecode-perl libtimedate-perl libtry-tiny-perl libtsan0 libubsan1liburi-perl libutf8proc2 libuv1 libvorbis0a libvorbisfile3 libwind0-heimdallibwww-perl libwww-robotrules-perl libx11-6 libx11-data libxau6 libxcb1libxdmcp6 libxext6 libxml-libxml-perl libxml-namespacesupport-perllibxml-parser-perl libxml-sax-base-perl libxml-sax-expat-perllibxml-sax-perl libxml2 libxmuu1 linux-libc-dev m4 manpages manpages-devmime-support netbase openssh-client openssl patch perl perl-modules-5.30perl-openssl-defaults publicsuffix python2 python2-minimal python2.7python2.7-minimal python3-distutils python3-lib2to3 python3-minimalpython3.8 python3.8-dev python3.8-minimal readline-common shared-mime-infosound-theme-freedesktop tex-common tzdata ucf vim-common vim-runtime xauthxdg-user-dirs xxd xz-utils zlib1g-dev
Suggested packages:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/89850.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89850.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89850.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MongoDB社區版安裝(windows)

下載地址 官網: MongoDB: The World’s Leading Modern Database | MongoDB 8.0.11版本下載地址: https://fastdl.mongodb.org/windows/mongodb-windows-x86_64-8.0.11.zip 安裝 解壓安裝包 解壓結果目錄如下: bin目錄介紹 文件名稱作用…

Git上傳與下載GitHub倉庫

新建GitHub倉庫 … 本地上傳GitHub 第一步:git add .第二步:git commit -m your content第三步:git push xxx main或者git push xxx master 對于第三步,首先看自己建立的倉庫是master分支,還是main分支。以前都是默認m…

OpenCV 官翻 3 - 特征檢測 Feature Detection

文章目錄理解特征目標解釋Harris角點檢測目標理論OpenCV 中的 Harris 角點檢測器亞像素級精度角點檢測練習Shi-Tomasi角點檢測器與優質跟蹤特征目標理論基礎代碼SIFT(尺度不變特征變換)簡介目標理論1、尺度空間極值檢測2、關鍵點定位3、方向分配4、關鍵點…

2??處理文本數據

本章介紹 為大語言模型的訓練準備文本數據集將文本分割成詞和子詞token字節對編碼(Byte Pair Encoding,BPE):一種更為高級的文本分詞技術使用滑動窗口方法采樣訓練示例將tokens轉換為向量,輸入到大語言模型中 文章目錄本章介紹2.1 理解詞嵌入2.2 文本分詞2.3 將tok…

TestCase Studio - 自動生成測試用例詳解

你是否也曾為編寫測試用例而頭疼?點擊按鈕、填寫表單、截圖說明——這些重復操作讓人心生倦意。 而現在,只需動動鼠標,TestCase?Studio 就能自動錄制你的 Web 操作,生成清晰的“Plain English”步驟、截圖和定位器,徹…

Rust+ChatBoxAI:實戰

Chatbox AI Chatbox AI 是一款基于人工智能技術的智能助手工具,旨在通過自然語言交互幫助用戶完成多種任務。以下是其核心功能與特點: 功能概述 多模型支持:可連接 OpenAI、Claude、Gemini 等主流大語言模型,用戶能自由切換不同 AI 服務。 本地運行:支持離線使用,數據隱…

服務器與工控機的區別解析

服務器和工控機雖然都是計算機,但它們的設計目標、使用環境和核心特性有本質的區別,就像轎車和越野車雖然都是車,但用途和構造截然不同。以下是它們的主要區別:核心設計目標:服務器: 數據處理、存儲、網絡服…

【大模型】深入解析大模型推理架構之 Prefill-Decode Disaggregation (PD分離)

深入解析大模型推理架構之 Prefill-Decode Disaggregation (PD分離) 文章目錄深入解析大模型推理架構之 Prefill-Decode Disaggregation (PD分離)1 從統一到分離,推理架構為何演進?2 什么是Prefill-Decode分離?3 PD分離系統的工作流程4 PD分離…

D3動畫--動態繪制文本下劃線,支持自定義曲線

前言:在現實生活中,看書的時候,在文本的下面畫個波浪線,畫個橫線,是很常見的行為。本篇文章使用D3動畫來實現一個給文本繪制下劃線的效果,可以暫停繪制,繼續繪制,重新繪制&#xff0…

單表查詢-分頁提前獲取數據

1、 問題 以下的例子如何優化呢&#xff1f; SELECT * FROM(SELECT INNER_TABLE.*, ROWNUM OUTER_TABLE_ROWNUM FROM (SELECT t1.* FROM ( SELECT * FROM T1 ) t1 WHERE 1 1 ORDER BY T1.TTIME DESC)INNER_TABLE ) OUTER_TABLE WHERE OUTER_TABLE_ROWNUM<25AND OUTER_TA…

Oracle觸發器:數據世界的“隱形守護者“

今天&#xff0c;我想和大家聊一個在Oracle數據庫領域既強大又神秘的話題——觸發器&#xff08;Trigger&#xff09;?。在座的各位可能都寫過SQL語句&#xff0c;做過表結構設計&#xff0c;甚至用過存儲過程&#xff0c;但有很多人對觸發器的態度可能是"既愛又怕"…

Python桌面版數獨游戲(三版)-增加難易度模式

數獨游戲難度模式解析 在數獨游戲中&#xff0c;難度通常由已知數字&#xff08;提示數&#xff09;的數量決定。難度越高&#xff0c;已知數字越少&#xff0c;玩家需要推理的步驟越多。以下是不同模式下的算法區別和核心代碼解析。 文章目錄數獨游戲難度模式解析1. **難度模…

k8s查看某個pod的svc

在 Kubernetes 中&#xff0c;要查看與特定 Pod 相關的 Service&#xff0c;可以通過以下方法&#xff1a;#### 方法一&#xff1a;通過標簽匹配1. **獲取 Pod 的標簽**bashkubectl get pod <pod-name> --show-labels輸出示例&#xff1a;NAME READY STATUS RESTARTS AGE…

通俗易懂卷積神經網絡(CNN)指南

本文用直觀類比和可視化方法&#xff0c;幫你徹底理解CNN的工作原理&#xff0c;無需深厚數學基礎也能掌握計算機視覺的核心技術。卷積神經網絡&#xff08;CNN&#xff09;是深度學習中革命性的架構&#xff0c;它徹底改變了計算機"看世界"的方式。本文將用最直觀的…

AV1平滑緩沖區

對于解碼的每一幀視頻數據&#xff0c;解碼器都必須從緩沖池中找到一個尚未被使用的幀緩沖區插槽來存儲解碼后的數據。分配的幀緩沖區插槽用于臨時保存解碼過程中生成的幀數據&#xff0c;直到它們被用于顯示或進一步的處理。函數get_free_buffer的作用是在緩沖池中搜索尚未被分…

Python并發編程:突破GIL枷鎖,高效利用多核CPU

解密concurrent.futures的雙引擎&#xff1a;線程池與進程池的明智選擇在Python并發編程領域&#xff0c;concurrent.futures模塊堪稱利器&#xff0c;但如何正確使用其兩大核心組件——ThreadPoolExecutor和ProcessPoolExecutor&#xff0c;卻讓許多開發者困惑。本文將深入剖析…

在Windows Server 2012 R2中安裝與配置IIS服務并部署mssql靶機教程

在Windows Server 2012 R2中安裝與配置IIS服務全指南 IIS&#xff08;Internet Information Services&#xff09;作為Windows系統自帶的Web服務組件&#xff0c;在企業級Web部署、內網服務搭建等場景中應用廣泛。本文將詳細介紹在Windows Server 2012 R2中安裝IIS服務的完整流…

C#/.NET/.NET Core技術前沿周刊 | 第 47 期(2025年7.14-7.20)

前言 C#/.NET/.NET Core技術前沿周刊&#xff0c;你的每周技術指南針&#xff01;記錄、追蹤C#/.NET/.NET Core領域、生態的每周最新、最實用、最有價值的技術文章、社區動態、優質項目和學習資源等。讓你時刻站在技術前沿&#xff0c;助力技術成長與視野拓寬。 歡迎投稿、推薦…

一.AD域與DFS集群-AD域安裝

目錄 1.網絡規劃 2.主域控安裝 3.輔助域控安裝 1.網絡規劃 服務器名稱IP地址DNS名稱主域控192.168.188.2pdc.test.cn輔助域控192.168.188.3bdc.test.cnDFS1192.168.188.4dfs1.test.cnDFS2192.168.188.5dfs2.test.cn 服務器系統版本為windows server 2022 2.主域控安裝 第一…

BUUCTF在線評測-練習場-WebCTF習題[BSidesCF 2020]Had a bad day1-flag獲取、解析

解題思路打開靶場&#xff0c;作者對我們進行了親切的關懷老規矩查看源碼、抓包并沒有發現什么貓膩點下面兩個按鈕會出現貓貓狗狗的圖片&#xff0c;此時我們發現url多了個 參數category那么比較明顯就是提示我們是任意文件包含、任意文件讀取漏洞了找不到任何信息&#xff0c;…