1. 鏡像配置
鏡像配置文檔如果你找不到哪里寫鏡像配置了医男,那你需要先注冊(cè)遣臼,再來刷新頁面时捌。
我一開始沒有下載docker for mac 所以我使用這種方法配置鏡像
Docker Toolbox
(不推薦使用 docker toolbox构拳,建議使用新的 docker for mac 及 docker for windows 以在這兩種平臺(tái)運(yùn)行 docker )
請(qǐng)確認(rèn)你的 Docker Toolbox 已經(jīng)啟動(dòng)压固,并執(zhí)行下列命令(請(qǐng)將 加速地址 替換為在加速器頁面獲取的專屬地址)docker-machine ssh default sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=加速地址 |g" /var/lib/boot2docker/profile exit docker-machine restart default
結(jié)果不能正常使用 根據(jù)提示運(yùn)行docker-machine env
依然不奏效
Restarting "default"...
(default) Check network to re-create if needed...
(default) Waiting for an IP...
Waiting for SSH to be available...
Detecting the provisioner...
Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
于是我下載了 docker for mac 如果你是Windows系統(tǒng),你可能需要 docker for windows
右鍵點(diǎn)擊桌面頂欄的 docker 圖標(biāo)秃诵,選擇 Preferences 续搀,在 Daemon 標(biāo)簽(Docker 17.03 之前版本為 Advanced 標(biāo)簽)下的 Registry mirrors 列表中加入下面的鏡像地址:
http://49e8d00f.m.daocloud.io Copy
點(diǎn)擊 Apply & Restart 按鈕使設(shè)置生效。
配置好之后菠净,打開Kitematic 搜索 node 并create
點(diǎn)擊exec會(huì)自動(dòng)從終端進(jìn)入容器
一開始不知道出什么問題了禁舷,一直報(bào)錯(cuò),搜了半天也沒解決
Error response from daemon: Container XXXXX is not running
把node移除毅往,重新create了牵咙。奇跡般的好了。
2. 在容器里運(yùn)行JS代碼
- 使用node 交互環(huán)境
點(diǎn)擊exec會(huì)自動(dòng)從終端進(jìn)入容器
輸入node進(jìn)入node交互環(huán)境
console.log('hello js!');
//輸出
hello js!
- 使用node xxx.js運(yùn)行js文件
點(diǎn)擊exec會(huì)自動(dòng)從終端進(jìn)入容器
//將js代碼寫入hello.js文件
echo "console.log('hello,js');" >> hello.js
//運(yùn)行hello.js文件
node hello.js
//輸出結(jié)果
hello,js
雖然有了node環(huán)境攀唯,但是除了交互式體驗(yàn)還可以洁桌,編輯文件非常不方便,
連vi編輯器都沒有侯嘀,apt-get update; apt-get install vim; vim安裝都會(huì)報(bào)錯(cuò)战坤。E: Unable to locate package vim
你常用的vscode在這里更是木有。
因此最好掛載個(gè)卷残拐,可以在本機(jī)使用編輯器方便編寫代碼
- 掛載卷 在本地編輯文件 在容器運(yùn)行
在本地終端執(zhí)行下述命令:
docker run -it -v $PWD/dockerfile:/workspace node sh
上述代碼表示
運(yùn)行一個(gè)node 容器 執(zhí)行 sh 命令 (docker run node sh)
由于 使用了 -it參數(shù) 表示打開一個(gè)終端進(jìn)行交互操作
-v 參數(shù)指定 掛載的卷 :為分割 把左邊當(dāng)前目錄下的dockerfile文件夾掛載到右邊根目錄下的workspace文件夾
這意味著 dockerfile 和 workspace 綁定在一起的途茫,里面的內(nèi)容時(shí)刻保持一致
在dockerfile文件夾下創(chuàng)建hello.js文件,并且寫入console.log('眾里尋他千百度溪食,驀然回首囊卜,那人卻在燈火闌珊處');
在容器中切換到workspace 并執(zhí)行文件
以下代碼在容器中執(zhí)行
cd workspace
node hello.js
輸出//
'眾里尋他千百度,驀然回首错沃,那人卻在燈火闌珊處'