Docker使用簡介(一)Docker的安裝及常用命令

目錄
一、概述
二、Docker的安裝
三、Docker的的常用命令

  • 3.1 鏡像常用指令練習(xí)
  • 3.2 容器常用指令練習(xí)

一堪澎、概述
什么是容器
容器技術(shù)已經(jīng)成為應(yīng)用程序封裝和交付的核心技術(shù)
容器技術(shù)的核心有以下幾個(gè)內(nèi)核技術(shù)組成:
--Cgroups(Control Groups) 資源管理
--NameSpace 進(jìn)程隔離
--SElinux 安全

由于在物理機(jī)上實(shí)施隔離,啟動(dòng)一個(gè)容器,可以像啟動(dòng)一個(gè)進(jìn)程一樣快速

什么是Docker
Docker是完整的一套容器管理系統(tǒng)
Docker提供了一組命令,讓用戶更加方便直接地使用容器技術(shù),而不需要過多關(guān)心底層內(nèi)核技術(shù)

Docker優(yōu)點(diǎn)
相比于傳統(tǒng)的虛擬化技術(shù),容器更加簡潔高效
傳統(tǒng)虛擬機(jī)需要給每個(gè)VM安裝操作系統(tǒng)
容器使用的共享公共庫和程序

Docker缺點(diǎn)
容器的隔離性沒有虛擬化強(qiáng)
共用Linux內(nèi)核,安全性有先天缺陷
SElinux難以駕馭
監(jiān)控容器和容器排錯(cuò)是挑戰(zhàn)

二、Docker的安裝
安裝前準(zhǔn)備
操作系統(tǒng) Linux CentOS 7.5
關(guān)閉防火墻(不是必須,避免引發(fā)一些防火墻導(dǎo)致的問題)

系統(tǒng)版本

[root@docker01 ~]# cat /etc/redhat-release 
CentOS Linux release 7.5.1804 (Core)

Docker的安裝可以通過配置yum源或下載安裝包安裝以下通過yum源方式安裝

1.配置yum源 安裝docker
打開官網(wǎng)找到適配系統(tǒng)的yum源 按提示安裝即可,yum源站點(diǎn)在國外如果因?yàn)榫W(wǎng)絡(luò)原因安裝失敗,換成下載安裝包安裝
官網(wǎng):https://docs.docker.com/engine/install/centos/

$ sudo yum install -y yum-utils
$ sudo yum-config-manager --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install docker-ce docker-ce-cli containerd.io
[root@docker01 ~]# systemctl restart docker        //開啟docker服務(wù)
[root@docker01 ~]# systemctl status  docker        //查看docker服務(wù)狀態(tài)
[root@docker01 ~]# systemctl enable docker         //開啟docker服務(wù)開機(jī)啟動(dòng)
[root@docker01 ~]# ifconfig                        //有docker0說明環(huán)境部署完成
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:d5:18:74:94  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

三味滞、Docker的的常用命令
Docker鏡像常用命令

docker images 查看鏡像列表
docker history 查看鏡像制作歷史
docker inspect 查看鏡像底層信息
docker pull 下載鏡像
docker push 上傳鏡像
docker rmi 刪除本地鏡像
docker save 鏡像另存為tar包
docker load 使用tar包導(dǎo)入鏡像
docker search 搜索鏡像
docker tag 修改鏡像名稱和標(biāo)簽

Docker容器常用命令有哪些

docker run 運(yùn)行容器
docker ps 查看容器列表
docker stop 關(guān)閉容器
docker start 啟動(dòng)容器
docker restart 重啟容器
docker attach|exec 進(jìn)入容器
docker inspect 查看容器底層信息
docker top 查看容器進(jìn)程列表
docker rm 刪除容器

3.1 鏡像常用指令練習(xí)
默認(rèn)的鏡像倉庫為官方鏡像倉庫,上傳下載都會受到網(wǎng)絡(luò)速度的限制,為了方便管理鏡像,后期我們需要在本地搭建鏡像倉庫

1)搜索鏡像

[root@docker01 ~]# docker search nginx               //搜索鏡像 帶OK 的是官方鏡像 更安全
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                              Official build of Nginx.                        13768               [OK]                
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   1879                                    [OK]
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   787                                     [OK]
linuxserver/nginx                  An Nginx container, brought to you by LinuxS…   128                                     
......

[root@docker01 ~]# docker search centos
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   6202                [OK]                
ansible/centos7-ansible            Ansible on Centos7                              132                                     [OK]
consol/centos-xfce-vnc             Centos container with "headless" VNC session…   121                                     [OK]
......

2)下載鏡像

[root@docker01 ~]# docker pull nginx   
Using default tag: latest
latest: Pulling from library/nginx
d121f8d1c412: Pull complete 
ebd81fc8c071: Pull complete 
655316c160af: Pull complete 
d15953c0e0f8: Pull complete 
2ee525c5c3cc: Pull complete 
Digest: sha256:c628b67d21744fce822d22fdcc0389f6bd763daac23a6b77147d0712ea7102d0
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

3)上傳鏡像 遠(yuǎn)程鏡像倉庫因?yàn)闆]有配置認(rèn)證 上傳被拒絕

[root@docker01 ~]# docker push docker.io/nginx
The push refers to repository [docker.io/library/nginx]
908cf8238301: Layer already exists 
eabfa4cd2d12: Layer already exists 
......
errors:
denied: requested access to the resource is denied
unauthorized: authentication required

4)查看鏡像列表

[root@docker01 ~]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              7e4d58f0e5f3        2 weeks ago         133MB
busybox             latest              6858809bf669        2 weeks ago         1.23MB
centos              latest              0d120b6ccaa8        6 weeks ago         215MB

5)導(dǎo)出鏡像

[root@docker01 ~]# docker save docker.io/nginx:latest -o nginx.tar
[root@docker01 ~]# ls
busybox.tar  Desktop  nginx.tar

6)刪除鏡像

[root@docker01 ~]# docker rmi docker.io/nginx
Untagged: nginx:latest
Untagged: nginx@sha256:c628b67d21744fce822d22fdcc0389f6bd763daac23a6b77147d0712ea7102d0
Deleted: sha256:7e4d58f0e5f3b60077e9a5d96b4be1b974b5a484f54f9393000a99f3b6816e3d
Deleted: sha256:eedfd37abc0b05520a719addf6675b372687fe9a2ed1746fa988335720d4376c
Deleted: sha256:4f052ddd517f6dc5b74d2f7d881838b8ec6a5e67ec7a1da8bbbe91e1e068ad3a
Deleted: sha256:5f78154d356577280e4ac0d9bf0d021d488828e57f953b011dcbadaecd539ce4
Deleted: sha256:db5783668220e16186080f3e9d69ad748aab8c72abb8e457f6fc45369461634b
Deleted: sha256:07cab433985205f29909739f511777a810f4a9aff486355b71308bb654cdc868

7)導(dǎo)入鏡像

[root@docker01 ~]# docker load -i nginx.tar 
07cab4339852: Loading layer  72.49MB/72.49MB
f431d0917d41: Loading layer  64.31MB/64.31MB
60c688e8765e: Loading layer  3.072kB/3.072kB
eabfa4cd2d12: Loading layer  4.096kB/4.096kB
908cf8238301: Loading layer  3.584kB/3.584kB
Loaded image: nginx:latest

批量導(dǎo)入鏡像

[root@docker01 ~]# for  i in *.tar; do docker load -i $i; done; 
be8b8b42328a: Loading layer   1.45MB/1.45MB
Loaded image: busybox:latest
Loaded image: nginx:latest
[root@docker01 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              7e4d58f0e5f3        12 days ago         133MB
busybox             latest              6858809bf669        2 weeks ago         1.23MBM

8)查看centos鏡像歷史(制作過程)

[root@docker01 ~]# docker history docker.io/centos
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
0d120b6ccaa8        6 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B                  
<missing>           6 weeks ago         /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B                  
<missing>           6 weeks ago         /bin/sh -c #(nop) ADD file:538afc0c5c964ce0d…   215MB               

9)啟動(dòng)nginx的鏡像

[root@docker01 ~]# docker run -d docker.io/nginx

10)刪除鏡像樱蛤,啟動(dòng)容器時(shí)刪除鏡像會失敗钮呀,先刪除容器,再刪除鏡像
格式:docker rmi 鏡像名

[root@docker01 ~]# docker rmi nginx             //刪除鏡像 報(bào)錯(cuò):
Error response from daemon: conflict: unable to remove repository reference "nginx" (must force) - container 47e0f88ff31ee is using its referenced image 7e4d58f0e5f3

[root@docker01 ~]# docker stop 47e     //停止容器
47e

[root@docker01 ~]# docker rm  47e      //再刪除容器
47e

[root@docker01 ~]# docker rmi  docker.io/nginx   //在刪除容器成功

[root@docker01 ~]# docker run -d docker.io/nginx   //鏡像刪除后 運(yùn)行容器docker重新下載鏡像 
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
d121f8d1c412: Pulling fs layer 
ebd81fc8c071: Pulling fs layer 
655316c160af: Download complete 
d15953c0e0f8: Waiting 
2ee525c5c3cc: Waiting 

11)修改鏡像的名稱和標(biāo)簽,默認(rèn)標(biāo)簽為 v2

[root@docker01 ~]# docker tag docker.io/centos:latest docker.io/centos:v2
[root@docker01 ~]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              6858809bf669        2 weeks ago         1.23MB
centos              latest              0d120b6ccaa8        6 weeks ago         215MB
centos              v2                  0d120b6ccaa8        6 weeks ago         215MB

12)查看鏡像的底層信息

[root@docker01 ~]# docker inspect docker.io/centos
[
    {
        "Id": "sha256:0d120b6ccaa8c5e149176798b3501d4dd1885f961922497cd0abef155c869566",
        "RepoTags": [
            "centos:latest",
            "centos:v2"
        ],
......

3.2 容器常用指令練習(xí)

1)查看容器列表

[root@docker01 ~]# docker ps                   //查看后面運(yùn)行容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
47edcb784521        nginx               "/docker-entrypoint.…"   55 seconds ago      Up 54 seconds       80/tcp              funny_faraday

[root@docker01 ~]# docker ps  -q             //查看后面運(yùn)行容器只顯示ID
47edcb784521
d1129361c6b1

[root@docker01 ~]# docker ps -a             //查看所有容器包括沒有啟動(dòng)的
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                      PORTS               NAMES
47edcb784521        nginx               "/docker-entrypoint.…"   About a minute ago   Up About a minute           80/tcp              funny_faraday
d1129361c6b1        centos              "/bin/bash"              57 minutes ago       Up 4 minutes                                    blissful_poitras
45065a8f9abe        centos              "/bin/bash"              23 hours ago         Exited (130) 23 hours ago                       relaxed_heisenberg

[root@docker01 ~]# docker ps -qa           //只顯示所有容器ID
47edcb784521
d1129361c6b1
45065a8f9abe

2)啟動(dòng)centos鏡像生成一個(gè)容器
docker run -it 是交互 -itd是放入后臺運(yùn)行 像類似nginx的服務(wù)啟動(dòng)后沒有輸入 后面加 /bin/bash 交互的命令可不用加默認(rèn) latest /bin/bash會自動(dòng)補(bǔ)齊

[root@docker01 ~]# docker run -it docker.io/centos /bin/bash 
[root@d1129361c6b1 /]# yum repolist               //看查默認(rèn)的yum源  注意命令行前面變成了[root@d1129361c6b1 /] 說明已經(jīng)在容器里了
Failed to set locale, defaulting to C.UTF-8
repo id                                      repo name
AppStream                                    CentOS-8 - AppStream
BaseOS                                       CentOS-8 - Base
extras                                       CentOS-8 - Extras

[root@d1129361c6b1 /]# yum -y install net-tools    //安裝軟件

[root@d1129361c6b1 /]# exit        //退出
exit

3)連接容器 并保持后臺運(yùn)行 attach|exec

[root@docker01 ~]# docker ps    //查看后臺運(yùn)行的容器 發(fā)現(xiàn)容器也跟著退出了
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

方式1 attach 按ctrl+p+q退出

[root@docker01 ~]# docker start d1  //開啟容器
d1

[root@docker01 ~]# docker attach d1      // attach進(jìn)入進(jìn)程,退出會關(guān)閉  按ctrl+p+q退出 可以保留程序
[root@d1129361c6b1 /]# read escape sequence 

[root@docker01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
d1129361c6b1        centos              "/bin/bash"         About an hour ago   Up 48 seconds                           blissful_poitras

方式2 exec
其中,-t 選項(xiàng)讓Docker分配一個(gè)偽終端(pseudo-tty)并綁定到容器的標(biāo)準(zhǔn)輸入上
-i 則讓容器的標(biāo)準(zhǔn)輸入保持打開
在交互模式下,用戶可以通過所創(chuàng)建的終端來輸入命令

[root@docker01 ~]# docker exec -it d1 /bin/bash
[root@d1129361c6b1 /]# exit
exit

[root@docker01 ~]# docker  ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
d1129361c6b1        centos              "/bin/bash"         About an hour ago   Up 10 seconds                           blissful_poitras

4)查看容器進(jìn)程列表

[root@docker01 ~]# docker top d1 
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                21336               21318               0                   16:36               pts/0               00:00:00            /bin/bash

5)修改nginx的顯示內(nèi)容

[root@docker01 ~]# docker exec -it 47 /bin/bash
[root@47edcb784521:/# nginx -T /usr/share/nginx/html/
nginx: invalid option: "/usr/share/nginx/html/"   //查找并顯示結(jié)果

[root@47edcb784521:/# echo aaa >/usr/share/nginx/html/index.html   //修改主頁顯示的內(nèi)容
[root@47edcb784521:/# cat /usr/share/nginx/html/index.html 
aaa

5)過濾查看mac和ip地址

[root@docker01 ~]#  docker inspect -f '{{.NetworkSettings.MacAddress}}' 47
02:42:ac:11:00:03
[root@docker01 ~]#  docker inspect -f '{{.NetworkSettings.IPAddress}}' 47
172.17.0.3
[root@docker01 ~]# curl 172.17.0.3
aaa
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市昨凡,隨后出現(xiàn)的幾起案子爽醋,更是在濱河造成了極大的恐慌,老刑警劉巖便脊,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蚂四,死亡現(xiàn)場離奇詭異,居然都是意外死亡哪痰,警方通過查閱死者的電腦和手機(jī)遂赠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晌杰,“玉大人跷睦,你說我怎么就攤上這事±哐荩” “怎么了抑诸?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長爹殊。 經(jīng)常有香客問我蜕乡,道長,這世上最難降的妖魔是什么梗夸? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任层玲,我火速辦了婚禮,結(jié)果婚禮上反症,老公的妹妹穿的比我還像新娘称簿。我一直安慰自己,他們只是感情好惰帽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著父虑,像睡著了一般该酗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上士嚎,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天呜魄,我揣著相機(jī)與錄音,去河邊找鬼莱衩。 笑死爵嗅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的笨蚁。 我是一名探鬼主播睹晒,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼趟庄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了伪很?” 一聲冷哼從身側(cè)響起戚啥,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锉试,沒想到半個(gè)月后猫十,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呆盖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年拖云,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片应又。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宙项,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出丁频,到底是詐尸還是另有隱情杉允,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布席里,位于F島的核電站叔磷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏奖磁。R本人自食惡果不足惜改基,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咖为。 院中可真熱鬧秕狰,春花似錦、人聲如沸躁染。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吞彤。三九已至我衬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間饰恕,已是汗流浹背挠羔。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留埋嵌,地道東北人破加。 一個(gè)月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像雹嗦,于是被迫代替她去往敵國和親范舀。 傳聞我的和親對象是個(gè)殘疾皇子合是,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355