1.docker是通過鏡像去創建容器用的
2.Dockerfile是通過別的鏡像,增加些操作去自己制作鏡像
3.docker-compose可以理解成docker的升級版,docker能做的事情它也能做,同時它還具有編排多個docker的作用。
假如:我們有兩個容器,一個是springboot應用,一個是mysql。那么我們會通過docker去創建兩個容器,但是我們要求得先啟動mysql再啟動應用,這時候docker就顯得有些無能了,但是docker-compose卻有編排的能力。
前提:
1.服務器要先安裝好docker-compose
2.尋找一處文件夾作為docker-compose的上下文,在里面創建一個文件叫 docker-compose.yml 大小寫一個字都不差,就是spring的application.yml類似,作為默認文件。
3.通過命令 docker-compose up (-d)的方式來啟動
我們通過單個容器對比以及多個編排在一起的方式來學習docker-compose
-----------------------------------------------------------------------------------------------------------------
1.mysql
1)docker方式啟動
docker run -v /data/mariadb/conf.d:/etc/mysql/conf.d -v /data/mariadb/logs:/logs -v /data/mariadb/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD='compass#123456' -p 6603:3306 --restart=always --privileged=true --name compass-mariadb -d mariadb:10.4.15
2)docker-compose方式啟動
version: "3" services: mysql: image: mariadb:10.4.15 container_name: compass-mariadb environment: - MYSQL_ROOT_PASSWORD=compass#123456 privileged: true restart: always ports: - "6603:3306" volumes: - mysqlconfig:/etc/mysql/conf.d - mysqllog:/logs - /data/mariadb/data:/var/lib/mysql volumes: mysqlconfig: external: false mysqllog:
說明一下:我這邊通過默認數據卷的方式,用了兩個默認數據卷
mysqlconfig mysqllog 可以通過命令 docker volume ls來查看系統所有的數據卷 通過命令docker inspect mysqllog來查詢某個數據卷的具體信息,包括路徑
2.rabbitmq
1)docker 方式啟動
docker run -e RABBITMQ_DEFAULT_USER=compass -e RABBITMQ_DEFAULT_PASS=compass123456 -p 16672:15672 -p 6672:5672 --restart=always --privileged=true --name compass-rabbitmq -d registry.kpmg.com/rabbitmq:3.8.3-management
2)docker-compose啟動
version: "3" services: rabbit-mq: image: registry.kpmg.com/rabbitmq:3.8.3-management container_name: compass-rabbitmq environment: - RABBITMQ_DEFAULT_USER=compass - RABBITMQ_DEFAULT_PASS=compass123456 privileged: true restart: always ports: - "16673:15672" - "6673:5672"
3.redis
1)docker方式啟動
version: "3" services: redis: image: harbor.cn.kworld.kpmg.com/library/redis:6.0.9 container_name: shared-redis command: redis-server --appendonly yes --requirepass 123456 restart: always ports: - "16379:6379" volumes: - /apps/redis/data:/data
2)docker-compose方式啟動
version: "3" services: redis: image: harbor.cn.kworld.kpmg.com/library/redis:6.0.9 container_name: my-redis command: redis-server --appendonly yes --requirepass 123456 restart: always ports: - "26379:6379" volumes: - redisdata:/data volumes: redisdata:
總結:其實docker-compose就是另一種docker方式的寫法
真實運行效果:
1 文件位置
2.分別到不同的文件夾下去執行命令 docker-compose up -d
3.指定文件去啟動 docker-compose -f docker-compose.yml up -d
4.最后查詢