Docker 簡介及基礎操作知識
Docker是一個能夠把開發(fā)的應用程序自動部署的開源引擎砌梆。由Docker公司的團隊編寫,基于Apache2.0開源授權協(xié)議發(fā)行桃序。
使用Docker,開發(fā)人員只需要關心容器中運行的應用程序烂瘫,而運維人員只需要關心如何管理容器。Docker設計的目的就是要加強開發(fā)人員寫代碼的開發(fā)環(huán)境于應用程序要部署的生產(chǎn)環(huán)境的一致性芦鳍,從而降低那種“開發(fā)時一切正常葛账,肯定是運維的問題”的風險注竿。
Docker組件
- Docker客戶端和服務器:
- Docker鏡像:
- Registry:
- Docker容器。
安裝Docker
在RHEL6 和CentOS6中安裝Docker
'' rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-relaase-6-8.noarch.rpm
安裝完成EPEL后,就可以安裝Docker了
'' yum -y install docker-io在RHEL7中安裝Docker
'' subscription-manager repos —enable=rhel-7-server-extras-rpms
'' yum install -y docker
在Red Hat系統(tǒng)發(fā)行版中啟動Docker守護進程
軟件包安裝完成后就可以啟動Docker守護進程了宣谈。在RHEL6或Centos6,可以使用下面的所示命令啟動守護進程
service docker start
想要在系統(tǒng)開機時自動啟動Docker服務键科,還要執(zhí)行以下代碼漩怎。
service docker enable
在RHEL7或Fedora中啟動Docker服務勋锤,則需要執(zhí)行命令侥祭。
systemctl start docker
在RHEL7中開機自動啟動Docker
systemctl enable docker
Docker守護進程
當Docker軟件包安裝完畢后,默認會立即啟動Docker守護進程谈宛。守護進程兼聽/var/run/docker.sock這個Unix套接字文件胎署,來獲取自客戶端的Docker請求。如果系統(tǒng)中存在名為docker的用戶組的話恢筝,Docker則會該套接字文件的使用者設置為該用戶組巨坊。這樣抱究,docker用戶組的所有用戶都可以直接運行Docker,則無需在使用sudo命令了。
運行Docker守護進程時勋拟,可以用-H標志調(diào)整守護進程綁定監(jiān)聽接口的方式妈候。
'' /usr/bin/docker -d -H tcp://0.0.0.0:2375
這條命令會將Docker守護進程綁定到宿主機子上的所有網(wǎng)絡接口和端口配置。
檢查Docker守護進程是否正常運行
在RedHat和Fedora,只需要用service命令就可以完成工作啸胧,如下
service docker stop
service docket start
運行第一個容器
'' docker run -i -t centos /bin/bash
**docker run **命令幔虏,并指定了-i和-t兩個命令行參數(shù)。-i標志保證容器中STDIN是開啟的陷谱,-t則標志它告訴Docker為要創(chuàng)建的容器分配一個偽tty終端。在本例中運行/bin/bash命令渣窜,這時可以看到容器內(nèi)的shell了宪躯。
'' [root@1e8f2ed75268 /]#
Docker已在hosts文件中為該容器IP地址添加了一條主機配置項访雪。
'' [root@1e8f2ed75268 /]# cat /etc/hosts
'' 172.17.0.1 1e8f2ed75268
'' 127.0.0.1 localhost
'' ::1 localhost ip6-localhost ip6-loopback
'' fe00::0 ip6-localnet
'' ff00::0 ip6-mcastprefix
'' ff02::1 ip6-allnodes
'' ff02::2 ip6-allrouters
docker ps -a 命令查看當前系統(tǒng)中容器的列表
(img)
容器命名
Docker會為我們創(chuàng)建一個容器自動生成一個隨機的名稱,可以用—-name標志來
實現(xiàn)
'' docker run —-name test_container -i -t centos /bin/bash重新啟動已經(jīng)停止的容器
''docker start test_container_附著到容器上
'' docker attach 1e8f2ed75268查看容器內(nèi)部都在干些什么
'' docker logs -ft 683515e52da3
(img)深入容器獲取內(nèi)部信息
'' docker inspect 683515e52da3
(img)
docker inspect命令會對容器進行詳細的檢查蛤虐,然后返回其配置信息驳庭,包括名稱、命令氯窍、網(wǎng)絡配置以及很多使用的數(shù)據(jù)饲常。
'' docker inspect --format '{{.State.Running }}' 683515e52da3
上述該狀態(tài)為false
'' docker inspect --format '{{ .NetworkSettings.IPAddress }}' 1e8f2ed75268
172.17.0.6
除了查看容器,你還可以通過瀏覽/var/lib/docker 目錄深入了解Docker原理狼讨。該目錄存放著Docker鏡像贝淤、容器以及容器的配置。所有的容器都保存在/var/lib/docker/containers/
- 刪除容器
docker rm 1e8f2ed75268
需要注意的是政供,運行中得Docker容器都是無法刪除的播聪!你必須先通過docker stop 或docker kill 命令停止容器,才能將其刪除布隔。
docker rm docker ps -a -q
上面的docker ps 命令會列出所有的全部容器离陶,-a標志代表所列出所有(all)容器,而-q標志則表示只需要返回容器的ID而不會返回容器的其他信息衅檀。這樣就得到了容器ID的列表,并傳給了docker rm 命令哀军,從而達到刪除所有容器的目的沉眶。