# Docker WSL ubuntu環境安裝 如果現有docker其他版本,先解除安裝 ## 推薦直接使用docker desktop #### Add Docker's official GPG key: ``` sudo apt-get update sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg ``` #### Add the repository to Apt sources: ``` echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update ``` #### 下載最新版本docker `` sudo apt-get install docker-ce docker-ce-cli containerd.io `` #### 切換iptables成legacy ``` sudo update-alternatives --config iptables 1 ```  #### 重開docker service `` sudo service docker restart `` 之後跑以下應該可以成功建立docker container 跑hello world `` sudo docker run hello-world `` 若出現沒有權限  輸入以下指令給予docker權限後重開terminal ``` $ sudo usermod -aG docker $USER ``` 如果sudo service docker start後依然顯示docker daemon沒有開啟 1. 確認使用的要是wsl2 2. 印出 /var/log/docker.log內容 進行debug 若docker-compose 指令無法使用,可能是新版本指令改成 docker compose,可以在/bin 新增一個檔案叫docker-compose,並輸入以下文字  之後更改權限 `` chmod +x /bin/docker-compose `` 重開terminal之後docker-compose指令就可以使用了 ### 參考資料 https://docs.docker.com/engine/install/ubuntu/ # 替 .net 應用程式建立docker https://learn.microsoft.com/zh-tw/dotnet/core/docker/build-container?tabs=linux&pivots=dotnet-8-0 ### 取得log `` docker logs [OPTIONS] CONTAINER `` ### 進入docker console `` docker exec -it [容器名稱或id] sh `` sh可以替換成任何指令 https://www.runoob.com/docker/docker-container-connection.html # 建立客製化Mysql image 先建立Dockerfile ```dockerfile #從遠端pull 預設 mysql image FROM mysql:8.0.35 EXPOSE 3306 LABEL version="0.1" description="groupOrdering Mysql伺服器" # 將設定檔複製到image底下 COPY ./my.cnf /etc/my.cnf # 將所有/sql底下檔案移到docker內部自動執行位置 # /docker-entrypoint-initdb.d是mysql第一次建立時會執行得資料夾 # 裡面可以放sh檔和.sql檔來初始化,如果volume裡已有資料則不會被執行 COPY ./sql /docker-entrypoint-initdb.d ``` 資料夾結構長這樣  # 將Image輸出成檔案和從檔案還原成image 輸出成檔案 ``` docker save [image] > [image].tar ``` 還原成image ``` docker load -i [tar file] ``` https://peihsinsu.gitbooks.io/docker-note-book/content/docker-save-image.html # 外部電腦連線到WSL的Docker docker 內部可以直接經由WSL做port forwarding,但是WSL也算是Window底下的一台虛擬機,所以我們也必須先從windows port forwarding到wsl,再從wsl port forwarding 到 container 使用windows指令port forwarding到wsl ``` netsh interface portproxy add v4tov4 listenport=[port] listenaddress=0.0.0.0 connectport=[port] connectaddress=[wsl的IP] ``` 使用以下指令輸出目前forwarding的port ``` netsh interface portproxy show v4tov4 ``` https://jwstanly.com/blog/article/Port+Forwarding+WSL+2+to+Your+LAN/
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up