1. 程式人生 > 其它 >使用wsl安裝docker,並安裝mongodb

使用wsl安裝docker,並安裝mongodb

docker 安裝

wsl相關操作

修改軟體源(ubuntu)

修改/etc/apt/sources.list為下面的配置,需要賦予x許可權 chmod +x /etc/apt/sources.list

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

切換docker容器為wsl2

選擇wsl2

切換wsl2系統

檢視當前wsl系統

PS C:\Users\Administrator> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-20.04           Running         2
  docker-desktop-data    Running         2
  docker-desktop         Running         2

設定版本
預設啟用 WSL2輸入命令:wsl --set-default-version 2

即可完成版本設定。

設定版本
wsl --set-version Ubuntu-20.04 2

wsl版本參考資料
https://docs.microsoft.com/zh-cn/windows/wsl/install#update-to-wsl-2

wsl安裝docker參考
https://www.cnblogs.com/360linux/p/13662355.html

docker檢視run命令詳情

使用者在docker客戶端手動生成容器時檢視系統生成的run命令,下面會用到。

安裝python
sudo apt install python3-pip

安裝runlike
sudo pip install runlike

使用runlike
runlike -p 容器
示例,其中在powershell前面加上wsl可以直接使用wsl對應bash的命令

PS C:\Users\Administrator> wsl docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED       STATUS       PORTS                      NAMES
9a58bb235b3a   mongo:latest   "docker-entrypoint.s…"   2 hours ago   Up 2 hours   0.0.0.0:27016->27017/tcp   mongo
8c2936cb019a   redis:latest   "docker-entrypoint.s…"   2 hours ago   Up 2 hours   0.0.0.0:6379->6379/tcp     redis
PS C:\Users\Administrator> wsl runlike -p 9a58bb235b3a
docker run \
        --name=mongo \
        --hostname=9a58bb235b3a \
        --mac-address=02:42:ac:11:00:03 \
        --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
        --env=GOSU_VERSION=1.12 \
        --env=JSYAML_VERSION=3.13.1 \
        --env=MONGO_PACKAGE=mongodb-org \
        --env=MONGO_REPO=repo.mongodb.org \
        --env=MONGO_MAJOR=5.0 \
        --env=MONGO_VERSION=5.0.6 \
        --volume='F:\dockerVolumes\mongo:/data' \
        --volume=/data/configdb \
        --volume=/data/db \
        -p 27016:27017 \
        --runtime=runc \
        -t \
        mongo:latest \
        mongod

上面操作的原因

上面一大堆操作主要是我忘記了如何使用wsl設定volume,所以需要客戶端操作一下,然後使用runlike命令查看了一下,順便又補充了一下wsl方面的知識,發現客戶端安裝的docker不在wsl裡,意味著runlike還是不能使用,所以需要先把wsl升級為2,並且在docker客戶端裡面改成使用wsl

執行容器

docker run --name=mongo  --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env=GOSU_VERSION=1.12 --env=JSYAML_VERSION=3.13.1 --env=MONGO_PACKAGE=mongodb-org --env=MONGO_REPO=repo.mongodb.org --env=MONGO_MAJOR=5.0 --env=MONGO_VERSION=5.0.6 --volume=/data/configdb --volume=/data/db -p 27016:27017 --runtime=runc -t mongo:latest mongod

接著使用以下命令新增使用者和設定密碼,並且嘗試連線。

$ docker exec -it mongo mongo admin
# 建立一個名為 admin,密碼為 123456 的使用者。
>  db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
# 嘗試使用上面建立的使用者資訊進行連線。
> db.auth('admin', '123456')

測試連線,使用navicat