一、概述
1、架構
Docker容器基于鏡像運行,容器共享宿主機的內核,不會加載額外內核,通過Namespaces(環境隔離)和Cgroups(資源控制)實現隔離,Cgroups會限容器使用資源并控制優先級和統計數據。隔離后的容器僅包含應用所需的用戶態依賴
2、安裝
安裝先卸載再安裝,使用的
yum remove ...
、yum install ...
。可以去阿里云的容器鏡像服務配置docker的加速器,修改/etc/docker/daemon.json文件
二、命令
1、系統命令
systemctl start docker
:啟動dockersystemctl stop docker
:停止dockersystemctl restart docker
:重啟dockersystemctl enable docker
:設置開機自啟systemctl status docker
:查看docker狀態
2、docker常用命令
docker pull 鏡像名:標簽
:拉取指定版本的鏡像,不指定標簽的話,一般為默認拉取的是latest標簽即最新或被維護的鏡像docker images
:查看所有鏡像docker rmi [-f] 鏡像名
:刪除指定鏡像。-f表示強制刪除,有運行中的容器也可以刪除docker run ……
:創建并啟動一個容器docker rm [-f] [-v] 容器名
:刪除掉一個容器,-v同時強制刪除關聯匿名卷docker start 容器名
:啟動一個指定的容器docker restart 容器名
:重啟一個指定的容器docker stop 容器名
:停止一個指定的容器docker ps [-a] [--filter "status=exited"]
:查看所有運行的容器,-a參數表示查看所有容器。–format可以指定輸出的格式,–filter可以進行過濾docker logs [-f] 容器名
:查看容器的日志。-f表示動態的查看docker exec -it 容器名 bash
:進入到容器的內部。-it表示可交互的終端。bash表示命令行的模式。容器內exit命令退出。某些精簡鏡像可能只有sh。bash是sh的增強版,支持更多功能docker save -o 保存后的名字.tar 鏡像名:標簽
:將鏡像保存下來,可以實現鏡像的傳遞docker load -i 保存后的名字
:將docker save
的鏡像加載到本機的docker images
中docker -v
:查看版本docker inspect 容器名
:查看容器的詳細信息
3、創建并運行容器案例
Mysql
docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \--network mynetmysql
docker run -d
:創建并運行一個容器,-d讓容器在后臺運行--name mysql
:給容器起一個名字,必須唯一-p 3306:3306
:端口映射,宿主機端口映射容器內的端口-e TZ=Asia/Shanghai
:環境變量,key=value,每個容器預設的鍵值對--network mynet
:使容器加入名字為mynet的這個網絡中,指定后就不會加入默認的網絡中mysql
:運行的鏡像名字。完整寫法:[repository]:[tag]
,如mysql:5.7
。沒寫的話,默認latest,最新版本
Jenkins
docker run --name jenkins -u root -d \-p 8080:8080 -p 50000:50000 \-v /var/jenkins_home:/var/jenkins_home \-v /var/run/docker.sock:/