1. 程式人生 > >Docker安裝與基礎使用

Docker安裝與基礎使用

details 操作系統 csdn fly abc and nsenter ssh strong

一、Docker介紹

Docker介紹

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。Docker是通過內核虛擬化技術(namespaces和cgroups)來提供容器的資源隔離與安全保障。容器是完全使用沙箱機制,相互之間不會有任何接口。基於go語言並遵從Apache2.0協議開源。

Docker官方網站

Docker官方文檔

Docker組成

  • Docker Client:CLI命令
  • Docker Server:守護進程

Docker組件

(與虛擬機進行對比)

  • Docker Image 鏡像:靜態概念,把應用、代碼和所需應用庫(Bins/Libs)運行環境進行封裝和打包
  • Docker Container 容器:動態概念,從鏡像創建的一個實例,容器之間相互隔離,可進行啟停、創建和刪除操作
  • Docker Repository 倉庫:存放鏡像

Docker特點

  • 可管理性:單進程、不建議啟動SSH
  • 前臺運行進程,進程結束時容器停止,Docker只實現進程級別的隔離(虛擬機實現操作系統級別的隔離)
  • 基於C/S架構:Server端服務中斷則運行於其上的所有容器停止
  • 簡化配置與快速部署:應用與運行環境進行打包,快速產品交付,可同時進行多個版本測試
  • 不可變理論:原來的不改動,重新創建新的,保證環境一致性
  • 支持微服務架構:自動化擴容,Docker在京東的應用

二、Docker安裝

安裝Docker Community Edition (CE)

cd /etc/yum.repos.d/ && wget https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io -y

查看docker版本

docker -v

查看docker命令幫助

docker --help
docker inspect --help

Docker安裝官方教程

三、Docker基本使用

Docker Server相關命令

查看Docker Server守護進程運行狀態

systemctl status docker
systemctl start docker

Docker鏡像管理相關命令

顯示當前所有鏡像

docker images

搜索docker鏡像

docker search nginx
docker search centos

拉取/下載docker鏡像

docker pull centos
docker pull nginx

以tar格式導出本地docker鏡像

docker save -o nginx.tar nginx

導入本地docker鏡像

docker load -i nginx.tar

刪除docker鏡像

docker rmi <IMAGE ID>

四、Docker容器相關命令

Docker容器管理方式

  1. 通過docker容器的CONTAINER ID
  2. 通過docker容器的NAMES

Docker容器相關命令

查看所有docker容器及狀態

docker ps -a
#只顯示運行中的容器
docker ps

啟動docker容器,並執行echo命令,最後容器進入停止狀態

docker run --name mycentos centos /bin/echo "abc"
#命令格式,註意鏡像名稱放在所有參數的後面
#docker run [ARG...] IMAGE [COMMAND] [ARG...]
#--rm 表示容器停止後刪除
docker run --rm centos /bin/echo "abc"

啟動docker容器,分配TTY和打開容器的標準輸入

docker run --name mycentos -t -i centos /bin/bash
#然後進入該容器執行命令
ps aux
#顯示的是物理機狀態(說明docker只實現進程級別的隔離)
cat /proc/cpuinfo
free -h
exit

重新啟動指定容器

docker start mycentos

容器執行指定命令

docker exec mycentos ps -aux
docker exec mycentos w

刪除容器

docker rm mycentos
#-f 強制刪除運行中的容器
docker rm -f mycentos

五、進入指定容器

方法一

#首先安裝util-linux工具包,包含nsenter工具
yum install util-linux -y
#獲取容器的PID
docker inspect -f {{.State.Pid}} mycentos
#進入命名空間,nsenter --help
nsenter -t <PID> -m -u -i -n -p
ps -ef  
#不會直接退出docker,因為nsenter創建了一個線程
exit

對方法一進行優化:編寫shell腳本

[root@linux-202 ~]# cat docker_in.sh 
#!/bin/bash

#Use Docker name and nsenter tool to attach Docker.

DOCKER_NAME=$1
DOCKER_PID=`docker inspect -f {{.State.Pid}} $DOCKER_NAME`
nsenter -t $DOCKER_PID -m -u -i -n -p
[root@linux-202 ~]# chmod +x docker_in.sh 
[root@linux-202 ~]# ./docker_in.sh mycentos

方法二

docker attach mycentos
#會直接退出docker
exit

方法三

docker exec -i -t mycentos /bin/bash

Docker安裝與基礎使用