帶你進(jìn)入容器的大門-Docker的基本用法

Docker是一種輕量級的虛擬化技術(shù)糯笙,它具備傳統(tǒng)虛擬機無法比擬的優(yōu)勢惧蛹,它更簡易的安裝和使用方式、更快的速度志珍、服務(wù)集成和開源流程自動化橙垢。

Docker的安裝

安裝Docker的基本要素:
1、Docker只支持64位CPU架構(gòu)的計算機伦糯,目前不支持32位CPU柜某;
2嗽元、建議系統(tǒng)的Linux內(nèi)核版本為3.10以上;
3莺琳、Linux內(nèi)核只需開啟cgroups和namespace功能还棱;
4、對于非Linux內(nèi)核的平臺惭等,如Windows和OS X珍手,需要安裝使用Boot2Docker工具;

下面我們以CentOS7.5為例來安裝Docker辞做,以下操作均在root用戶下操作琳要。

Docker有企業(yè)版和社區(qū)版,我們安裝社區(qū)版即可秤茅。在國內(nèi)稚补,由于各種原因,我們不用官方的源來安裝框喳,國內(nèi)有很多的鏡像站课幕,比如阿里鏡像,清華鏡像等五垮。

1乍惊、下載鏡像倉庫

cd /etc/yum.repo.d/
wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

2、直接安裝即可

yum install docker-ce

3放仗、啟動Docker

systemctl start docker
systemctl enable docker

Docker簡單就安裝完了润绎。
如果需要配置鏡像加速,這里以阿里云為例诞挨,登錄到https://cr.console.aliyun.com莉撇,然后獲取自己獨有的加速網(wǎng)址,配置/etc/docker/daemon.json中即可惶傻,這個文件是需要自己創(chuàng)建的棍郎。例如:
vim /etc/docker/daemon.json

{
  "registry-mirrors": ["https://5uuoznyf.mirror.aliyuncs.com"]
}

然后重啟一下Docker即可:

systemctl daemon-reload
systemctl restart docker

Docker的操作參數(shù)

用戶在使用Docker,需要使用Docer命令行工具docker和Docker daemon建立通信银室,Docker daemon是Docker的守護進(jìn)程坝撑,負(fù)責(zé)接收并分發(fā)執(zhí)行Docker命令。

為了了解Docker命令行工具的概況粮揉,我們可以使用Docker命令或Docker help命令來獲取Docker的命令清單巡李,如下:

[root@hjkj ansible]# docker
Usage:  docker [OPTIONS] COMMAND

Management Commands:
  builder     Manage builds
  config      Manage Docker configs
  container   Manage containers
  engine      Manage the docker engine
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
    ......
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

可以看到Docker的命令非常多,現(xiàn)在Docker官方已經(jīng)將Docker命令分組了扶认,當(dāng)前以前的命令方式還是保留著侨拦。值得一提的是docker命令執(zhí)行一般都需要獲取root權(quán)限,因為Docker的命令行工具docker和Docker daemon是同一個二進(jìn)制文件辐宾,而Docker daemon負(fù)責(zé)接收來自docker的命令狱从,它的運行需要root權(quán)限膨蛮。同時,Docker從0.5.2版本開始季研,Docker daemon默認(rèn)綁定了一個UNIX Socket來代替原有的TCP端口敞葛,改UNIX Socket默認(rèn)是屬于root用戶的。因此在執(zhí)行docker命令時与涡,需要root權(quán)限惹谐。

docker有非常多的命令,相應(yīng)的命令都可以通過docker COMMAND --help來查看具體如何使用驼卖,包括子命令的使用方法以及可用的操作參數(shù)氨肌。

我們將docker的子命令進(jìn)行如下分類:

子命令分類 子命令
Docker環(huán)境信息 info version
容器生命周期管理 create exec kill pause restart rm run start stop unpause
鏡像倉庫命令 login logout pull push search
鏡像管理 build images import load rmi save tag commit
容器運維操作 attach export inspect port ps rename stats top wait cp diff update
容器資源管理 volume network
系統(tǒng)日志信息 events history logs

docker的命令結(jié)構(gòu)圖如下:


1563607714478-e1da3411-d1fe-43b3-9e59-c494ef0dda20.png

Docker的環(huán)境信息

docker info命令用于查看Docker是否正確安裝,如果正確安裝酌畜,會輸出Docker的配置信息怎囚。

輸入docker info,可以看到一下的信息<br />
image.png
image.png

輸入docker version可以看到當(dāng)前使用的docker版本<br />
image.png
image.png

Docker的生命周期管理

Docker生命周期管理涉及容器的啟動桥胞、停止等功能恳守,下面介紹幾個常用的命令。

docker run

docker run的使用語法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

詳細(xì)可以使用docker run --help來查看具體的參數(shù)贩虾。

docker run用來基于特定的鏡像創(chuàng)建一個容器井誉,并且依據(jù)選項來控制改容器。具體使用實例如下:

[root@hjkj ansible]# docker run busybox echo "hello world"
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
ee153a04d683: Pull complete 
Digest: sha256:9f1003c480699be56815db0f8146ad2e22efea85129b5b5983d0e0fb52d9ab70
Status: Downloaded newer image for busybox:latest
hello world

[root@hjkj ansible]# docker run busybox echo "hello world"
hello world

從上面可以看到這個命令我使用的兩次整胃,第一次是由于我本地沒有busybox這個鏡像,它需要到官方站點去拉取鏡像,然后再運行。第二次由于我們上面已經(jīng)拉取過了疏日,那么busybox這個鏡像就保存在本地了独令,我們再次運行就不需要再去拉取進(jìn)行,直接運行即可轧苫。

docker run的參數(shù)很多,可以通過docker run --help來查看具體的參數(shù),docker run常用的幾個參數(shù)如下:

  • -i :表示使用交互模式酬蹋,始終保持輸入流開放
  • -t :表示分配一個偽終端,一般和-i結(jié)合使用
  • --name :指定容器的名字抽莱,若不指定范抓,則隨機分配一個名字
  • -c :用于給運行的容器分配cpu的權(quán)重值
  • -m : 用于給容器分配內(nèi)存總量
  • -v :用于掛載一個volume,可以同時使用多個-v
  • -p :用于將容器內(nèi)的端口暴露給宿主機食铐,常用格式為 -p hostPort:containerPort匕垫,如果不指定hostPort,則在宿主機上隨機生成一個端口

docker start/stop/restart

docker start/stop/restart容器通常是對一個以存在的容器進(jìn)行操作虐呻,它們分別是啟動象泵、關(guān)閉和重啟容器寞秃。其中docker start命令可以使用-i來進(jìn)入交互模式,使用-a來附加標(biāo)準(zhǔn)輸入偶惠、輸出或錯誤輸出春寿。docker stop和docker restart 命令使用-t選項來設(shè)定容器停止前的等待時間。

Docker鏡像倉庫命令

Docker Registry是Docker的鏡像倉庫忽孽,用戶可以通過Docker Client和Docker Registry進(jìn)行通信绑改,以完成鏡像的搜搜索、下載扒腕、上傳等操作绢淀。

docker pull

docker pull是Docker中常用命令,用于將image或者repository從Registry中拉取下來瘾腰。該命令的使用方法如下:

# docker pull --help
Usage:  docker pull [OPTIONS] NAME[:TAG|@DIGEST]
Pull an image or a repository from a registry
Options:
  -a, --all-tags                Download all tagged images in the repository
      --disable-content-trust   Skip image verification (default true)

使用docker pull的時候需要指定版本皆的,如果不指定,默認(rèn)版本是latest蹋盆。

docker push

docker push命令用于將本地的image或repository推送到Registry中费薄。該命令的使用方法如下:

# docker push --help
Usage:  docker push [OPTIONS] NAME[:TAG]
Push an image or a repository to a registry
Options:
      --disable-content-trust   Skip image signing (default true)

在使用docker push的時候需要使用docker login進(jìn)行登錄。

Docker鏡像管理

docker images

docker images命令可以列出主機上的鏡像栖雾,默認(rèn)只列出最頂層的鏡像楞抡,可以使用-a來列出所有的鏡像。其使用方法如下:

# docker images --help
Usage:  docker images [OPTIONS] [REPOSITORY[:TAG]]
List images
Options:
  -a, --all             Show all images (default hides intermediate images)
      --digests         Show digests
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print images using a Go template
      --no-trunc        Don't truncate output
  -q, --quiet           Only show numeric IDs

docker rm/rmi

這兩個命令的作用都是刪除析藕,其中docker rm是用于刪除容器召廷,docker rmi是用于刪除鏡像。它們的使用方法如下:

# docker rm --help
Usage:  docker rm [OPTIONS] CONTAINER [CONTAINER...]
Remove one or more containers
Options:
  -f, --force     Force the removal of a running container (uses SIGKILL)
  -l, --link      Remove the specified link
  -v, --volumes   Remove the volumes associated with the container
  
# docker rmi --help
Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...]
Remove one or more images
Options:
  -f, --force      Force removal of the image
      --no-prune   Do not delete untagged parents

值得一提的是账胧,用docker rmi來刪除鏡像的時候竞慢,如果有基于該鏡像的啟動的容器存在,則需要先刪除容器治泥,再刪除鏡像筹煮。當(dāng)然這兩個命令都有-f選項,用于強制刪除存在容器的鏡像或啟動中的容器居夹。

Docker運維操作

docker attach

docker attach可以連接正在運行的容器败潦,觀察該容器的運行情況,或與容器的主機進(jìn)程進(jìn)行交互式操作准脂。其使用方法如下:

# docker attach --help
Usage:  docker attach [OPTIONS] CONTAINER
Attach local standard input, output, and error streams to a running container
Options:
      --detach-keys string   Override the key sequence for detaching a container
      --no-stdin             Do not attach STDIN
      --sig-proxy            Proxy all received signals to the process (default true)

docker inspect

docker inspect命令可以查看鏡像和容器的詳細(xì)信息劫扒,默認(rèn)會列出全部信息,可以通過--format參數(shù)來指定輸入的模板格式狸膏,以便輸出特定的信息粟关。該命令的使用方法如下:

# docker inspect --help
Usage:  docker inspect [OPTIONS] NAME|ID [NAME|ID...]
Return low-level information on Docker objects
Options:
  -f, --format string   Format the output using the given Go template
  -s, --size            Display total file sizes if the type is container
      --type string     Return JSON for specified type

docker ps

docker ps命令可以查看容器的相關(guān)信息,默認(rèn)只會顯示正在運行的容器信息。其使用方法如下:

# docker ps --help
Usage:  docker ps [OPTIONS]
List containers
Options:
  -a, --all             Show all containers (default shows just running)
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print containers using a Go template
  -n, --last int        Show n last created containers (includes all states) (default -1)
  -l, --latest          Show the latest created container (includes all states)
      --no-trunc        Don't truncate output
  -q, --quiet           Only display numeric IDs
  -s, --size            Display total file sizes

docker ps 常用-a和-l闷板,-a查看所有的容器澎灸,-l查看最新創(chuàng)建的容器,包括不在運行的容器遮晚。

其他子命令

docker commit

docker commit是將容器固化為一個新的鏡像性昭,當(dāng)需要指定特定的鏡像的時候,會對容器的配置進(jìn)行修改县遣,然后通過commit將這些修改保存起來糜颠,使其不會因為容器的停止而丟失。使用方法如下:

# docker commit --help
Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Createza new image from a container's changes

Options:
  -a, --author string    Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
  -c, --change list      Apply Dockerfile instruction to the created image
  -m, --message string   Commit message
  -p, --pause            Pause container during commit (default true)

提交保存時萧求,只能使用正在運行的容器來制作新的鏡像其兴。

docker events/logs/history

這三個命令都是用于查看Docker的系統(tǒng)日志信息,其中events會打印出實時的系統(tǒng)事件夸政,history會打印指定鏡像的歷史版本信息元旬,即構(gòu)建該鏡像的每一層鏡像的命令記錄,logs命令會打印容器內(nèi)進(jìn)程的運行日志守问。其使用方法如下:

# docker events --help
Usage:  docker events [OPTIONS]
Get real time events from the server
Options:
  -f, --filter filter   Filter output based on conditions provided
      --format string   Format the output using the given Go template
      --since string    Show all events created since timestamp
      --until string    Stream events until this timestamp

# docker logs --help
Usage:  docker logs [OPTIONS] CONTAINER
Fetch the logs of a container
Options:
      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
      --tail string    Number of lines to show from the end of the logs (default "all")
  -t, --timestamps     Show timestamps
      --until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)

# docker history --help
Usage:  docker history [OPTIONS] IMAGE
Show the history of an image
Options:
      --format string   Pretty-print images using a Go template
  -H, --human           Print sizes and dates in human readable format (default true)
      --no-trunc        Don't truncate output
  -q, --quiet           Only show numeric IDs

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末匀归,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子耗帕,更是在濱河造成了極大的恐慌穆端,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仿便,死亡現(xiàn)場離奇詭異体啰,居然都是意外死亡,警方通過查閱死者的電腦和手機嗽仪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門荒勇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钦幔,你說我怎么就攤上這事〕1” “怎么了鲤氢?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長西潘。 經(jīng)常有香客問我卷玉,道長,這世上最難降的妖魔是什么喷市? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任相种,我火速辦了婚禮,結(jié)果婚禮上品姓,老公的妹妹穿的比我還像新娘寝并。我一直安慰自己箫措,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布衬潦。 她就那樣靜靜地躺著斤蔓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪镀岛。 梳的紋絲不亂的頭發(fā)上弦牡,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音漂羊,去河邊找鬼驾锰。 笑死,一個胖子當(dāng)著我的面吹牛走越,可吹牛的內(nèi)容都是我干的椭豫。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼买喧,長吁一口氣:“原來是場噩夢啊……” “哼捻悯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起淤毛,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤今缚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后低淡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姓言,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年蔗蹋,在試婚紗的時候發(fā)現(xiàn)自己被綠了何荚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡猪杭,死狀恐怖餐塘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情皂吮,我是刑警寧澤戒傻,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站蜂筹,受9級特大地震影響需纳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜艺挪,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一不翩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦口蝠、人聲如沸器钟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽俱箱。三九已至,卻和暖如春灭必,著一層夾襖步出監(jiān)牢的瞬間狞谱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工禁漓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留跟衅,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓播歼,卻偏偏與公主長得像伶跷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子秘狞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容