導航:首頁 > 編程系統 > win10docker掛載

win10docker掛載

發布時間:2023-05-23 07:59:20

㈠ docker怎麼指定容器卷掛載到某個目錄

docker可以支持把一個宿主機上的目錄掛載到鏡像里。 docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash 通過-v參數,棗做冒號前為宿主機目錄,必須為絕對路徑,冒號後為鏡像內掛載的路徑。 現在鏡像內就可以共凳歷衡享宿爛盯主機里的

㈡ 如何讓Windows 8/Windows 10用戶也用上Docker

默認情況下Boot2Docker需要安裝Virtualbox,而不支持Hype-V,這很麻煩,還得修改BCD引導文件,因為Hyper-V和Virtualbox不兼容。
現在好了,有人將其做成可以支持Hyper-V的光碟版,可以直接下載使用最新的ISO文件。步驟:
1. 首先下載前面所頃伍述的ISO文件。
2. 新建虛擬機,選擇第一代。

3. 確保虛擬網路能訪問外部網路,因為後面需要從外網Docker Hub下載容器喚慧映像。

4. 不要新建虛擬硬碟。

5. 然後啟動虛擬機,運行ifconfig查看IP地址,比如是192.168.0.113。

6. 接下來關閉虛擬機,在虛擬機里新建虛擬硬碟,並用fdisk進行分區並格式化。然後再創建差異磁碟,為甚要創建差異磁碟,這是為了方便,今後可以每個容器放在獨立的差異磁碟里,方便今後測試調試。
7. 為了方便,可以通過Putty等SSH工具連接到Boot2Docker虛擬機,並用docker version查看版本信息。
注意用戶名和密碼:docker/tcuser

8. 運行以下命令,構建wordPress博客的容器:
docker build -rm -t hualaisi /wordpress git://github.com/jbfink/docker-wordpress.git
其中 hualaisi 可以用任意名稱代替。
根據網路速度,等待一段時間,等wordpress下載構建完畢。
9. 運行以下命令,啟動WordPress容器,並設置該容器的NAT埠為80:
docker run --name wordpress -d -p 80:80 hualaisi /wordpress

10. 可以運行以下命令查看當前環境里運行的docker容器:
docker ps -a

最後,可以直接在Windows里打開Web瀏覽器,輸入以下地址(注意IP地址和埠號),即可配置並訪問構建在docker容器里的WordPress博客。和乎答
http://192.168.0.113

㈢ docker一定要掛載才能使用嗎

是。Docker是一個開源的應用容器引擎,只有掛載才能進行使用,讓開答改老發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然後發布到任何流行的linux或Windows操作系統的機器殲舉上,也可以實現虛擬化。容器是完全使用沙箱機制,相清升互之間不會有任何介面。

㈣ 如何使用win10裝docker,然後再虛擬win系統

1.Windows操作系統中安裝Docker,如果是Win10以下的系統安裝Docker T...
2.接下來Windows系統需要開啟Hyper-V,打開控制面板,找到程序和功能選項,...
3.接下來進行Docker Desktop的安裝,打開安裝包進行安裝,安裝完選擇添加...
4.接下來是啟動Docker Desktop,在自動重啟的過程中可以看到右下角的圖像...
5.Docker Desktop啟動成功後,我們可以使用cmd打開命令行工具

㈤ docker desktop win10掛載問題解決

更新於2020/8/13

此文章適用於安裝完docker desktop install ,for windows10,並且是默認使用wsl2安裝的docker。現在的win10家庭版也已經支持安裝。
注意如果我們不把docker集成到已有的wsl2的linux發行版(如圖),docker自己的發行版是沒有bash(如果有進入docker發行版shell的方法請大佬告知)

在power shell輸入(CMD 不支持將 UNC 路徑作為當前目錄)

最開始的想法是docker的分發版中是不是可以像Linux一樣的掛載文件,可惜沒有成功。
在docker-desktop-data會保存docker的iamge和容器數據,暫時不清余衫楚docker-desktop分發版的作用,可能是docker實際運行的分發版?
通過查看官方的文檔,發現docker wsl2安裝的版本Settings已經沒有Shared Devices選項,因為docker的文件掛載交給了wsl2的機制處理。
我們可以看到docker安裝後wsl2默認的分發版是dockers-desktop-data,嘗試使用sh或者bash進入這個分發版豎毀宏:

可以看到這個Linux分發版中沒有sh和bash。我們切換為另一個分發版:

很明顯,docker-desktop分發版中有sh和bash。但是這個分發版的根目錄其實不是docker掛載時的根目錄。

官方文檔介紹了掛載的方法
https://docs.docker.com/docker-for-windows/wsl/

不報錯但根本沒有掛載成功。

可能是官方文檔的失誤,我又查找了wsl2的說明文檔,找到了win系統磁碟在余冊wsl2上的設置文件:

顯然c盤映射到了/mnt/host/c,而不是/mnt/c。但是使用此路徑掛載依舊無效。
最後在前輩的文章 https://www.jianshu.com/p/18593d1f4fc3 上找到答案,此處記錄一下正確的掛載命令:

注意盤符一定要小寫。
掛載文件一定要注意windows的CRLF文件在Linux上有兼容問題,最好始終使用LF文件,windows上的IDE基本都可以正常讀取LF文件。windows上的git默認選項會自動把項目的LF換為CRLF,取消方法

既然官方建議我們在linux文件系統下進行掛載,我最後找到了方法把掛載文件放在Linux文件系統中。通過文件資源管理器將掛載文件直接放入docker的運行時根目錄下(開啟docker後才可以訪問)

比如我們要掛載下面的文件夾:(可以直接在windows文件資源管理器地址欄輸入查看)

命令為

更新:注意這個目錄是運行時目錄,docker停止運行後會失去持久化,重啟後還原為原目錄。暫時沒有找到其持久化的方法。

㈥ win10下docker掛載文件夾報錯

執行命令 

docker run -d -v D:\wnmp\mysql57-log:/var/log/mysql/ -v D:\wnmp\mysql57-conf:/etc/mysql/ -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --name mysql mysql:5.6

報錯

docker: Error response from daemon: status code not OK but 500: � ����� � FDocker.Core, Version=2.5.0.49550, Culture=neutral, PublicKeyToken=null�� ocker.Core.DockerException ClassNameMessage�Data�������� � ��System.Collections.IDictionary�System.Excepti�� �� ocker.Core.DockerException�� �Filesharing has been cancelled

��  ��  在 Docker.ApiServices.Mounting.FileSharing.<DoShareAsync>d__8.MoveNext() 位置 C:\workspaces\stable-2.5.x\src\顫旅github.com\docker\pinata\win\src\Docker.ApiServices\Mounting\FileSharing.cs:行號 0

--- 引發異常的上塌陪一位置中堆棧跟蹤的末尾 ---

  在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

  在 System.Runtime.CompilerServices.TaskAwaiter.(Task task)

  在 Docker.ApiServices.Mounting.FileSharing.<ShareAsync>d__6.MoveNext() 位置 C:\workspaces\stable-2.5.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\Mounting\FileSharing.cs:行號 55

--- 引發異常的上一位置中堆棧跟蹤的末尾 ---

  在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

  在 System.Runtime.CompilerServices.TaskAwaiter.(Task task)

  在 Docker.HttpApi.Controllers.FilesharingController.<ShareDirectory>d__2.MoveNext() 位置 C:\workspaces\stable-2.5.x\src\github.com\docker\pinata\win\src\Docker.HttpApi\Controllers\FilesharingController.cs:行號 21

--- 引發異常的上一位置中堆棧跟蹤的末尾 ---

  在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

  在團洞蠢 System.Runtime.CompilerServices.TaskAwaiter.(Task task)

  在 System.Threading.Tasks.TaskHelpersExtensions.<CastToObject>d__1`1.MoveNext()

--- 引發異常的上一位置中堆棧跟蹤的末尾 ---

  在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

  在 System.Runtime.CompilerServices.TaskAwaiter.(Task task)

  在 System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()

--- 引發異常的上一位置中堆棧跟蹤的末尾 ---

  在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

  在 System.Runtime.CompilerServices.TaskAwaiter.(Task task)

  在 System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()

--- 引發異常的上一位置中堆棧跟蹤的末尾 ---

  在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

  在 System.Runtime.CompilerServices.TaskAwaiter.(Task task)

  在 System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()

    ��  ��8

MoveNext

Docker.ApiServices, Version=2.5.0.49550, Culture=neutral, PublicKeyToken=null

Docker.ApiServices.Mounting.FileSharing+<DoShareAsync>d__8

Void MoveNext() ����  �Docker.ApiServices.

See 'docker run --help'.

打開設置,添加掛載目錄

點擊保存

㈦ 解決 Docker 數據卷掛載的文件許可權問題

Docker 提供了數據卷 綁定掛載 的機制簡斗攔(volume bind mounts)來將主機上的文件 (file) 或者目錄 (directory) 掛載進容器 (container)。也就是 docker run 命令中熟知的 -v 參數。根據 Docker 官方文檔,綁定掛載一般適合於 三種場景 :

但是實際使用時,會遇到文件許可權問題:

譬如執行如下命令創建一個容器,掛載當前目錄到容器內,並在容器內向主機當前目錄創建 tmp.txt:

主機當前目錄出現了容器內創建的 tmp.txt,但是其許可權、用戶和組均是 root,其他用戶不可寫。

常見解決方法是可以通過 Docker 提供的 User 命令、 --user 參攔胡數 來指定容器內部的用戶和組的 id,譬如:

可以看到輸出,current_user 處會顯示主機當前用戶的名字,所以解決了主機用戶對掛載的卷沒有許可權的問題。

user 參數的缺陷
使用 user 參數有一些缺陷,如果你進入容器內部的 terminal,會顯示如下內容:

b.sh 的用戶名會顯示 I have no name!,這是因為我們通過 --user 參數指定了容器內部的用戶 id,但該 id 不存在於容器內的 /etc/passwd 文件中。

除此之外,使用 user 參數仍然存在許可權問題:

除了綁定掛載的主機路徑之外的所有路徑,對於容器內部的用戶都沒有寫許可權。
這也是不可接受的,因為容器運行過程中我們可能會進行一些臨時文件的寫入,這些臨時文件我們並不想要寫到主機的掛載目錄,但除了掛載路徑之外的任何路徑容器都沒有寫入許可權。

譬如我們在主機上創建 models 目錄。

我們使用 Docker 掛載 models 目錄,然而在 Docker 容器內部除了 models 文件夾都沒有訪問許可權。

這可以通過增加掛載路徑:

這樣容器運行過程往 /project 寫的臨時文件都會出現在主機上。

可見, user 參數並不能解決所有問題。它存在兩個問題:

我們需要一種手段,既可以像 user 參數一樣在容器運行時可以將用戶切換到和主機相同的用戶,又希望 Docker 容器保留 root 用戶,並給主機用戶想要訪問的目錄授權(對特定目錄 chown 、 chmod 等)。

Docker 官方文檔對 Entrypoint 介紹時給出了 一種最佳實踐 。

編寫如下的 Dockerfile:

該 Dockerfile 中安裝了一個 gosu 的工具,並設置了程序的 Entrypoint。由於 Docker 內使用 sudo 可能導致一些不可預知的 TTY 和信號轉發問題,所以 Docker 官方推薦了使用 gosu 這個工具,用於保持容器在 root 用戶下運行,並用 sudo 來切換到指定用戶。

其中 docker-entrypoint.sh 內容如下:

可以看到 docker-entrypoint.sh 中創建了一個名為 user 的用戶,該用戶的 uid 由 docker run 的參數傳入,這里利用了 linux 系統的一個特點,容器內外用戶許可權的記錄和用戶的名字無關,只和 uid 有關,因此容器內我們將用戶命名為 user 沒有影響。docker-entrypoint.sh 最後一行調用 gosu 來切換到 user 用戶並執行 Dockerfile 中的用戶命令。

有了如上兩個腳本,我們構建鏡像並執行:

運行容器時指定 LOCAL_USER_ID 參數:

可見不僅容器內往掛載目錄 /project/models 寫入的文件 model.txt 所有者是主機用戶,而且在容器內往非掛載目錄 /project/tmp.txt 寫入銷簡文件也不會遇到許可權問題。

Docker 運行時容器內默認使用 root 用戶運行,但是我們不是總是想要用 root 用戶,因為有時候我們希望容器計算產生一些文件,並通過 volume 的綁定掛載在主機上獲取。特別是我們用 jenkins 等工具寫一些持續集成的腳本時候。容器內用 root 用戶運行會導致產生的文件也是 root 用戶的,主機上沒有讀取許可權。因此我們需要讓容器在運行的時候切換到主機上的用戶。

Docker 對於這種情況仍然沒有提供足夠便利的基礎設施,我們採用了 Docker 官方目前推薦的一個方式,通過編寫一個 docker-entrypoint.sh 腳本作為 Dockerfile 的 Entrypoint,腳本中創建和主機上相同 uid 的用戶,並通過 gosu 工具切換到該用戶執行命令。 uid 需要在 docker run 階段通過參數傳入。我們在腳本中設置了預設 uid ,上面的腳本隨機選擇了一個 9001,注意要將該預設值避免設置成和 Docker 鏡像中存在的用戶沖突的 uid。

參考鏈接:

㈧ win10系統怎麼裝docker

1.前言
Docker最近推出了可以運行在Win10和Mac上的穩定版本,讓我們趕緊來體驗一下。
2.安裝准備
需要的條件為: 64bit Windows 10,開啟Hyper-V
2.1 下載Docker for Windows
從官網的下面地址可以下載
https://download.docker.com/win/stable/InstallDocker.msi
2.2 開啟win10的Hyper-V
控制面板 -> 程序 -> 啟用或關閉Windows功能 -> 選中Hyper-V
這里寫圖片描述
完成後自動重啟
3.安裝Docker
用剛才下載的安裝包安裝,安裝完成後,啟動Docker
這里寫圖片描述
這里寫圖片描述
如果沒有開啟Hyper-V,啟動Docker的時候會提示開啟Hyper-V
這里寫圖片描述
如果啟動的時候,提示內存不足,啟動失敗,可以在setting設定中調節VM內存大小
這里寫圖片描述
4.使用Docker
4.1 查看版本等信息

㈨ docker添加掛載目錄或者添加埠

docker添加掛載目錄:先在docker容器里創建目塵段喊錄/import

1.關閉docker

2.sudo su切換到root身份,cd /var/lib/docker/containers/容器id/,進入對應容器目錄
3.vi hostconfig.json,修改如下,將容器目錄/import綁定到主機/data目錄:

4.vi config.v2.json,修改如下,添加MountPoints:

5.啟動docker

最後docker ecec -it 容器id /bin/bash進入ls -l /就可以看見import目錄

添加埠在這個文件hostconfig.json
首先輸入

可以看到我當前的名叫mynginx容器只打開了80埠

在給mynginx容器添加上這條命令:

來設置重啟docker之後自動啟動該容器。設置完成後再修改hostconfig.json文件中的"PortBindings"就行。

然後停止容器systemctl stop docker

然後進入到該容器的hostconfig.json文件中,增加一個8000的埠

保存後退出

再次啟動docker容器systemctl start docker

輸入docker ps -a查看燃陪

發現已派野經增加了8000埠

若想要增加容器埠,則需要把config.v2.json中的ExposedPorts也加上你想添加的埠號

閱讀全文

與win10docker掛載相關的資料

熱點內容
java定時器quartz實例 瀏覽:259
稻殼excel文件太大怎麼弄 瀏覽:901
文件里的視頻如何保存到相冊 瀏覽:428
手機百度雲文件電腦 瀏覽:957
編程怎麼做到時鍾精準 瀏覽:912
錘子用過的壁紙在哪個文件里 瀏覽:468
qq網站安全性未知訪問不了怎麼辦 瀏覽:270
燕秀怎麼修改編程人名字 瀏覽:789
2012年天之眼導航升級 瀏覽:595
如何安裝視頻文件 瀏覽:315
紅米2A升級miui9 瀏覽:927
如何在表格中加入一行資料庫 瀏覽:421
dnf遠古二能升級85嗎 瀏覽:251
extjsbbar屬性 瀏覽:355
nodejs網頁 瀏覽:517
同城簡歷在哪個文件夾 瀏覽:661
mac上的文件總是出現未知錯誤代碼 瀏覽:374
flash滾動圖片教程 瀏覽:191
手機dcim文件夾怎麼 瀏覽:61
extjsform中畫表格 瀏覽:492

友情鏈接