Centos 7部署docker環境、基本命令使用及簡單實戰

Docker是一個開源的應用容器引擎,屬於Linux容器的一種封裝,是目前最流行的Linux容器解決方案。docker能夠爲任何應用建立一個輕量級、可移植的容器,而後容器能夠運行在任何安裝有docker的平臺上。
Docker 的優點:
一、更快速的交付和部署
對開發和運維(devop)人員來講,最但願的就是一次建立或配置,能夠在任意地方正常運行。
開發者可使用一個標準的鏡像來構建一套開發容器,開發完成以後,運維人員能夠直接使用這個容器來部署代碼。 docker 能夠快速建立容器,快速迭代應用程序,大量地節約開發、測試、部署的時間。
二、更高效的虛擬化
docker 容器的運行不須要額外的 hypervisor 支持,它是內核級的虛擬化,所以能夠實現更高的性能和效率。
三、更輕鬆的遷移和擴展
docker 容器幾乎能夠在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、我的電腦、服務器等。 這種兼容性可讓用戶把一個應用程序從一個平臺直接遷移到另一個平臺。
四、更簡單的管理
使用 docker,只須要小小的修改,就能夠替代以往大量的更新工做。全部的修改都以增量的方式被分發和更新,從而實現自動化而且高效的管理。linux

1、部署docker環境

一、安裝yum相關工具包
yum install -y yum-utils device-mapper-persistent-data lvm2
二、添加docker下載源
(1)添加docker官方源nginx

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum makecache fast

(2)添加國內阿里雲下載節點
注:國內鏈接docker官方提供的源下載速度比較慢,我這裏使用的是阿里雲的源docker

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast

三、安裝docker
注:安裝的是docker社區版本
yum -y install docker-ce
四、更改鏡像源爲國內阿里雲節點,並指定docker數據存儲目錄shell

mkdir -p /data/docker
mkdir -p /etc/docker
vim /etc/docker/daemon.json

注:docker安裝好後默認沒有此文件,須要手動建立,添加阿里雲鏡像節點,並指定docker存儲目錄apache

{
  "registry-mirrors": ["https://registry.docker-cn.com"], "graph": "/data/docker"
}

五、啓動docker,並加入開機啓動json

systemctl start docker
systemctl enable docker

六、測試
(1)下載hello-world鏡像
docker pull hello-world
Centos 7部署docker環境、基本命令使用及簡單實戰
(2)運行hello-world鏡像
docker run hello-world
Centos 7部署docker環境、基本命令使用及簡單實戰
這個image(鏡像)運行後很簡單,就是打印了這段話。告訴咱們已經成功的讓docker daemon(核心進程)從docker hub(鏡像源)上拉了一個」hello-world」的image,而且經過這個image建立了一個container(容器),而且經過daemon將輸出的內容傳回了docker client(客戶端)。ubuntu

2、Docker架構

Docker使用客戶端/服務器(C/S)架構模式,使用遠程API來管理和建立docker容器。Docker Client向Docker daemon發起請求,Docker daemon負責構建、運行和分發容器。Docker client也能夠經過socket或REST API與遠程的Docker daemon通訊。
Centos 7部署docker環境、基本命令使用及簡單實戰vim

  • Docker daemon:服務端程序,之後臺的方式運行。負責建立、運行、監控容器,構建、存儲鏡像。
  • Docker client:Docker客戶端,經過命令行或其餘工具使用Docker API與Docker daemon通訊。
  • Images:Docker鏡像,用於建立docker容器的模板,咱們經過鏡像來建立docker容器。
  • Container:Docker容器,是從鏡像建立的運行實例,每個容器都至關於一個虛擬的應用環境,經過容器來運行各式各樣的應用。
  • Registry:存放Docker鏡像的倉庫,分爲公有倉庫和私有倉庫兩種。

3、Docker目錄結構

Docker安裝成功後,默認是沒有存儲目錄的,在啓動的時候纔會建立存儲目錄。咱們來看下docker都有哪些目錄吧。
ls -lh /data/docker/
Centos 7部署docker環境、基本命令使用及簡單實戰
containerd目錄裏存放的是與daemon程序相關的數據。
image和overlay2目錄裏存放的是與鏡像相關的數據。每下載一個鏡像,就會在這兩個目錄下生成此鏡像對應的子目錄與數據;每運行一個鏡像,即經過鏡像建立一個容器,這兩個目錄下也會生成相關子目錄與數據信息。
containers目錄裏存放的是容器相關的數據,每運行一個容器,就在這個目錄下面生成一個容器Id對應的子目錄與數據。
tmp是臨時文件存放目錄。
volumes與docker的數據卷相關,在此不進行擴展。centos

4、Docker命令使用

一、查看docker版本信息瀏覽器

docker -v   #查看docker版本號
docker version   #查看docker版本詳細信息

Centos 7部署docker環境、基本命令使用及簡單實戰
二、查看docker系統信息
docker info
三、從鏡像倉庫查找鏡像
docker search ubuntu #搜索包含ubuntu的鏡像
Centos 7部署docker環境、基本命令使用及簡單實戰
四、下載鏡像
docker pull ubuntu #下載ubuntu官方鏡像
Centos 7部署docker環境、基本命令使用及簡單實戰
五、查看本地鏡像
docker images
Centos 7部署docker環境、基本命令使用及簡單實戰
REPOSITORY:鏡像名稱,與鏡像倉庫上的名稱一致
TAG:標記,下載的鏡像默認會使用latest標記
IMAGE ID:鏡像ID
CREATED:鏡像建立時間
SIZE:鏡像佔用磁盤空間大小
六、給本地鏡像作個標記
docker tag ubuntu:latest ubuntu1:test #將ubuntu鏡像的名稱改成ubuntu1,標記改成test
Centos 7部署docker環境、基本命令使用及簡單實戰
注:使用docker images查看會多出來一行,修改後的image id和原來的同樣,我的認爲只是作了個標記而已,實際運行的話仍是得運行ubuntu鏡像,運行ubuntu1的話會報錯。
Centos 7部署docker環境、基本命令使用及簡單實戰
七、經過鏡像建立並啓動容器
(1)以交互模式建立並啓動一個容器
docker run --name ubuntu_test -it ubuntu /bin/bash
參數說明:
--name:爲容器指定一個名稱
-i:打開容器的標準輸入,即以交互模式運行容器
-t:爲容器分配一個僞終端
/bin/bash:表示運行bash shell,即運行命令行界面
Centos 7部署docker環境、基本命令使用及簡單實戰
此時已經進入到容器裏的ubuntu系統,能夠定製咱們本身的應用容器,可安裝配置應用軟件,就跟實際環境同樣部署本身的應用。
exit命令退出與容器的交互模式。
(3)之後臺的方式建立並啓動一個容器
docker run --name ubuntu_test1 -d ubuntu
Centos 7部署docker環境、基本命令使用及簡單實戰
注:返回容器的ID
(4)使用-P參數將80端口映射到主機隨機端口
docker run -P -d nginx:latest #例如容器上啓動了nginx,端口號爲80
(5)使用-p參數指定映射端口,使用-v參數指定映射目錄
docker run -p 8081:80 -v /data_test:/data -d nginx:latest
注:將容器的80端口映射到主機8081端口,將容器/data目錄映射到主機/datatest目錄
(6)將容器的端口映射到主機指定IP的端口上
docker run -p 192.168.2.226:8081:80 -d nginx:latest
八、查看容器信息
(1)查看全部容器
docker ps -a
Centos 7部署docker環境、基本命令使用及簡單實戰
CONTAINER ID:容器ID
IMAGE:屬於哪一個鏡像
COMMAND:運行的命令、腳本或其餘指令
CREATED:容器建立時間
STATUS:運行狀態及運行了多長時間
PORTS:端口映射信息
NAMES:容器名稱
(2)查看運行中的容器
docker ps
(3)查看最近建立的3個容器
docker ps -n 3
(4)查看全部容器的ID
docker ps -a -q
九、啓動、中止、重啓容器
注:能夠指定容器ID,也能夠指定容器名稱
docker start 665b9b704983
Centos 7部署docker環境、基本命令使用及簡單實戰
啓動以後STATUS會顯示Up(運行)及運行了多長時間

docker stop 665b9b704983
docker restart ubuntu_test

十、刪除容器

docker rm wizardly_albattani   #不加參數只能刪除已中止的容器
docker rm -f -v ubuntu_test   #-f強制刪除運行中的容器,-v刪除與容器關聯的數據卷

Centos 7部署docker環境、基本命令使用及簡單實戰
十一、刪除鏡像

docker rmi ubuntu:latest
docker rmi -f ubuntu1:test   #-f強制刪除鏡像,即便該鏡像正被使用

Centos 7部署docker環境、基本命令使用及簡單實戰
十二、殺掉一個運行中的容器
docker kill -s KILL ubuntu_test1 #-s "KILL" 表示向容器發送一個KILL信號

5、測試實例

一、下載centos的最新鏡像
docker pull centos
Centos 7部署docker環境、基本命令使用及簡單實戰
二、建立並啓動容器
docker run -itd --privileged --name centos_test -p 80:80 centos /usr/sbin/init
Centos 7部署docker環境、基本命令使用及簡單實戰
參數說明:
-itd:開啓交互模式,分配一個僞終端,-d表示之後臺方式運行
--privileged:使容器內的root擁有真正的root權限,能夠看到不少host上的設備,甚至容許在容器中啓動容器。
-p 80:80:將容器的80端口映射到宿主機(即本機)的80端口
/usr/sbin/init:啓動init守護程序
三、登錄到此容器中
docker exec -it centos_test /bin/bash
Centos 7部署docker環境、基本命令使用及簡單實戰
參數說明:
exec:進入到一個運行中的容器裏
-i:保持STDIN 打開,即開啓交互模式
-t:分配一個僞終端
此時命令行提示符已經改變,主機名變成了容器id
四、在容器中安裝httpd服務
yum -y install httpd
五、在容器中啓動httpd服務,並加入開機啓動

systemctl start httpd
systemctl enable httpd

六、退出容器
exit
七、確保本機沒有裝httpd服務

rpm -qa | grep httpd
systemctl status httpd

Centos 7部署docker環境、基本命令使用及簡單實戰
八、在本機查看80端口是否已監聽
ss -lnt | grep 80
Centos 7部署docker環境、基本命令使用及簡單實戰
九、在本機上查看httpd進程信息
ps -ef |grep httpd
Centos 7部署docker環境、基本命令使用及簡單實戰
千萬不要搞混,此處的httpd進程不是本機的,而是容器裏啓動的httpd進程
十、配置firewalld防火牆容許80端口

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

十一、經過瀏覽器訪問http://192.168.2.226
Centos 7部署docker環境、基本命令使用及簡單實戰
OK,能正常訪問到apache的主頁
十二、把修改過的容器製做成鏡像
docker commit -a "xuad.com" -m "xuad httpd" 6f42b25c1f00 centos/httpd:test
Centos 7部署docker環境、基本命令使用及簡單實戰
參數說明:-a:提交的鏡像做者信息-m:鏡像的說明文字6f42b25c1f00:容器IDcentos/httpd:test:鏡像名稱和標記信息

相關文章
相關標籤/搜索