1.2 Docker容器詳解以及使用

Dockers簡介

軟件開發中最爲麻煩的事情可能就是配置環境了。由於用戶使用的操作系統具有多樣性,即便是使用跨平臺的開發語言都不能保證代碼能夠在各種平臺下都可以正常運轉,而且可能在不同的環境下我們的軟件需要依賴的其他軟件包也是不一樣的。

Docker屬於對Linux容器技術的一種封裝(利用了Linux的namespace和cgroup技術),它提供了簡單易用的容器使用接口,是目前最爲流行的Linux容器解決方案。Docker將應用程序與該應用程序的依賴打包在一個文件裏面,運行這個文件,就會生成一個虛擬容器。程序在這個虛擬容器裏面運行,就好像在真實的物理機上運行一樣。有了Docker就再也不用擔心環境問題了。

目前,Docker主要用於以下幾個方面:

  1. 提供一次性的環境。
  2. 提供彈性的雲服務(利用Docker很容易的實現擴容和收縮)。
  3. 實踐微服務架構(隔離真是環境在容器中運行多個服務)。

我們通過以下拓撲圖來解釋Docker詳解容器的作用以及使用方法。

在這裏插入圖片描述
Dockers容器是以鏡像爲中心的,我們可以通過以下方法來使用Dockers容器:
1、pull:從倉庫下載鏡像
2、run:運行鏡像,使其成爲一個容器
3、commit:將容器製作成一個鏡像
4、build:通過Docker file(代碼)構建一個鏡像文件
5、save:將鏡像壓縮爲tar文件保存
6、load:將tar文件轉換爲鏡像使用
7、push:去倉庫註冊上傳

構造nginx容器詳解以上方法

1、開啓docker服務

[root@localhost ~]# docker run -d -p 80:80 nginxsystemctl start docker

2、下載nginx鏡像(pull)

[root@localhost ~]# docker run -d -p 80:80 nginxdocker pull nginx

3、查看是否下載成功

[root@localhost ~]# docker run -d -p 80:80 nginxdocker images

4、然後將鏡像運行成一個容器

[root@localhost ~]# docker run -d -p 80:80 nginx
982b997f1cb47b2fded4e962f21d9304d5a269dd3c189721b5161f2844269932

下邊是以映射文件的方法運行容器。

[root@localhost ~]# docker run -d -p 88:80 --name mynginx -v `pwd`:/usr/share/nginx/html nginx:1.13

這裏的參數的作用爲:
-d:後臺運行
-p:指定端口映射,內部端口80與外部端口80建立映射關係
命令運行後下面的一串字符代表運行的容器的ID
–name指定名字爲mynginx
-v指定映射文件
nginx:1.13爲指定鏡像版本,如果不指定則默認爲最新版

5、查看正在運行的容器

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
982b997f1cb4        nginx               "nginx -g 'daemon ..."   2 minutes ago       Up 2 minutes        0.0.0.0:80->80/tcp   vigilant_davinci

當然我們可以映射多個端口,81:80
6、這是就講容器運行起來了(run),我們可以通過以下命令對容器進行修改,雖然容器ID很長,但是我們通過幾個簡單的能夠識別容器的字符就行

[root@localhost ~]# docker exec -it 98 bash
root@982b997f1cb4:/# 

7、進來以後我們通過ls查看可以發現,容器就類似於一個虛擬機

root@982b997f1cb4:/# ls
bin   dev  home  lib64	mnt  proc  run	 srv  tmp  var
boot  etc  lib	 media	opt  root  sbin  sys  usr

8、找到默認的index.html文件

root@982b997f1cb4:/# cd /usr/share/nginx/html/
root@982b997f1cb4:/usr/share/nginx/html# ls
50x.html  index.html
root@982b997f1cb4:/usr/share/nginx/html# cat index.html

9、修改index.html文件

root@982b997f1cb4:/usr/share/nginx/html# echo 'hello world' > index.html
root@982b997f1cb4:/usr/share/nginx/html# cat index.html
hello world

10、這時通過IP地址進入網頁查看就可以發現,頁面已經變爲hello world了

11、鏡像另存爲並指定鏡像名字,再查看鏡像後發現已經有了名爲m1的鏡像,同樣的這個鏡像和我們所下載的鏡像沒有什麼不同,這個鏡像也可以運行起來作爲一個容器使用。(commit)

[root@localhost ~]# docker commit 98 m1
sha256:3f2294741b3b39f15e3c0e0cc245873f7ece00ed183030035696c3b3d4400e6d
[root@localhost ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
m1                      latest              3f2294741b3b        11 seconds ago      126 MB

12、這樣就製作了一個鏡像了,還有另一種方式就是用Docker file的方式創建鏡像。

[root@localhost ~]# vim index.html

在文件裏編輯內容如下(build)

FROM nginx
#FROM指定Docker構建的基礎鏡像
ADD ./ /usr/share/nginx/html/
#將當前目錄下的所有文件拷貝到/usr/share/nginx/html/下

然後我們在當前目錄下創建一個index.html的文件

[root@localhost ~]# vim index.html

在這個文件中隨便編輯一點內容

wai bu de wenjian

然後通過以下命令構建鏡像( . 指定爲當前目錄下的docker file 文件)

[root@localhost ~]# docker build -t m2 .
Sending build context to Docker daemon 610.2 MB
Step 1/2 : FROM nginx
 ---> 540a289bab6c
Step 2/2 : ADD ./ /usr/share/nginx/html/
 ---> e29a14c222bc
Removing intermediate container a3a39c54bc48
Successfully built e29a14c222bc

這樣一個名爲m2的鏡像就構建完成了,運行它

[root@localhost ~]# docker run -d -p 100:80 m2
221569f2a0b8c23a86cf8ebc490eac58b01b5713dcf80432e5fdfdd4e7e17627

然後我們可以通過本地瀏覽器指定端口訪問這個網頁:192.168.220.128:100
這時我們也完成了通過Docker file構建了一個鏡像文件

13、我們還可以通過以下命令將一個鏡像保存到文件裏(save)

[root@localhost ~]# docker save m1 >1.tar

查看後發現已經有了這個1.tar文件

14、同樣我們可以通過命令將上面保存的文件導入到docker鏡像中(load)

[root@localhost ~]# docker load < 1.tar
3792108897fc: Loading layer 14.85 kB/14.85 kB
Loaded image: m1:latest

15、push需要去倉庫註冊上傳,這裏不再贅述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章