深入学习前,先看看如何创建一个简单的应用、打包成容器镜像、在远程集群或本地集群运行
docker run busybox echo "Hello World"
)后,docker会检查busybox:latest镜像是否已经存在本机,如果没有会从http://docker.io的镜像中心拉取docker run <image>
docker run <image>:<tag>
docker build -t php:local .
)来构建镜像.
是告诉Docker是基于当前目录,构建名为php、标签为local的镜像;Docker会在目录中寻找Dockerfile,然后基于其中指令构建镜像使用docker images命令查看生成的镜像
$ docker images
php local b26e7de6427c 9 hours ago 64.7MB
php 7-zts-alpine3.9 0adbdb1b2250 2 weeks ago 64.7MB
docker run --name php-container -p 8000:8000 -d php:local
$ curl http://localhost:8000
docker ps
命令结果
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2b3eb8cbab22 php:local "docker-php-entrypoi…" 2 minutes ago Up 2 minutes 0.0.0.0:8000->8000/tcp php-container
docker inspect php-container
会打印出包含容器底层信息的长jsondocker exec -it php-container ls -al /
输出结果
$ docker exec -it php-container ls -al /
total 68
drwxr-xr-x 1 root root 4096 May 28 23:13 .
drwxr-xr-x 1 root root 4096 May 28 23:13 ..
-rwxr-xr-x 1 root root 0 May 28 23:13 .dockerenv
drwxr-xr-x 1 root root 4096 May 11 03:27 bin
drwxr-xr-x 5 root root 340 May 28 23:13 dev
drwxr-xr-x 1 root root 4096 May 28 23:13 etc
drwxr-xr-x 1 root root 4096 May 11 03:04 home
-rw-r--r-- 1 root root 33 May 28 23:12 index.php
docker exec -it php-container sh
查看容器里运行的进程
# ps -ef
PID USER TIME COMMAND
1 root 0:00 /usr/local/bin/php -S 0.0.0.0:8000
7 root 0:00 sh
12 root 0:00 ps -ef
执行ls -al /命令查看
# ls -al /
total 68
drwxr-xr-x 1 root root 4096 May 29 03:58 .
drwxr-xr-x 1 root root 4096 May 29 03:58 ..
-rwxr-xr-x 1 root root 0 May 29 03:58 .dockerenv
drwxr-xr-x 1 root root 4096 May 11 03:27 bin
drwxr-xr-x 5 root root 340 May 29 03:58 dev
drwxr-xr-x 1 root root 4096 May 29 03:58 etc
drwxr-xr-x 1 root root 4096 May 11 03:04 home
-rw-r--r-- 1 root root 33 May 28 23:12 index.php
drwxr-xr-x 1 root root 4096 May 11 03:27 lib
drwxr-xr-x 5 root root 4096 May 9 20:49 media
drwxr-xr-x 2 root root 4096 May 9 20:49 mnt
drwxr-xr-x 2 root root 4096 May 9 20:49 opt
dr-xr-xr-x 262 root root 0 May 29 03:58 proc
drwx------ 1 root root 4096 May 29 03:59 root
drwxr-xr-x 2 root root 4096 May 9 20:49 run
drwxr-xr-x 2 root root 4096 May 9 20:49 sbin
drwxr-xr-x 2 root root 4096 May 9 20:49 srv
dr-xr-xr-x 13 root root 0 May 29 03:58 sys
drwxrwxrwt 1 root root 4096 May 11 03:27 tmp
drwxr-xr-x 1 root root 4096 May 11 03:27 usr
drwxr-xr-x 1 root root 4096 May 11 03:04 var
docker stop php-container
使用docker ps -a查看容器,发现状态已经是Exited
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c113cc387a6d php:local "docker-php-entrypoi…" 8 minutes ago Exited(137) 56 seconds ago php-container
docker rm php-container
docker tag php:local yeedom/php:v1
查看镜像docker images
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php local 9ed8b05c3334 13 hours ago 64.7MB
yeedom/php v1 9ed8b05c3334 13 hours ago 64.7MB
推送前先登录
$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: yeedom
Password:
Login Succeeded
推送镜像
国外网络可能不稳定,失败了可以多试几次
$ docker push yeedom/php:v1
The push refers to repository [docker.io/yeedom/php]
d281f172ef70: Pushed
8a1be1ed4590: Mounted from library/php
b39144a13ab7: Mounted from library/php
060efcf419e8: Mounted from library/php
f38edf0edb30: Mounted from library/php
0b0394abec4c: Mounted from library/php
21f626200b4c: Mounted from library/php
414e112bbb2c: Mounted from library/php
3575e617b5f4: Mounted from library/php
f1b5933fe4b5: Mounted from library/php
v1: digest: sha256:448c8eeca87506bbc6d41190073acdcab094aa0b0bd3c2551c4ced947f422ebb size: 2409
运行命令$ docker run -p 8000:8000 -d yeedom/php:v1
$ docker run -p 8000:8000 -d yeedom/php:v1
Unable to find image 'yeedom/php:v1' locally
v1: Pulling from yeedom/php
Digest: sha256:448c8eeca87506bbc6d41190073acdcab094aa0b0bd3c2551c4ced947f422ebb
Status: Downloaded newer image for yeedom/php:v1
a0d96dc65d6795ba5542754bd3a07e424da672960f545f5cf36e14fa02cac46f
删除镜像docker rmi yeedom/php:v1
$ docker rmi yeedom/php:v1
Untagged: yeedom/php:v1
Untagged: yeedom/php@sha256:448c8eeca87506bbc6d41190073acdcab094aa0b0bd3c2551c4ced947f422ebb
minikube start
命令kubectl get nodes
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready <none> 43m v1.14.2
$ kubectl describe node minikube
kube-shell
,带命令补齐和高亮正常来说,部署一个Kubernetes程序需要包含部署的所有组件描述的配置文件,因为第一次使用,所以用最简单的方法运行Kubernetes程序
运行命令
kube-shell> kubectl run php-container --image=yeedom/php:v1 --port=8000 --generator=run/v1
replicationcontroller "php-container" created
命令
$ kubectl describe pod php-container-mdkmq
Name: php-container-mdkmq
Namespace: default
Priority: 0
PriorityClassName: <none>
Node: minikube/10.0.2.15
Start Time: Thu, 30 May 2019 07:58:10 +0800
Labels: run=php-container
Annotations: <none>
Status: Running
…………………………
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
php-container-mdkmq 0/1 ContainerCreating 0 7
kubectl
命令时,向Kubernetes API服务器发送http请求在集群中创建一个新的ReplicationController对象$ kubectl expose rc php-container --type=LoadBalancer --name php-service
service "php-service" exposed
kubectl get service
$ kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 37d
php-service LoadBalancer 10.105.206.79 localhost 8000:32040/TCP 6s
$ curl http://localhost:8000
$ kubectl get service php-service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
php-service LoadBalancer 10.105.206.79 localhost 8000:32040/TCP 3m
kubectl run
命令创建了ReplicationController,它用于创建pod实例kubectl get rc
NAME DESIRED CURRENT READY AGE
php-container 1 1 1 52m
kubectl get pod
NAME READY STATUS RESTARTS AGE
php-container-xlhzh 1/1 Running 0 53m
kubectl scale rc php-container --replicas=3
replicationcontroller "php-container" scaled
kubectl get pods
NAME READY STATUS RESTARTS AGE
php-container-f879k 1/1 Running 0 5s
php-container-n2pwj 1/1 Running 0 5s
php-container-xlhzh 1/1 Running 0 54m
$ curl http://localhost:8000
php-container-n2pwj
2019-05-30 13:23:38
$ curl http://localhost:8000
php-container-xlhzh
2019-05-30 13:23:50
$ curl http://localhost:8000
php-container-f879k
2019-05-30 13:23:54
kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE
php-container-f879k 1/1 Running 0 50m 10.1.1.102 docker-for-desktop
php-container-n2pwj 1/1 Running 0 50m 10.1.1.101 docker-for-desktop
php-container-xlhzh 1/1 Running 0 1h 10.1.1.100 docker-for-desktop
kubectl describe pod php-container-f879k
Name: php-container-f879k
Namespace: default
Node: docker-for-desktop/192.168.65.3
Start Time: Thu, 30 May 2019 21:10:32 +0800
Labels: run=php-container
Annotations: <none>
Status: Running
IP: 10.1.1.102
Controlled By: ReplicationController/php-container