一、什么是docker

它是一个开源的软件项目,在Linux操作系统上,docker提供了一个额外的软件抽象层,即操作系统层虚拟化的自动管理机制。docker实质上被封装在了之后的K8s的系统中。

1.1传统的部署环境:

物理机:

1、安装系统

2、依赖环境  JAVA-kdk、NodeJS-Node、PHP-PHP

3、应用程序

4、再加一台物理机--->提高并发量

虚拟机:

KVM Xen:

1、把一个物理机虚拟机虚拟成多个机器

2、把依赖环境打成一个系统的模板

1.2容器化:

Docker:

1、镜像基础

 a)依赖环境的镜像

 b)根据基础镜像,放入jar或者war包到webapps下,生成一个新的镜像,再运行(这里就是程序镜像)

 c)按层存储,生成的新的镜像使用的是同一个基础层,可以节省很多的存储空间

 d)启动时间很快,秒级启动

容器:把自己的应用程序根据某个基础镜像,生成一个应用程序新镜像,新镜像就可以运行在部署了docker环境的机器上。

二、docker的基本命令

在k8s中都是使用了kubectl对pod这个对象进行操作,不清楚pod的基本概念的可以在后续的章节中了解。

docker version

需要注意的是centos7的版本中不需要安装containerd,而如果你使用的是centos8的最新版本的系统的时候就需要安装containerd

14cb4604b80d799b4b097af37e7c38a6.png

docker info 

1、查询docker信息,显示宿主机容器的运行状态,镜像数量,存储驱动(overlay2),要求linux的文件系统一定要是xfs文件系统,并且可以支持d_type   

2、现如今比较流行的存储驱动有aufs、overlay和brtfs等等

3、json_file:日志文件以json的格式进行输出存放在本地,在显示的dokcer root dir中如下图所示,该目录下是正在运行的容器,存放本地地址是可以修改的

4、容器内部的删除启动命令都是通过runc来执行的

e0f40c5d00af11bcd803c5b9e5b621f4.png

2b30efd3d98b8f9f88af44558b3e2f9a.png

f70df2391327e3d87211c3721a27f35f.png

xfs_info /#查看d_type是否启动,如果显示的ftype=1说明d_type是开启的

56ae10fa9c65976d037081a92900b224.png

docker search

进行镜像搜索,如果该镜像带有office ok的说明他是官方支持更新的镜像

8a30162a4ed6fea2da6a03df6c6eee8f.png

docker pull/push

将docker官方的镜像拉取到本地,如果本地有你拉取的镜像这里要求tag和镜像名称一致,docker images命令可以查看自己本地的镜像。此外,如果是不指定tag去拉取的话,默认是latest的镜像版本

push:将本地的镜像推送到镜像仓库

052fdc782b93b04f9800a553061e6452.png

1a87ca5b6fd4e453bbe10e8932ae2463.png

docker run

启动一个镜像两种启动方式

1、前台启动:

如果你要运行镜像在本地没有,他就会提示报错你没有镜像就会去默认的镜像仓库拉取镜像启动完了之后,容器自动退出不会保持进程

docker run -it nginx bash  #指定一个启动命令,比如sh或者bash

57b6fdf43e11cf2ccb42ec1985e3bdd1.png

2、后台启动

docker  run -d nginx bash

因为dockerfile里面写了nginx  -g demon-off:所以如果是前台启动的话,执行完之后就会退出 

将宿主机的12345端口映射到容器的80端口,默认nginx服务是80端口启动的

docker run -itd -p 12345:80 nginx 

846c71ca971691296b144db6b8e959d3.png

docker logs 

查看容器日志

dafd65174f0451f06d1355bd48b0fb7c.png

docker ps 

查看正在运行的容器进程

docker exec 

进入一个docker的容器内部

d19ba239e7765b3f6ced4fc1407ac6f3.png

docker cp

将宿主机的文件拷贝到容器内部,通常nginx的html页面存放在容器的

/usr/share/nginx/html下

echo  "liuchang" > index.htmldocker cp index.html 5fb3bc9a47d5:/usr/share/nginx/html

b8cddcd3baf901a1513e31a10e035497.png

同时也可以将容器内部的文件拷贝搭配宿主机的指定目录下

docker rmi删除本地的镜像

docker rm

删除本地的容器,但是删除之前需要stop正在运行的容器

docker tag

给自己的镜像打上标签以便于将本地的镜像推送到远程的镜像仓库中去

docker images

查看本地已有的镜像

docker stop

停止正在运行的一个容器进程

docker build

使用dockerfile创建文件时使用

docker history

docker commit

将运行的容器打一个快照,将一个容器变成一个静态的镜像保存状态以便于下次运行

docker commit -a "liuchang" -m "add index.html" containerid 镜像:tag
docker run -it --rm nginx bash  #--rm参数表示,启动之后就会自动删除不会产生多余的参与docker进程
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐