@
Docker基本使用
Docker是一個開源的應用容器引擎;是一個輕量級容器技術;
Docker支持將軟件編譯成一個鏡像;然后在鏡像中各種軟件做好配置,將鏡像發布出去,其他使用者可以直接使用這個鏡像;
運行中的這個鏡像稱為容器,容器啟動是非常快速的。

核心概念
docker主機(Host):安裝了Docker程序的機器(Docker直接安裝在操作系統之上);
docker客戶端(Client):連接docker主機進行操作;
docker倉庫(Registry):用來保存各種打包好的軟件鏡像;
docker鏡像(Images):軟件打包好的鏡像;放在docker倉庫中;
docker容器(Container):鏡像啟動后的實例稱為一個容器;容器是獨立運行的一個或一組應用

使用Docker的步驟:
- 確認要安裝docker的系統的linux內核高於
3.10,低於3.10使用yum update更新uname -r - 安裝docker
yum install docker - 查看docker版本
docker -v - 查看docker狀態
service docker status - 啟動docker
service docker start - 停止docker
service docker stop - 設置docker開機自啟
systemctl enable docker

docker常用命令
鏡像操作
| 操作 | 命令 | 說明 |
|---|---|---|
| 檢索 | docker search 關鍵字 eg:docker search redis | 我們經常去docker hub上檢索鏡像的詳細信息,如鏡像的TAG。 |
| 拉取 | docker pull 鏡像名:tag | :tag是可選的,tag表示標簽,多為軟件的版本,默認是latest |
| 列表 | docker images | 查看所有本地鏡像 |
| 刪除 | docker rmi image-id | 刪除指定的本地鏡像 |
![]() |
修改鏡像源
修改 /etc/docker/daemon.json ,寫入如下內容(如果文件不存在請新建該文件)
vim /etc/docker/daemon.json
# 內容:
{
"registry-mirrors":["http://hub-mirror.c.163.com"]
}
| 國內鏡像源 | 地址 |
|---|---|
| Docker 官方中國區 | https://registry.docker-cn.com |
| 網易 | http://hub-mirror.c.163.com |
| 中國科技大學 | https://docker.mirrors.ustc.edu.cn |
| 阿里雲 | https://pee6w651.mirror.aliyuncs.com |

容器操作
以tomcat為例:
-
下載tomcat鏡像
docker pull tomcat -
根據鏡像啟動容器,不加TAG默認latest,如果沒有下載latest會先去下載再啟動
docker run --name mytomcat -d tomcat:latest--name:給容器起個名字-d:后台啟動,不加就是前端啟動,然后你就只能開一個新的窗口連接,不然就望着黑乎乎的窗口,啥也干不了,Ctrl+C即可退出,當然,容器也會關閉 -
查看運行中的容器
docker ps -
停止運行中的容器
docker stop 容器的id # 或者 docker stop 容器的名稱,就是--name給起的哪個名字 -
查看所有的容器
docker ps -a -
啟動容器
docker start 容器id/名字 -
刪除一個容器
docker rm 容器id/名字 -
啟動一個做了端口映射的tomcat
docker run -d -p 8888:8080 tomcat-d:后台運行-p: 將主機的端口映射到容器的一個端口 主機端口(8888):容器內部的端口(8080)外界通過主機的8888端口就可以訪問到tomcat,前提是8888端口開放
-
關閉防火牆
# 查看防火牆狀態 service firewalld status # 關閉防火牆 service firewalld stop -
查看容器的日志
docker logs 容器id/名字

以mysql為例:
# 拉取鏡像
docker pull mysql:5.7.28
# 運行mysql容器
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.28
--name mysql:容器的名字是mysql;
MYSQL_ROOT_PASSWORD=root:root用戶的密碼是root (必須指定)
連接容器內mysql
在使用 -d 參數時,容器啟動后會進入后台。此時想要進入容器,可以通過以下指令進入:
-
docker attach -
docker exec:推薦使用 docker exec 命令,因為此退出容器終端,不會導致容器的停止。docker exec -it mysql bash-i: 交互式操作。-t: 終端。mysql: 名為mysql的鏡像。bash:放在鏡像名后的是命令,這里我們希望有個交互式Shell,因此用的是bash,也可以用/bin/bash。連接上以后就可以正常使用mysql命令操作了
mysql -uroot -proot直接使用端口映射更加方便
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.28

普通用戶運行docker
docker 命令只能由root用戶運行,普通用戶還需要加上sudo命令。在第三方開發工具中無法使用docker插件
docker守護進程啟動的時候,會默認賦予名為docker的用戶組讀寫Unix socket的權限,因此只要創建docker用戶組,並將當前用戶加入到docker用戶組中,那么當前用戶就有權限訪問Unix socket了,進而也就可以執行docker相關命令
安裝docker已經創建了docker用戶組,只需要將用戶加入到docker組即可
sudo gpasswd -a 用戶名 docker
