1. docker的進程架構(gòu)
- docker服務進程:就是針對docker服務的命令,啟動,重啟
- 接口:通過參數(shù)指定容器的IP和端口,實現(xiàn)對容器的遠程操作
- 客戶端命令行:對docker的操作命令
- 最后學會管理容器的網(wǎng)絡,進程,容器等
2. docker的命令
- 鏡像的拉取
sudo docker search 鏡像名稱 # 搜索鏡像文件
sudo docker pull 鏡像名稱 - 查看鏡像
sudo docker images
- 運行容器
# 簡單運行一下,通常會執(zhí)行一下容器就會掛掉 docker run 鏡像名稱 # 交互式的運行一個的docker容器,-i:交互式命令, -t:開啟一個終端 docker run -it 鏡像名稱 /bin/bash # 后臺運行一個docker容器,并指定運行shell代碼 -d:讓容器后臺運行, -c:運行的shell命令 docker run -d 鏡像名稱 /bin/sh -c "while true;do echo 辛苦了,學習linux; sleep 1;done" # 運行容器并指定名稱 docker run --name xxx -it 鏡像名稱 /bin/bash
# 運行容器并指定端口映射 docker run --name xxx -it 鏡像名稱 -p 6000:5000
# 運行容器并制定端口映射,文件夾映射和環(huán)境PATH映射
docker run --name xxx -it 鏡像名稱 -p 6000:5000 -v 宿主機目錄:容器目錄 -e
# 運行容器指定容器的網(wǎng)絡模式
docker run -d --name xxx --net=host# 進入一個存活的容器
docker exec -it 容器id /bin/bash
# 退出容器
exit - 停止容器
sudo docker stop 容器ID/容器名字
- 查看容器
sudo docker ps # 查看存活的容器 sudo docker ps -a # 查看所有的容器 - 啟動容器
sudo docker start 容器名稱/容器ID
- 查看容器的詳情
sudo dockder inspect 容器名稱/容器ID
sudo docker inspect e6b | grep -i ipaddr

-
停止一個容器
sudo docker stop 容器ID/容器名字
-
重啟一個容器
sudo docker restart 容器ID/容器名字
-
刪除一個容器
sudo docker rm 容器ID/容器名稱 # 必須是非正在運行的容器
-
刪除一個鏡像
sudo docker rmi image的名字/鏡像ID # 確保沒有容器使用該鏡像(運行或者停止的容器)
-
查看一個運行容器的所有進程
sudo docker top 容器ID/容器名字

-
查看一個容器的端口映射
sudo docker port 容器ID

-
查看運行容器消耗的資源
sudo docker stats 容器ID

-
獲取容器內(nèi)的文件夾
sudo docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
-
放入容器內(nèi)一個文件夾
sudo docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
3. 訪問容器內(nèi)的nginx
3.1 搜索并下載nginx
sudo docker search nginx

根據(jù)鏡像的名字下載鏡像
sudo docker pull nginx

查看本地的鏡像文件
sudo docker images

3.2 運行并訪問nginx
3.2.1 運行nginx鏡像
返回該容器的一個ID值
sudo docker run -d -p 80:80 nginx # d:后臺運行,p實現(xiàn)容器和宿主機端口的映射

查看存活的容器
sudo docker ps

在本地瀏覽器中輸入宿主機IP即可訪問nginx

網(wǎng)絡流量走向

4. 下載常用的docker
4.1 下載redis
sudo docker search redis
sudo docker pull redis

4.2 下載ubutun
sudo docker search ubuntu
sudo docker pull ubuntu

5. docker 鏡像分層原理
我們在下載一個鏡像的時候,細心一點會發(fā)現(xiàn),下載的時候會分層下載

原因就是鏡像會分層保存,很多容器共用一些層次,分層儲存就可以節(jié)省容器的內(nèi)存空間
6. 批量操作容器
只查看容器的ID
sudo docker ps -q

6.1 停止所有正在運行的容器
sudo docker stop `sudo docker ps -q`

6.2 刪除所有的容器
sudo docker rm `sudo docker ps -aq`

7. 查看某個鏡像可用的所有版本
但是有一點,需要使用外網(wǎng)才可以,以centos為例
https://hub.docker.com/v2/repositories/library/centos/tags/
curl -s https://hub.docker.com/v2/repositories/library/centos/tags/ | jq
然后下載指定的版本

8. 操作dockerHub
以下操作必須使用外網(wǎng)才可以
8.1 注冊一個docker hub
link:https://hub.docker.com/

8.2 登錄個人賬號

8.3 在宿主機登錄個人docker賬號
sudo docker login

8.4 生成本地鏡像
以hello-word鏡像為例,發(fā)送到自己的docker hub中,使用如下命令
sudo docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

8.5 推送本地鏡像到自己賬號中
sudo docker push IMAGE


此時自己的dockerhub中就有該鏡像了
8.6 將自己賬號的鏡像拉下來
我需要將本地的刪除,然后拉取


9 根據(jù)容器生成新的image
通常我們根據(jù)一個image,然后安裝了很多的服務,我們希望以后基于該容器進行部署,我們就可以將該容器生成一個新的image
9.1 將容器生成image
sudo docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

9.2 推送image


10. 本地鏡像的導出和導入
10.1.1 導出
sudo docker save 鏡像ID/鏡像名稱 > 文件名.tar # 導出的文件時tar的格式

10.1.2 導入
sudo docker load -i 文件名.tar # 導出的文件時tar的格式


浙公網(wǎng)安備 33010602011771號