一、 實驗前置知識
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的Linux機器上,也可以實作虛擬化,容器是完全使用沙箱機制,相互之間不會有任何介面,
二、 實驗步驟
第一步安裝docker
1.實驗環境環境配置:
系統鏡像版本:ubuntu-20.04.1-desktop-amd64.iso
Docker版本:docker version 19.03.8
VMware Workstation版本: VMware? Workstation 15 Pro
2.右擊桌面>在終端打開,此步操作是為了打開linux下的命令列界面,如圖

3. docker運行時需要到管理員用戶權限,現在我們是普通用戶,終端內輸入命令 su root切換為root用戶,
如果是第一次安裝ubuntu,管理員用戶密碼未設定,此時輸入sudo passwd root設定root密碼,如圖

3.ubuntu下安裝docker
apt-get update //更新軟體源中的所有軟體串列

apt install docker.io //安裝docker

docker -v //查看版本

第二步使用docker
1.從docker鏡像倉庫下載docker鏡像,下載鏡像速度受網速波動和docker鏡像源影響
docker pull xfv5/ubuntu:php5.5 //下載鏡像

2.如果網速不好可本地匯入提供的muban.tgz鏡像
docker load -i muban.tgz

3.查看本地鏡像倉庫鏡像
docker images

4.啟動本地鏡像,使用image id 前三位即可
docker run -d -p80:80 7de(鏡像id)

//啟動鏡像,將鏡像內的80埠映射到本地的80埠上面;
-p80:80 第一個80為本地80埠,第二個80為鏡像內服務埠
5.查看行程
docker ps
//查看運行鏡像的容器行程
6.進入容器
docker exec -it e4d(容器id) /bin/bash
//進入容器,使用行程前三位id即可(可以理解為進入作業系統進行操作)

7.此時我們相當于進入了一個linux的作業系統,我們可以嘗試輸入一些常用的linux命令看下,比如ls,pwd等,

8.更改容器內容
vim 1.txt //在容器內新建1.txt檔案并且輸入 I’m hero

http://127.0.0.1:80/1.txt //本機進行訪問,驗證修改是否生效

容器內輸入exit,退出容器到宿主機

9.檔案互動
docker cp 2.txt e4d(容器id):/var/www/html/
//拷貝宿主機當前目錄1.txt到容器中;
e4d 是當前正在運行容器行程的前三位;
/var/www/html 是當前容器內網站的根目錄;

http://127.0.0.1:80/2.txt //本機進行訪問,驗證修改是否生效

10.生成新的鏡像
docker commit e4d(容器id) hellword:1.0
//將更改后的容器保存為新的鏡像(如果不將更改后的容器保存為新的鏡像,當前行程停止后,容器內新增資料消失);
e4d為當前容器行程;
hellword:1.0 分別對應鏡像倉庫中REPOSITORY和TAG ,大家可以理解為這是新生成鏡像的名稱,

11.運行新生成的鏡像
docker run -d -p81:80 deb //啟動,因本地80埠被占用,所以我們將鏡像80埠映射到本地的81埠上面

12.驗證修改的內容是否在鏡像內
訪問http://127.0.0.1:81/2.txt

13.將修改完的鏡像匯出
docker save 7de(鏡像id) |gzip > helloworld.tgz
//將鏡像id前三位是7de的鏡像匯出到本地,并且將其命名為muban.tgz

洗掉鏡像和容器
洗掉docker中的鏡像我們可以使用如下命令:
docker rmi 鏡像id
洗掉docker中的容器可以使用如下命令:
docker rm 容器id
使用如下命令可以查看當前正在運行的容器
docker ps
對于已退出的容器,可以使用如下命令進行查看:
docker ps -a
例如:
查看當前正在運行的容器:

查看所有鏡像:

查看所有已退出的容器:

下載我們要洗掉鏡像"button-api":

此時發現洗掉失敗,根據提示資訊可以知道,當前我們要洗掉的鏡像正在被已停止id為"a4516aee2e7a"的容器所使用,所以我們必須先洗掉這個已停止的容器,才可以洗掉鏡像,

洗掉容器之后重新洗掉"button-api"鏡像:

現在發現已洗掉成功,
重新查詢所有鏡像,發現"button-api"已被洗掉:

在洗掉時還可能遇到如下情況,多個鏡像id相同,此時洗掉也會不成功:

此時我們還可以根據"REPOSITORY"和"TAR"進行洗掉:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/465058.html
標籤:其他
下一篇:Java基礎——函式式介面
