1.docker search : 從Docker Hub查找鏡像
docker search [OPTIONS] 鏡像名
OPTIONS說明:
-
--automated :只列出 automated build類型的鏡像;
-
--no-trunc :顯示完整的鏡像描述;
-
-s :列出收藏數不小於指定值的鏡像。

可以看到返回了很多包含關鍵字的鏡像,其中包括鏡像名字、描述、收藏數(表示該鏡像的受關注程度)、是否官方創建(OFFICIAL)、是否自動構建 (AUTOMATED)。
2.拉取鏡像
docker pull 鏡像:版本號
如果不指定版本號,默認拉下來是最新的
3.運行
鏡像是容器的基礎,每次執行 docker run
的時候都會指定哪個鏡像作為容器運行的基礎
現在讓我們以定制一個 Web 服務器為例子,來講解鏡像是如何構建的。
$ docker run --name webserver -d -p 80:80 nginx
這條命令會用 nginx
鏡像啟動一個容器,命名為 webserver
,並且映射了 80 端口(左邊的也可以改成其他端口為對外暴露的,右邊的是docker中的),這樣我們可以用瀏覽器去訪問這個 nginx
服務器。 輸入localhost
現在,假設我們非常不喜歡這個歡迎頁面,我們希望改成歡迎 Docker 的文字,我們可以使用 docker exec
命令進入容器,修改其內容。
$ docker exec -it webserver bash root@3729b97e8226:/# echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html root@3729b97e8226:/# exit exit
我們以交互式終端方式進入 webserver
容器,並執行了 bash
命令,也就是獲得一個可操作的 Shell。
然后,我們用 <h1>Hello, Docker!</h1>
覆蓋了 /usr/share/nginx/html/index.html
的內容。
現在我們再刷新瀏覽器的話,會發現內容被改變了。
現在我們定制好了變化,我們希望能將其保存下來形成鏡像。
要知道,當我們運行一個容器的時候(如果不使用卷的話),我們做的任何文件修改都會被記錄於容器存儲層里。而 Docker 提供了一個 docker commit
命令,可以將容器的存儲層保存下來成為鏡像。換句話說,就是在原有鏡像的基礎上,再疊加上容器的存儲層,並構成新的鏡像。以后我們運行這個新鏡像的時候,就會擁有原有容器最后的文件變化。
$ docker commit \ --author "Tao Wang <twang2218@gmail.com>" \ --message "修改了默認網頁" \ webserver \ nginx:v2
其中 --author
是指定修改的作者,而 --message
則是記錄本次修改的內容。這點和 git
版本控制相似,不過這里這些信息可以省略留空。
新的鏡像定制好后,我們可以來運行這個鏡像。
docker commit
命令,手動操作給舊的鏡像添加了新的一層,形成新的鏡像
4.運行的參數
-d :代表后台運行容器,返回容器ID
--name: 自定義容器的名稱,不加這命令docker會隨便給一個名給你,所以建議打上這命令
-p :代表映射的端口 本地端口:鏡像的默認端口(注意,每個軟件默認端口是不同的)
-e: 配置mysql的root密碼
-i: 以交互模式運行容器,通常與 -t 同時使用;
-t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;
-P: 隨機端口映射,容器內部端口隨機映射到主機的高端口
--volume , -v: 綁定一個卷
docker run -p 12345:3306 --name mysqlyf -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
使用鏡像centos:latest以交互模式啟動一個容器,在容器內執行/bin/bash命令。
runoob@runoob:~$ docker run -it centos:latest /bin/bash root@b8573233d675:/#