目錄
- docker是什么?
- docker基本概念
* 容器
* 鏡像
* 容器鏈接
* 倉庫
* Docker compose- docker-compose.yml配置
docker是什么?
docker是一個開源的性能開銷極低的容器引擎,容器完全使用沙箱機制,相互之間不會有任何接口(類似iphone的app)。
docker基本概念
容器
容器是鏡像的實例,鏡像是容器的類,通過運行鏡像可以創建容器。
常用命令
//獲取鏡像
docker pull ubuntu
//運行鏡像
docker run -it ubuntu /bin/bash
//退出終端
exit
//查看所有容器
docker ps -a
//啟動容器
docker start <容器 ID>
//后台運行,加入-d參數默認不會進入容器
docker run -itd --name ubuntu-test ubuntu /bin/bash
//停止一個容器
docker stop <容器 ID>
//重啟容器
docker restart <容器 ID>
//進入后台啟動的容器
docker attach <容器 ID>,從容器退出會導致容器停止
docker exec -it <容器 ID> /bin/bash 從容器退出,不會導致容器停止(推薦)
//刪除容器
docker rm -f <容器 ID>
參數說明:
- -i 交互式操作
- -t 終端
- -d 后台運行
- ubuntu 鏡像
- /bin/bash 放在鏡像后的是命令,我們希望有個交互式shell,因此使用/bin/bash
鏡像
常用命令
//查看鏡像
docker images
//獲取鏡像
docker pull ubuntu
//查找鏡像
docker search httpd
//刪除鏡像
docker rmi hello-world
創建鏡像
- 在已有鏡像上修改
- 使用Dockerfile文件構建
在已有鏡像上修改
更新鏡像:
在更新鏡像前我們需要先運行鏡像啟動容器
docker run -t -i ubuntu:15.10 /bin/bash
完成修改操作后,exit退出容器
使用docker commit提交修改
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
參數說明:
- -m 提交的描述信息
- -a 作者
- runoob/ubuntu:v2 指定要構建的鏡像名
構建鏡像:
docker build -t runoob/centos:6.7 .
參數說明:
- -t 要構建的鏡像名
- . Dockerfile文件所在路徑,可以指定Dockerfile所在絕對路徑
容器鏈接
- 端口映射
- 容器互聯
倉庫
我們可以將構建好的鏡像上傳到docker倉庫中,這里不過多描述。
Docker compose
docker compose是定義和運行多容器應用的工具。我們搭建開發環境和生產環境需要用到多個容器,所以要配置docker-compose.yml文件。
docker-compose.yml配置
version: "3"
services:
web:
image: node:12.16.1
working_dir: /code
volumes:
- .:/code
ports:
- "8360:8360"
command: npm start
mysql:
image: mysql:5.7
command: --default-authentication-plugin=mysql_native_password
volumes:
- ./data:/var/lib/mysql
restart: always
environment:
- MYSQL_USER=chunshan
- MYSQL_PASSWORD=123456
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=think-one
mongo:
image: mongo
volumes:
- ./data:/data/db
ports:
- "27017:27017"
command: --storageEngine wiredTiger --auth
ports:
- "3306:3306"
注意:
docker 容器一但刪除所有相關的數據都會消失,所以要使用volumes將數據掛載到項目文件加下,防止數據丟失造成損失。
參考資源:
https://www.runoob.com/docker/docker-compose.html
https://www.cnblogs.com/lostyu/p/docker_dev.html