Docker技術及其使用
Docker技術及其使用
Docker映象(image)
Docker 映象就是一個只讀的模板。映象可以用來建立 Docker 容器。Docker 提供了一個很簡單的機制來建立映象或者更新現有的映象,使用者甚至可以直接從其他人那裡下載一個已經做好的映象來直接使用
Docker容器(container)
Docker 利用容器來執行應用。容器是從映象建立的執行例項。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的,保證安全的平臺。
Docker倉庫(repository)
倉庫是集中存放映象檔案的場所。有時候把倉庫和倉庫註冊伺服器( Registry )混為一談,並不嚴格區分。實際上,倉庫註冊伺服器上往往存放著多個倉庫,每個倉庫中又包含了多個映象,每個映象有不同的標籤 (tag) 。倉庫分為公開倉庫 (Public) 和私有倉庫 (Private) 兩種形式。最大的公開倉庫是 Docker Hub ,存放了數量龐大的映象供使用者下載。國內的公開倉庫包括 Docker Pool 等,可以提供大陸使用者更穩定快讀的訪問。當用戶建立了自己的映象之後就可以使用 push 命令將它上傳到公有或者私有倉庫,這樣下載在另外一臺機器上使用這個映象時候,只需需要從倉庫上 pull 下來就可以了。
基本的Docker命令
1、Docker的安裝
sudo apt install docker.io
2、Docker啟動及狀態查詢
sudo service docker start
sudo service docker status
3、檢視Docker的版本
sudo docker version
4、檢視本地映象
sudo docker images
5、下載映象檔案
sudo docker pull ubuntu
6、執行Ubuntu映象
docker run -i -t ubuntu /bin/bash
7、刪除映象檔案
sudo docker rmi -f hello-world
8、檢視已經啟動的Docker服務(容器)
sudo docker ps –a
9、停止docker服務
sudo docker stop image-name
10、登陸Docker
sudo docker login
https://hub.docker.com/
11、儲存修改後的Docker容器
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS說明:
-a :提交的映象作者;
-c :使用Dockerfile指令來建立映象;
-m :提交時的說明文字;
-p :在commit時,將容器暫停
12、docker可以支援把一個宿主機上的目錄掛載到映象裡
docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash
docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash
13、Docker容器的刪除
docker rm CONTAINER ID
14、Docker映象的刪除
docker rmi
15、Docker容器啟動start/stop/restart
docker start/stop/restart
docker start命令使用-i選項來開啟互動模式
16、查詢映象和容器的詳細資訊
docker inspect
docker info
17、連線正在執行的容器
docker attach CONTAINER ID/name
18、退出容器不關閉
ctrl + d 退出關閉容器, ctrl + p + q 退出容器不關閉
19、Docker的Ubuntu映象安裝的容器無ifconfig命令和ping命令
解決:
apt-get update
apt install net-tools # ifconfig
apt install iputils-ping # ping
20、docker Ubuntu安裝mysql
apt-get update
apt-get install -y mysql-server mysql-client
21、Docker容器和主機檔案拷貝
1)從容器內拷貝檔案到主機上
docker cp <containerId>:/file/path/within/container /host/path/target
2)從主機內拷貝檔案到容器上
sudo docker cp host_path containerID:container_path
3)問題 FATA[0000] Error: Path not specified
Version 1.6.2 doesn't allow copying from host to container, you need to upgrade to at least 1.8 for that support
22、docker版本升級
1)、Docker源安裝指定版本:
sudo apt-get install apt-transport-https
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
sudo bash -c "echo deb https://get.docker.io/ubuntu docker main >/etc/apt/sources.list.d/docker.list"
sudo apt-get update --更新軟體源
sudo apt-cache search docker --查詢需要更新的docker版本
sudo apt-get install lxc-docker-1.9.1
2)錯誤的解決
docker安裝完成後執行sudo service docker start,提示錯誤:Failed to start docker.service: Unit docker.service is masked.
解決方案:
systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service
23、docker 容器備份
1)生成docker映象
docker commit -p 30b8f18f20b4 container-backup
2)我們想要在Docker註冊中心上傳或備份映象,我們只需要執行 docker login 命令來登入進Docker註冊中心,然後推送所需的映象即可
(1)docker login
(2)docker tag a25ddfec4d2a arunpyasi/container-backup:test
(3)docker push arunpyasi/container-backup
3)如果我們不想備份到docker註冊中心,而是想要將此映象儲存在本地機器中,以供日後使用,那麼我們可以將其作為tar包備份。要完成該操作,我們需要執行以下 docker save 命令。
docker save -o ~/container-backup.tar container-backup
tar -zcvf ubuntu2-backup.tar.gz container-backup.ta
24、docker 恢復容器
1)在我們成功備份了我們的Docker容器後,我們現在來恢復這些製作了Docker映象快照的容器。如果我們已經在註冊中心推送了這些Docker映象,那麼我們僅僅需要把那個Docker映象拖回並直接執行即可。
docker pull arunpyasi/container-backup:test
2)如果我們將這些Docker映象作為tar包檔案備份到了本地,那麼我們只要使用 docker load 命令,後面加上tar包的備份路徑,就可以載入該Docker映象了。
tar -zxvf ubuntu2-backup.tar.gz
docker load -i ~/container-backup.tar
3)使用docker image檢視
25、extc 命令
使用attach命令經常會卡段,可以使用exec命令替代
docker exec -it ubuntu /bin/bash
上面用attach進入的用exit會退出容器必須用ctrl P Q退出才能繼續後臺執行,exec的 用exit也不會真正退出容器繼續後臺執行 用name或id都可以
26、常用命令
docker run --name ubuntu -it ubuntu:16.04 /bin/bash
docker exec -it 96740370a5da /bin/bash