搭建深度學(xué)習(xí)環(huán)境之二:遠(yuǎn)程連接Docker容器

目錄:

  • 1.拉取Ubuntu鏡像并啟動(dòng)Docker容器
  • 2.進(jìn)入容器,安裝一些必要的軟件:sudo、vim、wget、ssh等
  • 3.遠(yuǎn)程連接Docker容器
  • 4.鏡像拷貝

1.拉取Ubuntu鏡像并啟動(dòng)Docker容器

首先,從DockerHub上拉取一個(gè)ubuntu鏡像:docker pull ubuntu:18.04

然后,啟動(dòng)容器:docker run -itd -p 50001:22 ubuntu:18.04
(-p: 指定端口映射,格式為:主機(jī)(宿主)端口:容器端口。這樣,當(dāng)我們?cè)L問(wèn)宿主機(jī)的50001端口時(shí),自動(dòng)映射到當(dāng)前容器的22端口。)
啟動(dòng)成功,使用 docker ps 查看正在運(yùn)行的容器,如下圖:

2.進(jìn)入容器,安裝一些必要的軟件

進(jìn)入容器:docker exec -it 7338ded2d7e6 /bin/bash

掃描軟件源服務(wù)器,建立更新軟件包列表:apt-get update

安裝sudo:apt-get install sudo
設(shè)置root賬號(hào)的密碼:sudo passwd root

安裝vim:apt-get install vim
安裝wget(使用VSCode連接容器時(shí)需要):apt-get install wget

安裝ssh:apt-get install openssh-server
查看ssh服務(wù)啟動(dòng)情況:service ssh status
啟動(dòng)ssh服務(wù):service ssh start

ssh默認(rèn)是禁止root賬號(hào)遠(yuǎn)程登錄,可修改ssh配置文件進(jìn)行設(shè)置。
ssh允許root賬號(hào)遠(yuǎn)程登錄:vim /etc/ssh/sshd_config
添加一行:PermitRootLogin yes
重啟ssh服務(wù):service ssh restart

每次重啟容器后,都要手動(dòng)啟動(dòng)ssh服務(wù),這樣太繁瑣了。
通過(guò)添加啟動(dòng)命令到/root/.bashrc文件中實(shí)現(xiàn)ssh自啟動(dòng)。
修改配置:sudo vim /root/.bashrc
添加一行:/etc/init.d/ssh start 或 service ssh start
使修改的配置生效:source /root/.bashrc

至此,基本環(huán)境已安裝和配置完畢。
使用docker commit命令將容器保存為鏡像,以備份當(dāng)前環(huán)境。

退出容器:exit
從容器創(chuàng)建一個(gè)新的鏡像:docker commit 7338ded2d7e6 lyf/ubuntu_ssh:18.04
保存鏡像成功,使用docker images命令可看到新建的鏡像:

3.遠(yuǎn)程連接Docker容器
3.1 宿主機(jī)(啟動(dòng)容器的虛擬機(jī))使用ssh命令連接容器:

命令:ssh root@0.0.0.0 -p 50001

3.2 遠(yuǎn)程主機(jī)使用ssh命令連接容器:

命令:ssh root@192.168.43.42 -p 50001

3.3 使用VSCode遠(yuǎn)程連接容器:

先在VSCode的"擴(kuò)展"上搜索并安裝Remote - SSH,然后在"遠(yuǎn)程資源管理器"的config配置文件中添加配置:

Host liyunfei_docker
    HostName 192.168.43.42
    Port 50001
    User root

保存config文件后點(diǎn)擊connect to host按鈕即可連接。

4.鏡像拷貝

Docker的特點(diǎn)在于“一次構(gòu)建,到處運(yùn)行”。它可以將環(huán)境及代碼保存為鏡像,將該鏡像拷貝到其他的主機(jī)上就可以實(shí)現(xiàn)環(huán)境的復(fù)用。

實(shí)現(xiàn)鏡像拷貝的兩種方式:

  • 1)通過(guò)docker save命令將指定鏡像保存成tar歸檔文件。
    通過(guò)docker load命令導(dǎo)入使用docker save命令導(dǎo)出的鏡像。
  • 2)通過(guò)docker push命令將指定鏡像推送到DockerHub鏡像倉(cāng)庫(kù)上。
    通過(guò)docker pull命令從DockerHub鏡像倉(cāng)庫(kù)拉取指定的鏡像。
    (DockerHub是公共的鏡像倉(cāng)庫(kù),有條件可以基于Harbor搭建一個(gè)私有的鏡像倉(cāng)庫(kù)。)
第一種方式:docker save 和 docker load

將鏡像保存為tar文件,命令:docker save -o tar文件名 鏡像名

將tar文件拷貝到另一臺(tái)裝有Docker的主機(jī)上(使用FileZilla、XShell、SecureCRT等工具,或者直接使用scp命令進(jìn)行拷貝)。

導(dǎo)入鏡像:docker load -i tar文件名

第二種方式:docker push 和 docker pull

先到DockerHub官網(wǎng)上注冊(cè)一個(gè)賬號(hào)吧:https://registry.hub.docker.com/

登入DockerHub:docker login -u 用戶名 -p 密碼

標(biāo)記本地鏡像,將其歸入某一倉(cāng)庫(kù)。
docker tag lyf/ubuntu_ssh_curl_gcc:18.04 lyf524951805/ubuntu_ssh_curl_gcc:18.04

push鏡像到DockerHub倉(cāng)庫(kù):
docker push lyf524951805/ubuntu_ssh_curl_gcc:18.04

登錄DockerHub賬號(hào),可以看到鏡像已成功推動(dòng)到倉(cāng)庫(kù)中。

登出DockerHub:docker logout

在任何裝有Docker的主機(jī)上,執(zhí)行pull命令就可以拉取該鏡像:
docker pull lyf524951805/ubuntu_ssh_curl_gcc:18.04

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容