目錄:
- 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
