[TOC]
1. docker命令
1.1 鏡像
查看系統(tǒng)中存在的鏡像-a 列出所有images(包含歷史) lo
docker images
獲取服務器上鏡像列表
docker search tutorial
拉取鏡像
docker pull busybox
刪除一個或多個image
docker rmi <image ID>
1.2 容器
運行 busybox系統(tǒng)中的hello docker程序
docker run busybox /bin/echo Hello Docker
使用鏡像創(chuàng)建容器
- -i 標記保證容器STDIN是開啟的
- -t 創(chuàng)建一個客戶端創(chuàng)建一個容器梆砸,讓其中運行 bash 應用抄沮,退出后容器關閉
- --name 創(chuàng)建一個名稱centos_aways的容器,自動重啟
- --restart參數(shù):always始終重啟份乒;on-failure退出狀態(tài)非0時重啟杀怠;默認為椰憋,no不重啟
docker run -i -t sauloal/ubuntu14.04
docker run -i -t sauloal/ubuntu14.04 /bin/bash
docker run -itd --name centos_aways --restart=always centos
運行docker logs命令來查看job的當前狀態(tài):
docker logs $sample_job 或者docker logs -f 容器名
名為sample_job的容器,可以使用以下命令來停止:
docker stop $sample_job
重新啟動該容器:
docker restart $sample_job
如果要完全移除容器赔退,需要先將該容器停止橙依,然后才能移除
docker stop $sample_jobdocker rm $sample_job
將容器的狀態(tài)保存為鏡像
docker commit $sample_job job1
- 再次啟動容器
- 開啟/停止/重啟container
- 再次運行某個container (包括歷史container)
docker start/stop/restart <container>
docker start [container_id]
進入正在運行的docker容器
docker exec -it [container_id] /bin/bash
將docker容器中8080端口映射到主機上80端口 ,如果此處不加90,也就是本機端口的映射硕旗,docker也同樣會隨機映射一個本機端口 -d 后臺運行
docker run -i -t -p 90:8081 javaweb/centos:0.1
刪除容器#:刪除一個或多個container docker
docker rm <container...>
刪除所有的container
docker rm 'docker ps -a -q'
同上, 刪除所有的container
docker ps -a -q | xargs docker rm
將主機/data目錄掛載到docker容器中/mnt下面
docker run -v /data:/mnt -i -t 980e0e4c79ec /bin/bash
根據(jù)57c312bbaad1創(chuàng)建鏡像huangyong/javaweb:0.1
docker commit 57c312bbaad1 huangyong/javaweb:0.1
進入已經(jīng)啟動的容器中
docker attach 容器名
訪問docker客戶端
nc -U /var/run/docker.sock
查看docker的運行狀態(tài)
status docker
service命令管理docker進程start stop statusrestart
service docker stop
以守護模式運行docker程序
docker -d
查看docker信息
docker info
使用h配置啟動選項
docker -H
查看docker開放的端口隨機映射到主機上的端口
docker port 容器 端口
創(chuàng)建demo1和demo2的連接窗骑,并且在demo2容器中可以通過db的別名進行連接。
docker run -d -P --name demo2 --link demo1:db 容器名
導出鏡像
docker save busybox-1 > /home/save.tar
導入鏡像
docker load -i 鏡像名稱
查看端口
runoob@runoob:~$ docker port bf08b7f2cd89
5000/tcp -> 0.0.0.0:5000
查看容器內(nèi)部運行進程
runoob@runoob:~$ docker top wizardly_chandrasekhar
UID PID PPID ... TIME CMD
root 23245 23228 ... 00:00:00 python app.py
檢查docker底層信息
runoob@runoob:~$ docker inspect wizardly_chandrasekhar
[
{
"Id": "bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85",
"Created": "2018-09-17T01:41:26.174228707Z",
"Path": "python",
"Args": [
"app.py"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 23245,
"ExitCode": 0,
"Error": "",
"StartedAt": "2018-09-17T01:41:26.494185806Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
......
1.3 容器鏈接
1.3.1 網(wǎng)絡端口映射
我們也可以使用 -p 標識來指定容器端口綁定到主機端口漆枚。
兩種方式的區(qū)別是:
-P :是容器內(nèi)部端口隨機映射到主機的高端口创译。
-p : 是容器內(nèi)部端口綁定到指定的主機端口。
unoob@runoob:~$ docker run -d -p 5000:5000 training/webapp python app.py
33e4523d30aaf0258915c368e66e03b49535de0ef20317d3f639d40222ba6bc0
runoob@runoob:~$ docker ps
CONTAINER ID IMAGE COMMAND ... PORTS NAMES
33e4523d30aa training/webapp "python app.py" ... 0.0.0.0:5000->5000/tcp berserk_bartik
fce072cc88ce training/webapp "python app.py" ... 0.0.0.0:32768->5000/tcp grave_hopper
綁定UDP端口
runoob@runoob:~$ docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
6779686f06f6204579c1d655dd8b2b31e8e809b245a97b2d3a8e35abe9dcd22a
runoob@runoob:~$ docker ps
CONTAINER ID IMAGE COMMAND ... PORTS NAMES
6779686f06f6 training/webapp "python app.py" ... 5000/tcp, 127.0.0.1:5000->5000/udp drunk_visvesvaraya
95c6ceef88ca training/webapp "python app.py" ... 5000/tcp, 127.0.0.1:5001->5000/tcp adoring_stonebraker
33e4523d30aa training/webapp "python app.py" ... 0.0.0.0:5000->5000/tcp berserk_bartik
fce072cc88ce training/webapp "python app.py" ... 0.0.0.0:32768->5000/tcp grave_hopper
快速查看端口綁定情況
runoob@runoob:~$ docker port adoring_stonebraker 5000
127.0.0.1:5001
1.3.2 Docker 容器互聯(lián)
新建網(wǎng)絡
參數(shù)說明:
- -d:參數(shù)指定 Docker 網(wǎng)絡類型墙基,有 bridge软族、overlay。
其中 overlay 網(wǎng)絡類型用于 Swarm mode残制,在本小節(jié)中你可以忽略它立砸。
$ docker network create -d bridge test-net
連接容器
$ docker run -itd --name test1 --network test-net ubuntu /bin/bash
查看網(wǎng)絡
docker network ps
1.3.3 配置DNS
我們可以在宿主機的 /etc/docker/daemon.json
文件中增加以下內(nèi)容來設置全部容器的 DNS:
設置后,啟動容器的 DNS 會自動配置為 114.114.114.114 和 8.8.8.8初茶。
配置完颗祝,需要重啟 docker 才能生效。
查看容器的 DNS 是否生效可以使用以下命令恼布,它會輸出容器的 DNS 信息:
{
"dns" : [
"114.114.114.114",
"8.8.8.8"
]
}
查看DNS
$ docker run -it --rm ubuntu cat etc/resolv.conf
如果只想在指定的容器設置 DNS吐葵,則可以使用以下命令:
參數(shù)說明:
- -h HOSTNAME 或者 --hostname=HOSTNAME: 設定容器的主機名,它會被寫到容器內(nèi)的 /etc/hostname 和 /etc/hosts桥氏。
- --dns=IP_ADDRESS: 添加 DNS 服務器到容器的 /etc/resolv.conf 中温峭,讓容器用這個服務器來解析所有不在 /etc/hosts 中的主機名。
- --dns-search=DOMAIN: 設定容器的搜索域字支,當設定搜索域為 .example.com 時凤藏,在搜索一個名為 host 的主機時奸忽,DNS 不僅搜索 host,還會搜索 host.example.com揖庄。
$ docker run -it --rm host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu
2.K8S命令
2.1 Namespace
查詢指定命名空間
kubectl get pods --namespace=development
kubectl describe pod tomcat-weixin-1508772460-9s1dk --namespace=ec-prod-app
查看命名空間描述
kubectl describe ns XXX
2.2 Service
查看service
kubectl get service --all-namespaces
2.3 Pod
獲得哦命名空間下所有pod栗菜,包含宿主機IP
kubectl get pod --all-namespaces -o wide
查看pod描述
kubectl describe po XXX
根據(jù)yaml文件刪除pod
kubectl delete -f bjyd-dp-wls-dev.yaml
根據(jù)yaml文件創(chuàng)建pod
kubectl create -f bjyd-dp-wls-dev.yaml
更新pod
kubectl replace /path/ to/ my- pod. yaml
2.4 擴所容
擴/縮容
kubectl scale rc redis-slave --replicas=3
根據(jù)yaml文件擴容
kubectl scale --replicas=3 -f bjyd-dp-wls-dev.yaml
查詢pod event
kubectl get event
2.5 日志
查詢?nèi)萜魅罩?/p>
$ kubectl create -f log- pod. yaml pod "log- pod" created
Pod 創(chuàng)建 成功 后, 會 重新 創(chuàng)建 異常 退出 的 容器 container2:
$ kubectl get pod log- pod NAME READY STATUS RESTARTS AGE log- pod 0/ 2 Error 1 19s
然后 分別 查詢 Pod 中 兩個 容器 的 日志:
$ kubectl logs log- pod container1
container1: 2015- 11- 21 14: 52: 55. 622701243+ 00: 00
$ kubectl logs log- pod container2
Pod "log-pod" in namespace "default": container "container2" is in waiting state.
Kubernetes 創(chuàng)建 Service 的 同時蹄梢, 會 自動 創(chuàng)建 跟 Service 同名 的 Endpoints:
$ kubectl get endpoints my- nginx -o yaml