Docker 基本使用

基本理解

鏡像、容器和倉庫

這三個是docker裏常見的概念,鏡像可以理解成一個個操作系統的安裝包,而容器就是我們通過這些安裝包安裝好的操作系統,倉庫則是網上很多存放各種鏡像提供你下載的地方

docker是什麼

docker就是一個存放了各種容器的平臺,供我們來使用。可以理解成:docker從倉庫下載下來各種鏡像安裝包,然後在docker平臺上安裝他們成容器並存放起來,接着我們就可以用這些根據我們需求選擇的容器來做我們想做的事了

爲什麼要用docker

假如你要部署一個網站,那麼你可能需要一臺服務器,然後安裝環境、配置七七八八的東西,是不是特別麻煩。這個時候有人在網上提供了配置好各種環境的系統,你只要根據需求下載你需要的系統下來就能快速部署你的網站,而且也不怎麼費你電腦的資源,或者當你根據自己需求配置好這個系統,還可以再把它弄成新的鏡像提供給和你要跑同樣環境的人,你說這麼好的東西是不是很心動

更多瞭解參考

http://dockone.io/article/6051

安裝環境

配置要求

電腦開啓虛擬化,如何查看是否開啓參考:https://jingyan.baidu.com/article/48206aea6e9f9d216ad6b3c6.html

安裝教程

windows參考:https://www.runoob.com/docker/windows-docker-install.html
(其他系統安裝的也都在裏面)

配置加速器

由於docker hub是國外的平臺,如果不開啓加速器,下載鏡像的話賊慢,因此很有必要配置一下加速器來加速下載,配置參考:
https://blog.csdn.net/tjsahwj/article/details/88181779

入門示例

建議在配置完前面的加速器後再嘗試,不然下載一個鏡像得花不知道多久時間...,示例代碼如下(按順序敲就可以了):

$ docker-machine env
# 查看docker環境
$ eval $("E:\OFFICE\Docker Toolbox\docker-machine.exe" env)
# 執行環境
$ docker search python
# 搜索python的docker鏡像,根據第一列的NAME來選擇一個下載,這裏選擇第一個
$ docker pull python
# 下載python的鏡像,也可以下載nginx的鏡像,這個可能太大了
$ docker images
# 查看下載的鏡像,可以發現多了一列python的
$ docker run -it python
# 可以看到進入了python的命令行,因爲這個鏡像進入的默認命令就是`python3`,因此會自動打開命令行
# 可以輸入:`exit()`退出命令行
$ docker run --name aaa -it python /bin/bash
# 和剛纔一樣,都是創建python鏡像的容器,不過這次給容器取名叫aaa,並且輸入/bin/bash打開terminal終端
# 這個時候就可以輸入各種linux系統的命令如:`ls`了,這個就是docker最主要的內容
# 退出時可以通過組合鍵(`ctrl+p+q`)、命令(`exit`)來退出,前者不關閉容器,後者關閉
$ docker ps
# 查看正在運行的容器,如果要查看所有容器,則後面加上:-a
# 在這裏記下容器ID的前幾位(只要前面不重複,1位2位都行)
# 前面run命令用了兩次,第一個沒取名,第二個取名了,所以第一個記下ID
# 假如容器ID是(c6789...),前兩位就能判斷出是這個容器,那麼記下c6就行了
$ docker stop c6 first
# 關閉c6和first這兩個容器
$ docker rm c6 first
# 刪除這兩個容器

通過上面的示例,應該可以大概瞭解docker是什麼,其實可以理解成一個定製的操作系統(也不完全是,但是大體感覺差不多),比如配有java、python環境的操作系統,然後下載下來直接用,並且可以通過命令把我們本地的文件拷貝到裏面去運行等等,總之就是個特別方便的東西啦

常用命令

查看版本信息
docker info
查看幫助
docker --help

注:
如果是想查看某個命令的使用幫助則可以使用:

docker 命令 --help
查看環境
docker-machine env
執行環境

查看命令的輸出結果裏,最後一句去掉註釋符號(#)就是

搜索鏡像
docker search 名稱
// 舉例:docker search nginx
下載鏡像
docker pull 地址/名稱
// 舉例:docker pull ubuntu:13.10
// 舉例2:docker pull hub.c.163.com/public/nginx:1.2.1
查看鏡像
docker images
刪除鏡像
docker rmi 鏡像ID(或:鏡像名:tag名,下同)
docker rmi $(docker images -q)
// 一次性刪除所有的鏡像,-q參數獲取所有鏡像的ID
設置標籤
docker tag 鏡像ID 倉庫名:標籤名
// 舉例:docker tag 860c279d2fec runoob/centos:dev
創建容器
docker run -綁定參數 IP:本機被映射端口:映射端口(可選) --name 容器命名(可選) -運行參數 鏡像名 執行命令(/bin/bash爲打開命令行)
// 舉例:docker run -p 8080:80 --name nginx -it hub.c.163.com/library/nginx /bin/bash
// 執行該容器裏的/bin/bash文件,即打開命令行交互窗口
// 舉例2:docker run -d -p 5000:5000 training/webapp python app.py
// 執行該容器裏的app.py文件
// 舉例3:docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
// 比上面的多綁定了IP地址,以及選擇udp
// 舉例4:docker run -itv //e/test:/home python /bin/bash
// 將本地的E盤共享文件夾test掛載到容器的/home路徑下

此時訪問對應IP(默認爲其提供的私有IP):本機被映射端口即可,若不知道IP,可以通過下面命令查看:

docker-machine ls

注:

-t   在容器內開啓一個終端
-i   允許往容器內輸入交互命令
-it  結合上面兩條可以得出該參數代表進入該容器當中的終端運行
-d   代表後臺運行
-p   將容器內部使用的端口映射到我們使用主機的指定端口上
-P   將容器內部使用的端口映射到我們使用主機的隨機高位端口上
-v   指定本地共享目錄掛載到容器目錄當中
查看容器端口綁定
docker port 容器ID(前幾位即可,只要不重名,容器名稱也可以,後同) 端口號
退出容器
ctrl+p+q  // 退出不關閉容器
exit  // 退出並關閉容器
查看運行的容器
docker ps  // 查看正在運行的容器

注:

-a  查看所有運行過的容器
查看容器輸出
docker logs 容器ID
重啓容器
docker restart 容器ID
停止容器
docker stop 容器ID
docker kill 容器ID
刪除容器
docker rm 容器ID
docker rm $(docker ps -q -a)
// 一次性刪除所有的容器

注:
需要容器停止時才能進行刪除操作

啓動容器
docker start 容器ID
向容器發送命令
docker exec -d 容器ID 命令
進入容器
docker attach 容器ID

注:
進入容器的方法好幾種,這個是比較常用的,其他詳細可參考:
https://www.cnblogs.com/xhyan/p/6593075.html

查看容器IP
cat /etc/hosts  // 容器內部輸入命令
拷貝本機文件到容器
docker cp 本地文件路徑 容器名稱:容器裏的路徑

參考:https://jingyan.baidu.com/article/09ea3ede52323fc0afde3956.html

製作並上傳鏡像

第一步:登錄docker hub賬號(沒有創建一個:地址
docker login
第二步:創建本地自定義鏡像
方法1:commit命令創建
docker commit -m "說明" 容器ID 新鏡像名:標籤
// 舉例:docker commit -m "第一個自定義鏡像" xxx dawsonenjoy/python:latest
// 建議鏡像名以:docker hub賬號名/倉庫名來命名,不然後面上傳鏡像時容器出錯

此時輸入:docker images,就可以發現自己創建的鏡像了,這種方法是根據容器來創建鏡像,並且操作簡易,個人比較推薦

方法2:通過dockerfile創建

參考下面鏈接:
https://www.cnblogs.com/qiaoyeye/p/10677136.html
https://www.cnblogs.com/lsgxeva/p/8746644.html
這種方法是根據鏡像結合自定義命令來創建鏡像

第三步:上傳鏡像
docker push 鏡像名
上傳鏡像出現錯誤:denied: requested access to the resource is denied解決

參考:
https://blog.csdn.net/wzygis/article/details/78205867
https://blog.csdn.net/shoneworn/article/details/80622268

製作並保存鏡像/容器到本地

1.save方式保存鏡像/容器到本地文件
docker save -o 新文件名  鏡像/容器ID
save命令載入鏡像文件
docker load < 文件名

此時輸入:docker images會發現多了個鏡像
詳細參考:https://www.cnblogs.com/lsgxeva/p/8746644.html

2.export方式保存容器到本地文件
docker export -o xxx.tar 容器ID
import命令載入docker鏡像文件
docker import xxx.tar 新鏡像名

這兩者區別可以參考下面鏈接:
https://my.oschina.net/zjzhai/blog/225112
https://blog.csdn.net/liukuan73/article/details/78089138
(前者文件大,後者文件小;前者偏向製作鏡像,後者偏向快照;前者可以回滾,後者不能)

docker鏡像下載地址

官方

https://hub.docker.com/search?image_filter=official&type=image

國內

阿里雲鏡像:https://promotion.aliyun.com/ntms/act/kubernetes.html
網易雲鏡像:https://c.163yun.com/hub#/m/home/
daoclub鏡像:https://hub.daocloud.io/

docker可視化工具kitematic

就是一個能夠操作docker的界面程序,如果上面的內容你大致都懂了的話,那這個怎麼用你應該也自然就懂啦

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