docker 的一些基礎概念
docker command
systemctl start docker
systemctl restart docker
systemctl enable docker
配置加速映象
新增配置
vi /etc/docker/daemmon.json
{
"registry-mirrors":[
"http://hub-mirror.c.163.com"
]
}
載入配置
systemctl daemon-reload
重啟docker
systemctl restart docker
docker ps -a 檢視所有容器程序
docker rm xxxxxxxx 移除容器xxxxxxxx
docker rmi hello-world 移除hello-world映象
docker 映象相關的命令 docker pull --help
從docker 倉庫獲取映象 docker pull [選項]
docker image ls 列出所有下載過的映象(docker images)
[root@pikzas docker]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 065cf14a189c 4 weeks ago 135MB
hello-world latest d1165f221234 4 months ago 13.3kB
ubuntu
[root@pikzas docker]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 3 1 262.3MB 262.3MB (99%)
Containers 1 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
檢視映象 容器 資料卷所佔用空間
doceker system df
[root@pikzas docker]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 3 1 262.3MB 262.3MB (99%)
Containers 1 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
倉庫名 和標籤都為none的映象為虛懸映象
docker image ls -f dangling=true
[root@pikzas pikzas]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 065cf14a189c 4 weeks ago 135MB
hello-world latest d1165f221234 4 months ago 13.3kB
ubuntu
虛懸映象是可以直接刪除的
可以用命令 docker image prune來刪除掉所有的虛懸映象
刪除本地映象
docker rmi [選項] <映象1> <映象2>
<映象> 可以是短ID 長ID 映象名 或者是映象摘要
映象查詢用 docker image ls -q
[root@pikzas pikzas]# docker image ls -q hello-world
d1165f221234
於是批量刪除可以結合以上兩個命令
docker image rm $(docker image ls -q xxx -f before=xxx:1.0) 刪除所有xxx:1.0之前的所有映象
docker 容器的操作
新建並啟動 或者啟動停止的機器
docker run
docker start
[root@pikzas ~]# docker run -it ubuntu:16.04 bash
root@4e2a8f71de37:/#
通過新增-d 引數來開啟後臺執行
[root@pikzas ~]# docker run -d hello-world
c11e78317c1f34b13d1c441a6998980ddce3be23b2b090ed3968ea4fefb5696f
docker logs
[root@pikzas ~]# docker logs c11e78317c1f34b13d1c441a6998980ddce3be23b2b090ed3968ea4fefb5696f
Hello from Docker!
This message shows that your installation appears to be working correctly.
docker container stop
docker container ls -a 列出所有停止執行的容器
docker container start
docker container restart
docker exec
[root@pikzas ~]# docker exec -it 95d86d0cd867 bash
root@95d86d0cd867:/# ll
total 20
drwxr-xr-x 21 root root 4096 Jul 19 01:30 ./
drwxr-xr-x 21 root root 4096 Jul 19 01:30 ../
-rwxr-xr-x 1 root root 0 Jul 19 01:30 .dockerenv*
drwxr-xr-x 2 root root 4096 Jun 11 23:09 bin/
drwxr-xr-x 2 root root 6 Apr 12 2016 boot/
drwxr-xr-x 5 root root 360 Jul 19 01:32 dev/
docker export
docker import 匯入快照為本地映象
cat x.zip | docker import - 映象使用者/映象名稱:映象版本
同樣可以通過url 或者目錄來匯入
docker import http://study.163.com/image.tgz example/imagerepo
刪除容器(只有終止狀態的容易可以被刪除,執行狀態的不可刪除)
docker container rm ubuntu:16.04
強行要刪除執行狀態的容器 需要新增-f 強制停止容器
刪除所有停止狀態的容器
docker container prune
[root@pikzas ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4e2a8f71de37 ubuntu:16.04 "bash" 2 hours ago Exited (127) About an hour ago focused_pasteur
971fde08741d hello-world "/hello" 12 hours ago Exited (0) 12 hours ago nostalgic_brahmagupta
[root@pikzas ~]# docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
^[[ADeleted Containers:
4e2a8f71de372dcdc8cde4c86eca83c673228b8fe9bd0b07c34e5a32d4cc0b1b
971fde08741dff0af5760d73f127eb8ad4c7fb9a97aac1220f45e22425d54c1c
Total reclaimed space: 28B
[root@pikzas ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@pikzas ~]#
dockfile 定製映象
- 就是指定容器每一層需要的配置 然後以配置檔案的形式指定具體的細節
FROM 命令
RUN 命令
COPY 命令
ADD 命令
CMD 命令
ENV 命令 設定環境變數
ARG 命令
VOLUMN 命令 VOLUMN <路徑> docker 不推薦直接在容器內部寫檔案資料
EXPOSE <埠> 宣告對映的埠
WORKDIR <工作路徑> 指定當前工作的路徑
ONBUILD
docker save
docker hub 搭建私有倉庫
docker-registry
curl 127.0.0.1:5000/v2/_catalog檢視本地安裝的docker 內有哪些映象
Dockerfile 預設就是該檔案為配置
docker build -t myimage:1.0 .
構建當前目錄下的Dockerfile 為一個新的映象並命名為myimage版本為1.0
DOCKER 建立資料卷
docker三種寫入資料的方式
資料卷 掛載主機目錄 記憶體
建立資料卷
docker volumn create my-volumn
docker volumn ls
docker volumn inspect my-volumn
docker run 使用--mount
docker run --name session-web -d -p 8888:8080 --mount type=bind,source=/src/webapp,target=/opt/webapp session-web:latest
刪除資料卷
docker volumn rm test
一般情況下刪除容器不會刪除這些容器所使用的資料卷
但是還是可以通過docker rm -v 再刪除容器的同時候 一起刪除掉所使用的資料卷
docker volume prune 可以刪除無容器引用的資料卷
docker compose的使用
docker 的監控工具
類似於ELK 可以用CAdvisor + InfluxDB + Grafana
Grafana UI展示介面
InfluxDB 開源的時序化儲存的DB 用來儲存docker 執行的監控資料
CAdvisor 收集容器執行時的資料
部署InfluxDB 服務
docker run -d --name influxdb -p 8086:8086 -v /data/influxdb:/var/lib/influxdb --hostname=influxdb influxdb
訪問管理的客戶端
http://ip:8083
docker exec -it influxdb influx
CREATE DATABASE "test"
CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES
部署CAdvisor 服務
部署Granfana 服務
docker run -d -p 3000:3000 -v /data/grafana:/var/lib/grafana --link=influxdb:influxdb --name grafana grafana/grafana