apt ubuntu 指定ipv4_macOS 下使用 Docker 搭建 ubuntu 环境
學習網絡開發過程中不想“污染”macOS,考慮到之后部署網絡應用主要是與linux打交道,所以安裝了 ubuntu 虛擬機以滿足短期的知識學習需求。十里安裝了 ubuntu 虛擬機,一般就是在 mac 中 ssh 連接 ubuntu 虛擬機在終端下進行操作學習,可見安裝一個包含完整GUI的 ubuntu 有點多余,還占用很多資源!所以想到了使用 docker 來創建 ubuntu 容器用來開發學習,本文就分享一下這個過程!
本文就不介紹 Docker 是什么了,主要描述搭建符合自己需求的 ubuntu 容器的過程。
1. 容器需求
- 可以 ssh 連接
- 包含 vim、git等基本工具
2. 安裝和配置 Docker
2.1 下載并安裝 Docker
2.2 配置 Docker
由于國內訪問 Docker 官方默認的鏡像源很慢,所以需要更換國內的鏡像源進行加速,這里使用官方提供的一個鏡像倉庫地址:https://registry.docker-cn.com。
3. 定制 ubuntu 鏡像
3.1 獲取 ubuntu 鏡像
運行命令
docker pull ubuntu就會拉取官網上的最新 ubuntu 鏡像,這是一個極其精簡的鏡像,作為我們定制 ubuntu 鏡像的基礎。
使用命令 docker image ls 可以查看當前安裝的 Docker 鏡像。
3.2 ubuntu 容器
3.2.1 創建 ubuntu 容器
使用命令 docker run -i -t --name mineos ubuntu bash 可以創建并運行一個可以使用終端交互的 ubuntu 容器,命令參數解釋:
上面的命令執行后,就會登陸 ubuntu 容器的 bash 中,執行命令cat /etc/issue 可以查看系統版本,十里的ubuntu版本是 18.04。此時按快捷鍵組合 ctrl + d 就會退出 ubuntu 容器,此時就會停止容器運行。
3.2.2 查看已有容器
使用命令 docker ps 可以查看當前運行的容器,如果此時執行,會發現沒有容器信息,因為我們已經停止了剛才創建的容器。怎么查看已經關閉的容器信息呢?使用命令 docker ps -a,會列出所有容器信息,包括已經關閉的。此時執行,就會看到已經關閉的 mineos 容器。
3.2.3 以交互的形式啟動容器
執行命令 docker start mineos 就會啟動容器,但是你會發現無法像剛創建時登陸容器的 bash,先使用命令 docker stop mineos,此時加入 -i 參數啟動就可以了 docker start -i mineos。
3.3 ubuntu 容器的基本配置
登陸進 ubuntu 的 bash 以后就可以當正常的 ubuntu 進行使用了。
- 更新軟件源信息:apt-get update
- 因為這個 ubuntu 的依賴鏡像太精簡了,所以好多工具沒有安裝,先安裝一下 vim: apt-get install vim
- 可以看到安裝挺慢的,之所以先安裝 vim 是為了可以編輯 /etc/apt/source.list 更換為國內訪問更快的軟件源,比如將文件中的內容替換為如下阿里云的:
- 重新更新軟件源信息:apt-get update,會發現快很多
- 飛一般的安裝 git 和 python3:apt-get install git python3
3.4 配置 SSH
這一步主要是為了mac 可以 ssh 連接 ubuntu 容器。
3.4.1 安裝 openssh-server
apt-get install openssh-server用于開啟 ssh 服務供外部連接。
3.4.2 配置 sshd
需要更改一下 sshd 的默認配置,編輯文件 /etc/ssh/sshd_config ,大概從 29 行開始主要更改三處,更改后內容如下:
PermitRootLogin yes # 可以登錄 root 用戶 PubkeyAuthentication yes # 可以使用 ssh 公鑰許可 AuthorizedKeysFile .ssh/authorized_keys # 公鑰信息保存到文件 .ssh/authorized_keys 中3.4.3 重啟 sshd
因為 ubuntu 過于精簡,不能使用 service 命令方便的重啟 sshd,這里使用命令 /etc/init.d/ssh restart 進行重啟,重啟是為了讓上面的配置生效。
3.4.4 添加主機的 ssh 公鑰
這里的主機指的就是 macOS,保證此時還是在 ubuntu 容器中。
- 在 HOME 目錄下創建 .ssh 目錄:mkdir ~/.ssh
- 新建文件 ~/.ssh/authorized_keys :touch ~/.ssh/authorized_keys
- 新開一個 macOS 下的終端窗口,執行命令 cat ~/.ssh/id_rsa.pub,復制打印的一行公鑰信息
- 回到 ubuntu 容器中,將第 3 步復制的公鑰粘貼到 ~/.ssh/authorized_keys 中保存。
- 此時完成了 SSH 訪問支持的添加,ctrl + d 退出容器。
3.5 提交修改到鏡像
現在已經推出到正常的 mac 終端窗口中了,容器的修改不會影響到源鏡像,上面的操作我們已經完成了 Ubuntu 的基本配置,并且添加了 SSH 支持,這一步是產生新的鏡像版本。
- 查看剛剛操作的容器信息,執行命令 docker ps -a ,可以看到 mineos 的狀態已經是退出了,主要關注 mineos 的 CONTAINER ID ,復制這個 ID 號,比如為 e5d8c1030724
- 執行下面的命令提交產生 ubuntu 新版本的鏡像:Bash docker commit -m 'add ssh' -a '5km' e5d8c1030724 ubuntu-ssh
- -m,指定提交信息
- -a,指定提交者
- 你需要把 e5d8c1030724 替換為您的容器的 CONTAINER ID
- ubuntu-ssh 是新鏡像的名稱,可以隨意指定
- 使用命令 docker image ls 可以查看當前安裝的鏡像,上述操作正常的話就會看到 ubuntu-ssh 的鏡像信息
- 此時之前創建的容器就沒用了,可以通過命令 docker rm mineos 進行刪除
4. 最終的 ubuntu 容器
有了具有 SSH 支持的 ubuntu 鏡像,我們就可以創建新的 ubuntu 容器,通過以下命令進行創建:
docker run -d -p 26122:22 --name learn ubuntu-ssh /usr/sbin/sshd -D在 macOS 的終端中執行命令 ssh -p 26122 root@localhost 即可連接已經啟動的 ubuntu 容器 learn
為了更方便的連接,可以為容器創建 ssh 連接的主機短名,往 macOS 的 ~/.ssh/config 中添加以下內容:
Host learnHostName localhostUser rootPort 26122此時就可以通過命令 ssh learn 連接 ubuntu 容器 learn 了。
參考:
Docker-SSH連接docker容器?www.jianshu.comUbuntu下"sshd:unrecognized service"?blog.csdn.net博客原文:
mac 下使用 Docker 搭建 ubuntu 環境?www.smslit.top總結
以上是生活随笔為你收集整理的apt ubuntu 指定ipv4_macOS 下使用 Docker 搭建 ubuntu 环境的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python django restfu
- 下一篇: Darknet_Yolov4实战(一)_