docker的主要組成部分
docker是傳統的CS架構分爲docker client和docker server,向mysql一樣
docker的鏡像管理
查看鏡像列表:
docker images
docker image ls
導出鏡像:
docker image save centos > docker-centos6.9.tar.gz
導入鏡像:
docker image load -i docker-centos6.9.tar.gz
刪除鏡像:
docker image rm centos:latest
docker image rm 578c3
搜索鏡像 docker search + 鏡像名字
給源中鏡像打標籤:
docker tag nginx:latest 10.0.0.11:80/nginx:latest
推送指定鏡像到docker鏡像源服務器
docker push 10.0.0.11:80/nginx:latest
獲取鏡像 (下載) docker pull image_name
官方pull docker pull centos:6.8(沒有指定版本,默認會下載最新版) 私有倉庫pull docker pull daocloud.io/huangzhichong/alpine-cn:latest
docker history image_name 顯示一個鏡像的歷史
docker build -t <image-name> . *(點一定不能去掉)#使用當前目錄下的Dockerfile構建鏡像
docker的容器管理
docker -v #查看版本
docker info #查看docker信息
運行容器
docker run --name 容器名 -d -p 3306:3306 mysql docker 啓動容器
docker run image_name
docker run -d -p 80:80 nginx:latest
run(創建並運行一個容器)
-d 放在後臺
-p 端口映射 :docker的容器端口
-P 隨機分配端口
-v 源地址(宿主機):目標地址(容器)
docker run -it --name centos6 centos:6.9 /bin/bash
-it 分配交互式的終端
--name 指定容器的名字
/bin/sh覆蓋容器的初始命令
docker run image_name 啓動容器***
docker stop container_id 停止容器
docker kill container_name 殺死容器
docker ps (-a -l -q) 查看容器列表
docker container rm 'docker ps -a -q' 刪除所有容器
docker rm -f 'docker ps -a -q` #刪除所有容器
docker ps -a #查看容器列表
docker exec -it 77cd6bef4dc9 /bin/bash #進容器
docker start/stop container-id||container-name 開啓/停止 指定容器id或者容器名稱的容器
docker run -d -p 80:80 -v /opt/xiaoniao:/usr/share/nginx/html nginx:latest
docker logs container-name/container-id #查看容器日誌
docker ps | grep ${CONTAINER_ID} #查看容器狀態
docker commit ID new_image_name #鏡像打包 (保存對容器的修改)
docker commit -m="提交的描述信息" -a="作者" 容器id 要創建的目標鏡像名:[標籤名]
docker inspect <id/container_name> #查看容器內部詳情細節
docker login #登錄
Ctrl+P+Q #退出而不關閉容器
案例如下:
容器列表
docker ps
docker ps –a
啓動容器
docker restart 容器id1 [容器id2] [...]
停止容器
docker stop [container id1] [container id2] [...]
啓動容器
docker start [container id1] [container id2] [...]
鏡像列表
docker images
刪除鏡像
docker rmi [image id1] [image id2] [...]
刪除所有鏡像
docker rmi $(docker images -q)
啓動所有容器
docker start $(docker ps -a -q)
更新所有容器啓動時自動啓動
docker update --restart=always $(docker ps -q -a)
監控
docker stats 容器1 [容器2]
監控所有容器
docker stats $(docker ps -a -q)
docker stats --no-stream=true $(docker ps -a -q)
進入容器內部
docker exec -it [container id] /bin/bash
docker exec -it [container id] bash
查看容器日誌
docker logs [container id]
docker-compose
build
構建或重新構建服務。 服務一旦構建後,將會帶上一個標記名,例如 web_db。 可以隨時在項目目錄下運行 docker-compose build 來重新構建服務。
up
構建,(重新)創建,啓動,鏈接一個服務相關的容器。 鏈接的服務都將會啓動,除非他們已經運行。 默認情況, docker-compose up 將會整合所有容器的輸出,並且退出時,所有容器將會停止。 如果使用 docker-compose up -d ,將會在後臺啓動並運行所有的容器。 默認情況,如果該服務的容器已經存在, docker-compose up 將會停止並嘗試重新創建他們(保持使用 volumes-from 掛載的卷),以保證 docker-compose.yml 的修改生效。如果你不想容器被停止並重新創建,可以使用 docker-compose up --no-recreate。如果需要的話,這樣將會啓動已經停止的容器。
down
docker-compose down 停止並刪除容器
docker-compose down --rmi local
rm
刪除停止的服務容器。
docker-compose rm
logs
查看服務的輸出。
docker-compose logs
ps
列出所有容器。
docker-compose ps
kill
通過發送 SIGKILL 信號來強制停止服務容器。支持通過參數來指定發送的信號,例如
$ docker-compose kill