从Docker 到 Kubernatetes 的跃迁之路

  

 

 

 

  直接上手开始干,不想在本机装虚拟机,发现网上有个web版的Docker和Kubernatetes。如今疫情期间又不能去公司,因此就拿这个web版的凑合试验一下。php

地址:https://labs.play-with-docker.com/   不过要注册,只能使用4个小时,后面要用,在申请。html

 

 

 是否是很惊喜?并且还有Open port ,还很人性化的。下面咱们就直接开始吧。node

运行映射端口的时候若是出现这个错误:linux

Error response from daemon: pull access denied for 6666, repository does not exist or may require 'docker login': denied: requested access to the resource is denied. See 'docker run --help

就登录:nginx

 

 

 

一、docker run

建立并启动一个新的容器git

经常使用参数以下:
-d #后台运行容器,并返回容器ID -i #以交互式模式运行容器,常与-t参数同时使用 -t #给容器从新分配一个伪终端,常与-i参数同时使用 --name #给容器指定一个名称 -m #指定容器使用内存的最大值 --net #指定容器使用的网络类型 --link #连接到另外一个容器

 

实例操做以下:
[root@docker ~]# docker run -d --name nginx nginx:latest #后台启动并运行一个名为nginx的容器,运行前它会自动去docker镜像站点下载最新的镜像文件 [root@docker ~]# docker run -d -P 80:80 nginx:latest #后台启动并运名为nginx的容器,而后将容器的80端口映射到物理机的80端口 [root@docker ~]# docker run -d -v /docker/data:/docker/data -P 80:80 nginx:latest #后台启动并运名为nginx的容器,而后将容器的80端口映射到物理机的80端口,而且将物理机的/docker/data目录映射到容器的/docker/data [root@docker ~]# docker run -it nginx:latest /bin/bash #以交互式模式运行容器,而后在容器内执行/bin/bash命令

 

 

就启动了。github

二、docker start/stop/restart/kill

启动/中止/重启/杀掉容器web

实例操做以下:
[root@docker ~]# docker start myweb [root@docker ~]# docker stop myweb [root@docker ~]# docker restart myweb [root@docker ~]# docker kill -s kill myweb 参数 -s #向容器发送信号

三、docker rm

删除容器docker

经常使用参数以下:
-f #强制删除一个运行中的容器 -l #删除指定的连接 -v #删除与容器关联和卷
实例操做以下:
[root@docker ~]# docker rm -f mydocker #强制删除容器mydocker [root@docker ~]# docker rm -f dockerA dockerB #强制删除容器dockerA,dockerB [root@docker ~]# docker rm -v mydocker #删除容器,并删除容器挂载的数据卷

四、docker create

建立一个新的容器但不启动它json

$ docker create --name myserver nginx:latest 09b93464c2f75b7b69f83d56a9cfc23ceb50a48a9db7652ee4c27e3e2cb1961f #建立一个名为myserver的容器

五、docker exec

在运行的容器中执行命令

经常使用参数以下:
-d #在后台运行 -i #保持STDIN打开 -t #分配一个伪终端
实例操做以下:
[root@docker ~]# docker exec -it mydocker /bin/sh /server/scripts/docker.sh hello world!!!!!!!!!! #以交互模式执行容器中的/server/scripts/docker.sh脚本 [root@docker ~]# docker exec -it mydocker /bin/sh root@b1a0703e41e7:/# #以交互模式给容器分配一个伪终端链接

六、docker ps

列出容器(正在运行)

经常使用参数以下:
-a #列出全部容器包括中止的 -f #根据条件过滤显示内容 -l #列出最近建立的容器 -n #列出最近建立的N个容器,N为数字 -q #只显示容器ID -s #显示总文件大小

 

实例操做以下:
[root@docker ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bd96d72ed9c7 google/cadvisor "/usr/bin/cadvisor..."   47 hours ago  Up 47 hours  0.0.0.0:8082->8080/tcp cadvisor 665563143eb7 grafana/grafana "/run.sh"                2 days ago    Up 2 days    0.0.0.0:3000->3000/tcp grafana f2304dad5855 tutum/influxdb "/run.sh"                2 days ago    Up 2 days    0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp influxdb #列出正在运行的容器 [root@docker ~]# docker ps -n 2 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bd96d72ed9c7 google/cadvisor "/usr/bin/cadvisor..."   47 hours ago  Up 47 hours  0.0.0.0:8082->8080/tcp cadvisor 665563143eb7 grafana/grafana "/run.sh"                2 days ago    Up 2 days    0.0.0.0:3000->3000/tcp grafana #列出最近建立的2个容器 [root@docker ~]# docker ps -a -q bd96d72ed9c7 665563143eb7 f2304dad5855 9921d2660307 #显示全部容器的ID

七、docker inspect

获取容器的元数据

经常使用参数以下:
-f #指定返回值格式或模板文件 -s #显示总文件大小 --type #为指定类型返回JSON

 

实例操做以下:
[root@docker ~]# docker inspect bd96d72ed9c7 [ { "Id": "bd96d72ed9c713591ba8db0ed4c0ae2689188255da71033c7bced6bb34aa8542", "Created": "2018-05-23T09:22:10.633809699Z", "Path": "/usr/bin/cadvisor", "Args": [ "-logtostderr", "-storage_driver=influxdb", "-storage_driver_db=cadvisor", "-storage_driver_host=192.168.3.82:8086" ], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 17589, "ExitCode": 0, "Error": "", "StartedAt": "2018-05-23T09:22:10.769771142Z", "FinishedAt": "0001-01-01T00:00:00Z" }, "Image": "sha256:75f88e3ec333cbb410297e4f40297ac615e076b4a50aeeae49f287093ff01ab1", "ResolvConfPath": "/var/lib/docker/containers/bd96d72ed9c713591ba8db0ed4c0ae2689188255da71033c7bced6bb34aa8542/resolv.conf", "HostnamePath": "/var/lib/docker/containers/bd96d72ed9c713591ba8db0ed4c0ae2689188255da71033c7bced6bb34aa8542/hostname", "HostsPath": "/var/lib/docker/containers/bd96d72ed9c713591ba8db0ed4c0ae2689188255da71033c7bced6bb34aa8542/hosts", "LogPath": "", "Name": "/cadvisor", "RestartCount": 0, "Driver": "overlay2", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile": "", "ExecIDs": null, "HostConfig": { "Binds": [ "/:/rootfs,ro", "/var/run:/var/run", -------------------------------------------省略部份内容 #获取容器ID为bd96d72ed9c7的元数据信息 [root@docker ~]# docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' cadvisor 172.17.0.3 [root@docker ~]# docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' influxdb 172.17.0.2 #获取容器名为influxdb\cadvisor的IP地址

八、docker logs

获取容器的日志

经常使用参数以下:
-f #跟踪日志输出 -t #显示时间戳 --tail #只显示最新n条容器日志 --since #显示某个开始时间的全部日志
实例操做以下:
[root@docker ~]# docker logs -f cadvisor I0523 09:22:10.794233       1 storagedriver.go:48] Using backend storage type "influxdb" I0523 09:22:10.794295       1 storagedriver.go:50] Caching stats in memory for 2m0s I0523 09:22:10.794551       1 manager.go:151] cAdvisor running in container: "/sys/fs/cgroup/cpuacct,cpu" I0523 09:22:10.810585       1 fs.go:139] Filesystem UUIDs: map[] I0523 09:22:10.810599       1 fs.go:140] Filesystem partitions: map[shm:{mountpoint:/dev/shm major:0 minor:47 fsType:tmpfs blockSize:0} overlay:{mountpoint:/ major:0 minor:46 fsType:overlay blockSize:0} tmpfs:{mountpoint:/dev major:0 minor:50 fsType:tmpfs blockSize:0} /dev/mapper/centos-root:{mountpoint:/rootfs,ro major:253 minor:0 fsType:xfs blockSize:0} /dev/sda1:{mountpoint:/rootfs,ro/boot major:8 minor:1 fsType:xfs blockSize:0} /dev/mapper/centos-home:{mountpoint:/rootfs,ro/home major:253 minor:2 fsType:xfs blockSize:0}] W0523 09:22:10.812419       1 info.go:52] Couldn't collect info from any of the files in "/etc/machine-id,/var/lib/dbus/machine-id"
I0523 09:22:10.812460       1 manager.go:225] Machine: {NumCores:1 CpuFrequency:2799091 MemoryCapacity:8203235328 HugePages:[{PageSize:2048 NumPages:0}] MachineID: SystemUUID:564D5235-FED8-3630-AA2B-D65F0855D036 BootID:fd7b3fb5-e74f-4280-80cf-0a7096239619 Filesystems:[{Device:tmpfs DeviceMajor:0 DeviceMinor:50 Capacity:4101615616 Type:vfs Inodes:1001371 HasInodes:true} {Device:/dev/mapper/centos-root DeviceMajor:253 DeviceMinor:0 Capacity:140633964544 Type:vfs Inodes:68681728 HasInodes:true} {Device:/dev/sda1 DeviceMajor:8 DeviceMinor:1 Capacity:1063256064 Type:vfs Inodes:524288 HasInodes:true} {Device:/dev/mapper/centos-home DeviceMajor:253 DeviceMinor:2 Capacity:21464350720 Type:vfs Inodes:10485760 HasInodes:true} {Device:shm DeviceMajor:0 DeviceMinor:47 Capacity:67108864 Type:vfs Inodes:1001371 HasInodes:true} {Device:overlay DeviceMajor:0 DeviceMinor:46 Capacity:140633964544 Type:vfs Inodes:68681728 HasInodes:true}] DiskMap:map[253:0:{Name:dm-0 Major:253 Minor:0 Size:140660178944 Scheduler:none} 253:1:{Name:dm-1 Major:253 Minor:1 Size:8455716864 Scheduler:none} 253:2:{Name:dm-2 Major:253 Minor:2 Size:21474836480 Scheduler:none} 2:0:{Name:fd0 Major:2 Minor:0 Size:4096 Scheduler:deadline} 8:0:{Name:sda Major:8 Minor:0 Size:171798691840 Scheduler:deadline}] NetworkDevices:[{Name:eth0 MacAddress:02:42:ac:11:00:03 Speed:10000 Mtu:1500}] Topology:[{Id:0 Memory:8589467648 Cores:[{Id:0 Threads:[0] Caches:[{Size:32768 Type:Data Level:1} {Size:32768 Type:Instruction Level:1} {Size:262144 Type:Unified Level:2}]}] Caches:[{Size:26214400 Type:Unified Level:3}]}] CloudProvider:Unknown InstanceType:Unknown InstanceID:None} #跟踪查看容器cadvisor的日志

九、docker port

显示指定容器的端口映射

实例操做以下:
[root@docker ~]# docker port cadvisor 8080/tcp -> 0.0.0.0:8082 #显示cadvisor容器的端口映射信息

十、docker commit

用已存在的容器从新建立一个新的镜像

经常使用参数以下:
-a #提交的镜像做者 -c #使用Dockerfile指令来建立镜像 -m #提交时附上说明文字 -p #在commit时,将容器暂停
实例操做以下:
[root@docker ~]# docker commit -a "mingongge" -m "add a new images" bd96d72ed9c7  newdocker_images:v1.0.0 sha256:20ee805752cb7cae660fbae89d7c6ea4a9c6372f16a6cb079ecf6c79f87ed8c9 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE newdocker_images v1.0.0    20ee805752cb   7 seconds ago  62.2 MB #将容器bd96d72ed9c7从新生成一个新的镜像名为newdocker_images

十一、docker cp

用于容器与物理主机之间拷贝文件

实例操做以下:
[root@docker ~]# docker cp /data/index.html bd96d72ed9c7:/web/ #将物理主机中的/data/index.html拷贝到容器bd96d72ed9c7:/web/目录下 [root@docker ~]# docker cp /data/index.html bd96d72ed9c7:/web/index.php #将物理主机中的/data/index.html拷贝到容器bd96d72ed9c7:/web/目录下并更名为index.php [root@docker ~]# docker cp bd96d72ed9c7:/web /data/ #拷贝容器bd96d72ed9c7:/web/目录到物理主机中的/data/目录下

十二、docker login/logout

用于登陆与登出容器镜像仓库
docker login       #登录到一个Docker镜像仓库,若是未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker logout      #登出一个Docker镜像仓库,若是未指定镜像仓库地址,默认为官方仓库 Docker Hub

经常使用参数以下:
-u #登录的用户名 -p #登录的密码
实例操做以下:
[root@docker ~]# docker login -u username -p password Login Succeeded [root@docker ~]# docker logout Removing login credentials for https://index.docker.io/v1/
#登陆与登出默认的容器镜像仓库

1三、docker pull/push

docker pull    #从镜像仓库中拉取或者更新指定镜像
docker push    #将本地的镜像上传到镜像仓库,要先登录到镜像仓库

实例操做以下:
[root@docker ~]# docker pull nginx Using default tag: latest Trying to pull repository docker.io/library/nginx ... latest: Pulling from docker.io/library/nginx f2aa67a397c4: Already exists 3c091c23e29d: Pulling fs layer 4a99993b8636: Pulling fs layer #从镜像仓库中拉取或者更新指定镜像,输出信息如上 [root@docker ~]# docker push newdocker_images:v1.0.0 #上传镜像到镜像仓库上

1四、docker images

显示系统本地容器镜像文件

经常使用参数以下:
-a #列出全部的镜像(含中间映像层,默认,过滤掉中间映像层); --digests #显示镜像的摘要信息; -f #显示知足条件的镜像; --format #指定返回值的模板文件; --no-trunc #显示完整的镜像信息; -q #只显示镜像ID。
实例操做以下:
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE newdocker_images v1.0.0    20ee805752cb   28 minutes ago  62.2 MB docker.io/grafana/grafana latest 4700307f41f2 9 days ago      238 MB registry.jumpserver.org/public/guacamole 1.0.0     6300349f2642   2 months ago    1.23 GB docker.io/google/cadvisor latest 75f88e3ec333 5 months ago    62.2 MB docker.io/tutum/influxdb latest c061e5808198 19 months ago   290 MB #列出本地全部的镜像 [root@docker ~]# docker images -q 20ee805752cb 4700307f41f2 6300349f2642 75f88e3ec333 c061e5808198 #只显示容器ID [root@docker ~]# docker images --digests REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE newdocker_images v1.0.0   <none>                                                                    20ee805752cb    32 minutes ago  62.2 MB docker.io/grafana/grafana latest sha256:364bec4a39ecbec744ea4270aae35f6554eb6f2047b3ee08f7b5f1134857c32c 4700307f41f2 9 days ago      238 MB registry.jumpserver.org/public/guacamole 1.0.0    sha256:ea862bb2e83b648701655c27900bca14b0ab7ab9d4572e716c25a816dc55307b   6300349f2642    2 months ago    1.23 GB docker.io/google/cadvisor latest sha256:9e347affc725efd3bfe95aa69362cf833aa810f84e6cb9eed1cb65c35216632a 75f88e3ec333 5 months ago    62.2 MB docker.io/tutum/influxdb latest sha256:5b7c5e318303ad059f3d1a73d084c12cb39ae4f35f7391b79b0ff2c0ba45304b c061e5808198 19 months ago   290 MB [root@docker ~]# docker images --no-trunc REPOSITORY TAG IMAGE ID CREATED SIZE newdocker_images v1.0.0   sha256:20ee805752cb7cae660fbae89d7c6ea4a9c6372f16a6cb079ecf6c79f87ed8c9   32 minutes ago  62.2 MB docker.io/grafana/grafana latest sha256:4700307f41f249630f6d772638ad8d32c7d7e3ec86c324d449d5e21076991bb7 9 days ago      238 MB registry.jumpserver.org/public/guacamole 1.0.0    sha256:6300349f264218e783cd2bd6f7863d356ac8d5ac05a62584cb4680af7ebec292   2 months ago    1.23 GB docker.io/google/cadvisor latest sha256:75f88e3ec333cbb410297e4f40297ac615e076b4a50aeeae49f287093ff01ab1 5 months ago    62.2 MB docker.io/tutum/influxdb latest sha256:c061e580819875fad91910841fd3fc53893524bbb9326a68b2470861633aebb1 19 months ago   290 MB #能够对比下两个参数显示的不一样信息

1五、docker rmi

删除镜像

经常使用参数以下:
-f      #强制删除
实例操做以下:
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE newdocker_images v1.1.0    858cbd9ba687   6 seconds ago   62.2 MB newdocker_images v1.0.0    20ee805752cb   36 minutes ago  62.2 MB docker.io/grafana/grafana latest 4700307f41f2 9 days ago      238 MB registry.jumpserver.org/public/guacamole 1.0.0     6300349f2642   2 months ago    1.23 GB docker.io/google/cadvisor latest 75f88e3ec333 5 months ago    62.2 MB docker.io/tutum/influxdb latest c061e5808198 19 months ago   290 MB [root@docker ~]# docker rmi 20ee805752cb Untagged: newdocker_images:v1.0.0 Deleted: sha256:20ee805752cb7cae660fbae89d7c6ea4a9c6372f16a6cb079ecf6c79f87ed8c9 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE newdocker_images v1.1.0    858cbd9ba687  39 seconds ago   62.2 MB docker.io/grafana/grafana latest 4700307f41f2 9 days ago       238 MB registry.jumpserver.org/public/guacamole 1.0.0     6300349f2642  2 months ago     1.23 GB docker.io/google/cadvisor latest 75f88e3ec333 5 months ago     62.2 MB docker.io/tutum/influxdb latest c061e5808198 19 months ago    290 MB #删除一个镜像

1六、docker tag

标记本地镜像

实例操做以下:
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE newdocker_images v1.1.0     858cbd9ba687        39 seconds ago      62.2 MB [root@docker ~]# docker tag newdocker_images:v1.1.0 newdocker_images:v2 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE newdocker_images v1.1.0     858cbd9ba687        4 minutes ago       62.2 MB newdocker_images v2 858cbd9ba687 4 minutes ago       62.2 MB #从结果能够看出两个容器的ID是同样的,只是TAG改变了,相似于linux中文件与文件的硬连接同样,其二者的inode号相同。

1七、docker build :

使用Dockerfile建立镜像

经常使用参数以下:
-f #指定要使用的Dockerfile路径 --label=[] #设置镜像使用的元数据; -m #设置内存最大值 --memory-swap #设置Swap的最大值为内存+swap,"-1"表示不限swap --no-cache #建立镜像的过程不使用缓存 --pull #尝试去更新镜像的新版本 -q #安静模式,成功后只输出镜像ID --rm #设置镜像成功后删除中间容器 --ulimit #Ulimit配置 实例操做以下: [root@docker ~]# docker build https://github.com/nginxinc/docker-nginx/

1八、docker history

查看指定镜像的建立历史

经常使用参数以下:
-H #以可读的格式打印镜像大小和日期,默认为true; --no-trunc #显示完整的提交记录; -q #仅列出提交记录ID。
实例操做以下:
[root@docker ~]# docker history newdocker_images:v2 IMAGE CREATED CREATED BY SIZE COMMENT 858cbd9ba687 32 minutes ago   -storage_driver=influxdb -storage_driver_d...   0 B add new images 75f88e3ec333 5 months ago     /bin/sh -c #(nop)  ENTRYPOINT ["/usr/bin/c...   0 B       
<missing>       5 months ago     /bin/sh -c #(nop)  EXPOSE 8080/tcp              0 B <missing> 5 months ago     /bin/sh -c #(nop) ADD file:e138bb5c0c12107...   26.5 MB <missing> 5 months ago     /bin/sh -c apk --no-cache add ca-certifica...   30.9 MB <missing> 5 months ago     /bin/sh -c #(nop)  ENV GLIBC_VERSION=2.23-r3    0 B <missing> 5 months ago     /bin/sh -c #(nop)  MAINTAINER dengnan@goog...   0 B <missing> 5 months ago     /bin/sh -c #(nop)  CMD ["/bin/sh"]              0 B <missing> 5 months ago     /bin/sh -c #(nop) ADD file:c05a199f603e2a9...   4.82 MB

1九、docker info

显示 Docker 系统信息,包括镜像和容器数

实例操做以下:
$ docker info Client: Debug Mode: false Plugins: app: Docker Application (Docker Inc., v0.8.0) Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 19.03.4 Storage Driver: overlay2 Backing Filesystem: xfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: b34a5c8af56e510852c35414db4c1f4fa6172339 runc version: 3e425f80a8c931f88e6d94a8c831b9d5aa481657 init version: fec3683 Security Options: apparmor seccomp Profile: default Kernel Version: 4.4.0-171-generic Operating System: Alpine Linux v3.10 (containerized) OSType: linux Architecture: x86_64 CPUs: 8 Total Memory: 31.4GiB Name: node1 ID: PH2R:U3HE:IKTC:MRAW:ZD5Q:QFZM:ZAZO:MP5G:F23W:XO2T:QWD3:AFFR Docker Root Dir: /var/lib/docker Debug Mode: true File Descriptors: 23 Goroutines: 43 System Time: 2020-03-02T11:32:16.055503829Z EventsListeners: 0 Registry: https://index.docker.io/v1/
 Labels: Experimental: true Insecure Registries: 127.0.0.1
  127.0.0.0/8 Live Restore Enabled: false Product License: Community Engine

20、docker version

显示 Docker 版本信息

实例操做以下:
$ docker version Client: Docker Engine - Community Version: 19.03.4 API version: 1.40 Go version: go1.12.10 Git commit: 9013bf583a Built: Fri Oct 18 15:49:05 2019 OS/Arch: linux/amd64 Experimental: true Server: Docker Engine - Community Engine: Version: 19.03.4 API version: 1.40 (minimum version 1.12) Go version: go1.12.10 Git commit: 9013bf583a Built: Fri Oct 18 15:55:51 2019 OS/Arch: linux/amd64 Experimental: true containerd: Version: v1.2.10 GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339 runc: Version: 1.0.0-rc8+dev GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657 docker-init: Version: 0.18.0 GitCommit: fec3683
民工哥。基本练习一下这些命令就能够操做docker了。代码部分转的是
相关文章
相关标签/搜索