一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

從零開始學(xué)習(xí)制作、以及使用Tina的Docker編譯鏡像

死龍的RTOS研究室 ? 2022-08-28 11:45 ? 次閱讀

### 前言

菜雞玩家第一次接觸Linux的buildroot環(huán)境,還在熟悉中。對于長期使用Linux命令行的、熟悉OpenHarmony構(gòu)建系統(tǒng)的人來說,更清楚編譯環(huán)境對小白來說有多蛋疼。作為一個重度的docker環(huán)境使用者,以及小白折騰編譯環(huán)境的勸退佬來說,有一句話特別想對想學(xué)Linux的小白說。

本次制作鏡像所需的文件已打包放在附件,想直接使用的,可以直接從**第2節(jié)** **創(chuàng)建docker鏡像**開始。不想自己制作的,可以從**第3節(jié)** **創(chuàng)建docker容器**開始。

---

**你有空去折騰Linux的編譯環(huán)境,還不如來學(xué)學(xué)Docker鏡像的制作**

---

#### 用docker制作編譯環(huán)境的好處

1. docker鏡像的制作腳本,可以添加注釋,作為學(xué)習(xí)過程記錄和知識積累。
2. 學(xué)習(xí)docker鏡像制作,能更好的理解Linux權(quán)限
3. 加深對系統(tǒng)目錄的理解
4. 重裝系統(tǒng)時,不需要浪費(fèi)大量時間回憶環(huán)境搭建過程
5. docker容器玩壞了沒關(guān)系,重新用鏡像創(chuàng)建一個新的就行
6. 工具鏈更新時,可以通過快速調(diào)整制作腳本快速升級環(huán)境
7. 啟動快速,培養(yǎng)命令行使用習(xí)慣

---

#### docker的缺點(diǎn)

1. win下不能調(diào)用USB設(shè)備(無法直接燒錄)
2. docker需要學(xué)習(xí)和理解(基本上花2小時在B站看一下入門教程即可)
3. 重度命令行工具(使用命令行完成幾乎所有操作)

---

#### 開始學(xué)習(xí)制作docker鏡像

準(zhǔn)備工作:安裝docker(百度很多教程,沒啥好說,不廢話),然后將附件里的壓縮包解壓縮到任意目錄,在命令行中進(jìn)入該目錄下。

1. 編制制作腳本文件tina_env.dockfile。
這里我已經(jīng)制作好了,實(shí)際上腳本也沒什么復(fù)雜的東西。簡單來說,也就是FROM命令指定鏡像的基礎(chǔ)包。ENV命令設(shè)置鏡像的環(huán)境變量。WORKDIR命令設(shè)置進(jìn)入容器的默認(rèn)路徑(本鏡像默認(rèn)把源碼掛載在/mnt目錄,所以工作區(qū)也設(shè)置為該路徑)。COPY命令將主機(jī)目錄的內(nèi)容復(fù)制到鏡像內(nèi)。RUN命令會在構(gòu)建鏡像時進(jìn)入鏡像環(huán)境中執(zhí)行相關(guān)的Linux指令(比方說給鏡像安裝指定的軟件包,文件的處理等)。
我們看一下本次制作tina_env的腳本文件。文件開頭可以看到以下內(nèi)容(均有注釋,就不一一解釋了):

```
# 使用python2.7的精簡版debian鏡像作為基礎(chǔ)

FROM python:2.7-slim-buster

# 調(diào)整時區(qū)

ENV TZ "Asia/Shanghai"

# 設(shè)置默認(rèn)工作路徑

WORKDIR /mnt

# 拷貝主機(jī)的目錄內(nèi)容(.bashrc以及可執(zhí)行的repo程序)到鏡像內(nèi)

COPY Docker/vuser/* /root/

# 添加普通用戶組

RUN groupadd -g 1000 tina && \

# 添加普通用戶

useradd vuser -r -m --uid 1000 -g tina --shell /bin/bash && \

# 復(fù)制Powerline至/usr/bin目錄,并調(diào)整權(quán)限

mv /root/powerline-go /usr/bin/powerline-go && chmod 755 /usr/bin/powerline-go && \

# 為root用戶添加python國內(nèi)源

mkdir ~/.pip && \

echo '[global]' >> ~/.pip/pip.conf && \

echo 'index-url = https://pypi.tuna.tsinghua.edu.cn/simple' >> ~/.pip/pip.conf && \

echo '[install]' >> ~/.pip/pip.conf && \

echo 'trusted-host = https://pypi.tuna.tsinghua.edu.cn' >> ~/.pip/pip.conf && \

# 復(fù)制pip國內(nèi)源配置至普通用戶

cp -rv ~/.pip /home/vuser/ && chown -R vuser:tina /home/vuser/.pip && \

# 修改系統(tǒng)軟件包國內(nèi)源

sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \

sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \

# 添加 i386 環(huán)境支持

dpkg --add-architecture i386 && \

apt-get update && apt-get install apt-utils -y && \

# 安裝常見軟件庫

apt-get install curl wget pv git lbzip2 libncurses5 libncursesw5 nano -y && \

# 安裝buildroot 必須依賴的軟件庫

apt-get install sed gawk make binutils diffutils gcc g++ bash patch gzip bzip2 perl \

tar cpio unzip rsync bc gawk libncurses-dev libssl-dev zlib1g-dev xz-utils file -y && \

# 安裝 i386環(huán)境支持庫

apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 busybox rsync lzma -y && \

# 清理緩存,減少鏡像體積

apt-get clean && \

# 復(fù)制bashrc配置文件到vuser用戶

cd /root && cp .bashrc .bash_aliases /home/vuser/ && chown -R vuser:tina /home/vuser && \

# 創(chuàng)建工具鏈目錄

mkdir /opt/toolchains && chmod 666 /opt/toolchains

# 容器創(chuàng)建后,默認(rèn)登陸以bash作為登陸環(huán)境

CMD ["/bin/bash"]
```

2. 創(chuàng)建docker鏡像
在磁盤的任意位置創(chuàng)建一個任意目錄(比如docker_build), 然后把附件的壓縮包解壓縮到這個目錄里,然后用命令行進(jìn)入這個目錄(docker_build)。在命令行中執(zhí)行以下命令(需要將walker2048替換成你自己的dockerhub用戶名):

```
docker build -t walker2048/tina_env -f Docker/tina_env.dockerfile --network host .
```

命令解析:
build參數(shù):告訴docker要執(zhí)行創(chuàng)建鏡像的工作
-t walker2048/tina_env 參數(shù): 告訴docker這個鏡像的tag標(biāo)簽(walker2048/tina_env)。可以理解成鏡像的標(biāo)識符(類似地址和姓名),這個tag標(biāo)簽是可以修改的,把鏡像上傳到dockerhub上也需要指定正確的標(biāo)簽。
-f Docker/tina_env.dockerfile 參數(shù): 告訴docker使用哪一個構(gòu)建腳本(可以使用絕對路徑和相對路徑)
--network host參數(shù): 告訴docker使用主機(jī)的網(wǎng)絡(luò)配置
最后的. 參數(shù):將當(dāng)前目錄的所有內(nèi)容傳遞給docker作為臨時輸入內(nèi)容(COPY命令需要使用)。

---

正確執(zhí)行命令后,網(wǎng)絡(luò)正常的情況下,大概只需要5分鐘左右,就順利完成鏡像構(gòu)建了。命令行輸出輸出類似下圖:

```
Sending build context to Docker daemon 95.64MB
Step 1/7 : FROM python:2.7-slim-buster
---> eeb27ee6b893
Step 2/7 : ENV TZ "Asia/Shanghai"
---> Using cache
---> 0c0e432b82be
Step 3/7 : WORKDIR /mnt
---> Using cache
---> 0d54e5487ee3
Step 4/7 : COPY Docker/vuser/* /root/
---> Using cache
---> 3e1598cc56a3
Step 5/7 : COPY Docker/bin/* /usr/bin/
---> Using cache
---> 40895711f1dc
Step 6/7 : RUN groupadd -g 1000 tina && useradd vuser -r -m --uid 1000 -g tina --shell /bin/bash && mv /root/powerline-go /usr/bin/powerline-go && chmod 755 /usr/bin/powerline-go && mkdir ~/.pip && echo '[global]'
>> ~/.pip/pip.conf && echo 'index-url = https://pypi.tuna.tsinghua.edu.cn/simple' >> ~/.pip/pip.conf && echo '[install]' >> ~/.pip/pip.conf && echo 'trusted-host = https://pypi.tuna.tsinghua.edu.cn' >> ~/.pip/pip.conf
&& cp -rv ~/.pip /home/vuser/ && chown -R vuser:tina /home/vuser/.pip && sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && dpkg --add-architecture i386 && apt-get update && apt-get install apt-utils -y && apt-get install curl wget patch pv git zip lbzip2 libncurses5 libncursesw5 nano -y && apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 busybox rsync lzma -y && apt-get clean && cd /root && cp .bashrc .bash_aliases /home/vuser/ && chown -R vuser:tina /home/vuser && mkdir /opt/toolchains && chmod 666 /opt/toolchains

##
篇幅原因,中間省略各種軟件源更新和軟件包安裝的內(nèi)容
##

---> Using cache
---> 3a44cb328437
Step 7/7 : CMD ["/bin/bash"]
---> Using cache
---> 6b65b7402ecd
Successfully built 6b65b7402ecd
Successfully tagged walker2048/tina_env:latest
```

當(dāng)我們看到所有的步驟(Step)都正確執(zhí)行了,最后也成功生成了鏡像的時候,就可以開始下一步創(chuàng)建docker容器了。

3. 創(chuàng)建docker容器
創(chuàng)建容器前,需要先理解一下創(chuàng)建容器的一些基礎(chǔ)知識。
3.1 容器類似獨(dú)立的虛擬機(jī),除了掛載上去的目錄,文件系統(tǒng)和寄主機(jī)是不相通的。
3.2 可以創(chuàng)建名稱不同的、但是使用的鏡像相同的容器。容器間是獨(dú)立的關(guān)系。
3.3 容器網(wǎng)絡(luò)使用方式需要指定,一般編譯服務(wù)器無特殊要求的,可以直接指定使用host網(wǎng)絡(luò)。
3.4 如果是Linux系統(tǒng),想讓docker容器訪問USB設(shè)備,可以使用--privileged參數(shù)開啟。
3.5 創(chuàng)建容器(虛擬機(jī))后,下次使用不需要重新創(chuàng)建。

Linux或者Bash環(huán)境使用以下命令

```
docker run -it --name tina_build \
--net=host \
--privileged \
-v /mnt/IoT:/mnt \
walker2048/tina_env
```

Windows環(huán)境使用以下命令

```
docker run -it --name tina_build --net=host -v /mnt/IoT:/mnt walker2048/tina_env
```

參數(shù)解析:
run 參數(shù): 告訴docker需要創(chuàng)建容器
-it 參數(shù): 創(chuàng)建完畢后自動運(yùn)行容器時,使用命令行交互方式運(yùn)行(開啟這個參數(shù)才能使用命令行交互)
--name tina_build 參數(shù): 告訴docker把這個容器命名為tina_build(后期運(yùn)行容器需要使用這個)
--net=host 參數(shù):指定容器的網(wǎng)絡(luò)模式為host模式(和主機(jī)同一個網(wǎng)絡(luò))
--privileged 參數(shù):特權(quán)模式,Linux環(huán)境下才有用,開啟后可以訪問USB設(shè)備
-v /mnt/IoT:/mnt 參數(shù):掛載寄主機(jī)的/mnt/IoT目錄到容器的/mnt目錄(都需要使用絕對路徑,文件雙方共享,可讀寫)
walker2048/tina_env 參數(shù): 告訴docker使用哪個鏡像來創(chuàng)建容器。

進(jìn)入容器后,命令行提示內(nèi)容如下(容器默認(rèn)使用了powerline-go,簡單美化了一下):

poYBAGMKD8uAIoeyAAAH2P5uHwk863.png

repo程序需要配置用戶信息,所以只能自行配置和安裝 #docker# 。
此時需要給vuser用戶添加密碼(只需要執(zhí)行一次,沒有密碼不能使用login命令切換用戶),在容器的命令行輸入

```

```

> passwd vuser

然后就可以用login命令切換到vuser用戶了。切換用戶后就可以按Tina SDK的說明下載和編譯源碼了(為什么要切換用戶,因?yàn)楹图闹鳈C(jī)子共享了目錄,如果寄主機(jī)子是Linux環(huán)境,用root用戶操作會影響寄主機(jī)對目錄的讀寫)。保持良好的用戶習(xí)慣是個好事兒。一般情況下,Linux環(huán)境的常規(guī)用戶ID是1000開始的。

4. 退出容器和重新運(yùn)行環(huán)境的方法。
4.1 退出容器。
在容器命令行輸入exit(如果之前用root用戶進(jìn)入容器,然后使用login命令切換用戶的,需要退出至少兩次)?;蛘咧苯雨P(guān)閉命令行。
4.2 容器未停止時進(jìn)入容器的方式(-u 參數(shù)指定用戶為root或者vuser):

> docker exec -it -u root tina_build bash

若命令行提示容器為停止?fàn)顟B(tài)(或者寄主機(jī)重啟過),需要先使用以下命令開啟容器。

> docker start tina_build

也可以通過-d參數(shù),告訴docker以守護(hù)形式長時間開啟容器(直到使用命令行關(guān)閉或者寄主機(jī)關(guān)機(jī))

#### 本次分享的內(nèi)容就是這些,希望能幫助到有需要的朋友。

因?yàn)檫@邊不能上傳附件,.bashrc內(nèi)容附在最后

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

# make less more friendly for non-text input files, see lesspipe(1)
#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
	# We have color support; assume it's compliant with Ecma-48
	# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
	# a case would tend to support setf rather than setaf.)
	color_prompt=yes
    else
	color_prompt=
    fi
fi

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    #alias grep='grep --color=auto'
    #alias fgrep='fgrep --color=auto'
    #alias egrep='egrep --color=auto'
fi

# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'

# some more ls aliases
#alias ll='ls -l'
#alias la='ls -A'
#alias l='ls -CF'

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

export PATH=/home/vuser/.bin:$PATH
export PATH=/opt/toolchains:$PATH

function _update_ps1() {
    PS1="$(powerline-go -error $? -cwd-mode semifancy -trim-ad-domain -newline -jobs $(jobs -p | wc -l))"

    # Uncomment the following line to automatically clear errors after showing
    # them once. This not only clears the error for powerline-go, but also for
    # everything else you run in that shell. Don't enable this if you're not
    # sure this is what you want.

    #set "?"
}

if [ "$TERM" != "linux" ] && [ -f "/usr/bin/powerline-go" ]; then
    PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    674

    瀏覽量

    33599
  • Tina
    +關(guān)注

    關(guān)注

    2

    文章

    45

    瀏覽量

    17187
  • RISC-V
    +關(guān)注

    關(guān)注

    46

    文章

    2461

    瀏覽量

    48006
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    503

    瀏覽量

    12539
收藏 人收藏

    評論

    相關(guān)推薦

    從零開始之電機(jī)FOC控制

    我們將撕開FOC神秘而虛偽的面紗,以說人話的方式講述它。真正的做到從零開始,小白一看就會,一學(xué)就廢。如果覺得有用的話,就點(diǎn)個贊唄,純手碼。一、什么是FOC?FOC
    的頭像 發(fā)表于 04-23 19:34 ?752次閱讀
    <b class='flag-5'>從零開始</b>之電機(jī)FOC控制

    從零開始學(xué)電源

    從零開始學(xué)電源···內(nèi)部篇 從零開始學(xué)電源---------內(nèi)部篇 (寫這篇文的著眼點(diǎn)就在“從零開始”上,所以涉及到一些詞匯和技術(shù)的時候,我會采取戲說的方式。網(wǎng)上電源高手甚多,且科班出身者比比皆是
    發(fā)表于 04-07 15:30

    rootfs鏡像制作其實(shí)沒那么難

    鏡像文件之外,通常還會提供文件系統(tǒng)壓縮包。鏡像文件可以直接用于燒寫到目標(biāo)板,而文件系統(tǒng)壓縮包則可以進(jìn)行部分修改,修改后重新制作鏡像文件燒寫。這里只講直接用
    的頭像 發(fā)表于 04-03 11:37 ?246次閱讀
    rootfs<b class='flag-5'>鏡像</b><b class='flag-5'>制作</b>其實(shí)沒那么難

    從零開始馴服Linux(一):ZYNQ-Linux啟動文件構(gòu)建全解析

    本帖最后由 jf_85110202 于 2025-3-20 17:42 編輯 從零開始馴服Linux(一):ZYNQ-Linux啟動文件構(gòu)建全解析 ZYNQ系列芯片集成了ARM處理器
    發(fā)表于 03-20 16:48

    基于Docker鏡像逆向生成Dockerfile

    在本文中, 我們將通過理解Docker鏡像如何存儲數(shù)據(jù), 以及如何使用工具查看鏡像方方面面的信息來逆向工程一個Docker
    的頭像 發(fā)表于 03-10 09:45 ?365次閱讀
    基于<b class='flag-5'>Docker</b><b class='flag-5'>鏡像</b>逆向生成Dockerfile

    docker-proxy鏡像加速倉庫

    自建多平臺容器鏡像代理服務(wù),支持 Docker Hub, GitHub, Google, k8s, Quay, Microsoft 等鏡像倉庫。
    的頭像 發(fā)表于 03-06 16:06 ?281次閱讀
    <b class='flag-5'>docker</b>-proxy<b class='flag-5'>鏡像</b>加速倉庫

    編譯系統(tǒng)鏡像教程

    解壓完成后G2L-Yocto SDK源碼以后,我們需要指定編譯參數(shù)才能開始給RemiPI生成對應(yīng)的系統(tǒng),配置腳本執(zhí)行完成后將進(jìn)入build-remi-1g目錄下,在此目錄下就可以開始構(gòu)建系統(tǒng)。
    的頭像 發(fā)表于 02-25 09:32 ?351次閱讀
    <b class='flag-5'>編譯</b>系統(tǒng)<b class='flag-5'>鏡像</b>教程

    Docker-鏡像的分層-busybox鏡像制作

    目錄 知識點(diǎn)1:鏡像的分層 示例:進(jìn)入 docker hub查看Jenkins的Dockerfile 知識點(diǎn)2:base鏡像 知識點(diǎn)3:scratch鏡像 scratch
    的頭像 發(fā)表于 01-15 10:44 ?436次閱讀
    <b class='flag-5'>Docker</b>-<b class='flag-5'>鏡像</b>的分層-busybox<b class='flag-5'>鏡像</b><b class='flag-5'>制作</b>

    Dockerfile鏡像制作Docker-Compose容器編排

    Dockerfile鏡像制作 docker/podman中, 鏡像是容器的基礎(chǔ),每次執(zhí)行docker run的時候都會指定哪個基本
    的頭像 發(fā)表于 01-07 11:01 ?595次閱讀
    Dockerfile<b class='flag-5'>鏡像</b><b class='flag-5'>制作</b>與<b class='flag-5'>Docker</b>-Compose容器編排

    docker通過中間鏡像加速部署

    使用 docker 打包鏡像的時候, 每次耗費(fèi)時間最多的就是 docker build 的過程. 特別是對于前端工程的打包, 有時候下載依賴包的時間就要 10 幾分鐘, 這就導(dǎo)致發(fā)布版本的效率極低.
    的頭像 發(fā)表于 01-06 12:39 ?332次閱讀

    如何在樹莓派上安裝Docker容器

    1. 準(zhǔn)備工作 在開始之前,請確保你的樹莓派已經(jīng)安裝了最新版本的Raspberry Pi OS。如果沒有,請按照以下步驟操作: 下載最新的Raspberry Pi OS鏡像:訪問 Raspberry
    的頭像 發(fā)表于 11-11 11:38 ?1659次閱讀

    手動構(gòu)建Docker鏡像的方法

    不推薦使用docker commit命令,而應(yīng)該使用更靈活、更強(qiáng)大的dockerfile來構(gòu)建docker鏡像。
    的頭像 發(fā)表于 08-05 15:30 ?734次閱讀
    手動構(gòu)建<b class='flag-5'>Docker</b><b class='flag-5'>鏡像</b>的方法

    ARM平臺實(shí)現(xiàn)Docker容器技術(shù)

    平臺上,而不用擔(dān)心運(yùn)行環(huán)境的變化導(dǎo)致應(yīng)用無法正常運(yùn)行的情況。 更輕松的維護(hù)和拓展:Docker使用的分層存儲以及鏡像的技術(shù),使得應(yīng)用重復(fù)部分的復(fù)用更為容易,也使得應(yīng)用的維護(hù)更新更加簡單,基于基礎(chǔ)
    發(fā)表于 07-25 14:36

    ARM平臺實(shí)現(xiàn)Docker容器技術(shù)

    不用擔(dān)心運(yùn)行環(huán)境的變化導(dǎo)致應(yīng)用無法正常運(yùn)行的情況。更輕松的維護(hù)和拓展:Docker使用的分層存儲以及鏡像的技術(shù),使得應(yīng)用重復(fù)部分的復(fù)用更為容易,也使得應(yīng)用的維護(hù)更新更加簡單,基于基礎(chǔ)鏡像
    發(fā)表于 07-17 11:05

    關(guān)于Docker 的清理命令集錦

    : docker rm $(docker ps -a -q) ?刪除所有未打 dangling 標(biāo)簽的鏡像 復(fù)制代碼代碼如下: docker rmi $(
    的頭像 發(fā)表于 06-13 15:56 ?560次閱讀