日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

docker几个基础命令及nodejs容器

發布時間:2025/7/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker几个基础命令及nodejs容器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在了解docker使用,在網上找資料發現很少有可以系統的了解某一個操作目的的大部分細節的參考,學起來非常吃力、耗時。
這里整理了一下自己在入門摸索過程中的幾個入門級的操作,可以連貫的對實現一個nodejs容器基礎操作有個清晰的了解,下面進入正文。
網上很容易找到關于docker的container運行、鏡像拉取、容器查看等操作,這里不多說

// 拉取鏡像 docker pull [OPTIONS] NAME[:TAG|@DIGEST] // 同 docker image pull// 拉取官方的nodejs的鏡像 docker pull node 復制代碼

使用nodejs鏡像創建一個新的nodejs容器,命名為my-node

docker run -itd --name my-node node /bin/bash 復制代碼

當然還可以使用docker create創建一個新容器,但不馬上運行。下面帶著一系列問題來了解相關命令:

如何查看創建的容器?

創建并運行完成后,可以這樣查看正在運行的容器

docker ps // 或 docker container ls 復制代碼

結果如下,最后NAMES為容器名,很多操作都可以使用容器名來制定該容器,跟ID類似

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a2e2c6b8360f node "/bin/bash" 5 days ago Up 5 days my-node 復制代碼

也可以使用docker container ls -a來查看所有已經創建的容器(包括沒有運行的)

如何查看容器里面運行的軟件版本?

這也是我開始學習docker時遇到的問題之一,關鍵就是exec命令,它的作用就是在運行的容器中執行命令。格式為:

docker exec [OPTIONS] CONTAINER COMMAND [ARG...] 復制代碼

簡單的查看nodejs版本的方式為:

docker exec my-node node --version // 結果 v11.6.0 復制代碼

my-node 為容器名即CONTAINER, node 為COMMAND,--version為ARG 即在my-node 容器里執行node --version 命令,這是使用exec執行命令的基本方式,缺點是只能執行一次,而且不能進行后續的交互。更好的方式是

docker exec -it my-node /bin/bash 復制代碼

-it 選項的功能跟run命令的-it類似,打開可以進行交互的終端,/bin/bash就是運行容器的bash程序,這個效果跟使用run命令才不多,這樣就進入到容器里面,容器擁有簡單的linux命令,比如ls、shell等因為是nodejs的容器,所以可以執行node命令,如:node -v,就像在linux系統里面一樣:

root@a2e2c6b8360f:/# node -v v11.6.0 root@a2e2c6b8360f:/# 復制代碼

除此之外,當然也可以執行js代碼,運行node cli命令。這是容器運行的常用方式,在后文會有用到。

現在終端交互為容器的終端,如何退出容器呢?

有兩個方法,可以使用ctrl + d,也可敲入exit命令,兩種方法等效。

注: 還可以使用attach命令進入容器,但是這樣退出容器終端的同時也會stop容器,這是不希望看到的(經測試加--sig-proxy=false不行)

知道如何在容器里運行js代碼了,那如何把js代碼或文件放進容器里面,或者說

如何利用容器執行我們在容器外編輯的js文件呢(在不打包鏡像的情況下)?

要解決這問題,就需要用到掛載或volume(數據卷)的功能。docker可以通過-v、--mount選項來掛載宿主機與容器的共享目錄。以windows下面的docker為例,另外再創建一個名為node-a的容器來實現掛載:

docker run -itd --name node-a -v $pwd/test:/test node /bin/bash 復制代碼

在這行命令中,-v之后的參數為 宿主目錄:容器目錄,意即把宿主機的$pwd/test($pwd為當前工作目錄)目錄掛載到容器的/test目錄(根目錄下的test文件夾)。

綁定成功后,在宿主機的 $pwd/test 目錄下的任何文件變動,都會實時同步到容器的/test文件夾下。 例如在宿主機$pwd/test 目錄下新建一個文件foo.js,里面一行js代碼console.log('this is a test!'),然后進入到容器,可以看到test目錄,并在文件夾下有foo.js

docker exec -it my-node /bin/bash root@a4562d3e28da:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys test tmp usr var vol root@a4562d3e28da:/# cd test && ls foo.js root@a4562d3e28da:/# node foo.js this is a test 復制代碼

這樣,就可以通過在容器外面編輯文件,而在容器里面運行。可以很方便的進行測試。 通過inspect命令可以查看當前的掛載信息:

docker inspect -f "{{json .Mounts}}" node-a [{"Type":"bind","Source":"/host_mnt/c/**/桌面/**/my-docker/test", // 宿主機目錄"Destination":"/test", // 容器目錄"Mode":"","RW":true,"Propagation":"rprivate" }] 復制代碼

當容器多了,忘了對應的掛載目錄,這個就非常有用,關于inspect命令的使用,點擊。關于-v選項的更多細節可以參考

當然也可以使用--mount來進行掛載(官方推薦),或者使用volume來共享數據(但在windows、mac下,由于docker是跑在虛擬機里面,所以獲取docker volume在本地的目錄會比較麻煩),有興趣可以深入了解。當然也可以通過dockerfile配置image來配置,但這不屬于本文范圍。

轉載于:https://juejin.im/post/5c4828fd51882525927901a1

總結

以上是生活随笔為你收集整理的docker几个基础命令及nodejs容器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。