流行的自动运维平台:
Ansible / Git / Jenkins / Docker
平台化、自动化、分类 (配置类、搭建类)、容器化
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
Docker重要概念:
● 镜像(Image)
● 容器(Container)
● 仓库(Repository)
镜像采用了AUFS (联合文件系统),采用了分层结构,镜像是只读的,基础镜像一旦构建完成就不能再改了,但是可以在它上面封装一个层次,把改动的内容放到高层中。
容器:相当于是镜像的一次执行,容器也相当于是镜像可读写副本。
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。
不要假定容器会永远运行,应该假定容器随时可能出现故障,出现故障后,也不会再去恢复它
数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。
一个 DockerRegistry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。
我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。
如果不给出标签,将以latest作为默认标签。
在物理机上安装 docker 并启动
[root@666 k8s_pkgs]# yum -y install docker
[root@666 ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://8sj91tbl.mirror.aliyuncs.com"],
"insecure-registries" : ["192.168.8.254:5000"]
}
[root@666 ~]# systemctl restart docker
[root@666 ~]# mkdir k8s
[root@666 ~]# cd k8s/
[root@666 k8s]# docker run busybox echo Hello World
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
53071b97a884: Pull complete
Digest: sha256:4b6ad3a68d34da29bf7c8ccb5d355ba8b4babcad1f99798204e7abb43e54ee3d
Status: Downloaded newer image for busybox:latest
Hello World
容器、镜像的使用
[root@666 k8s]# docker run -d busybox echo 'Hello World'
如果本机没有 busybox:latest 将会到仓库中下载,然后启动容器
容器运行echo命令后,退出
因为容器只是宿主机上的一个进程,echo是个临时进程,运行后就退出,所以容器也就结束了。
因为容器只是个进程,不是一个完整的系统,所以如果希望它一直处于运行状态,就必须。
使容器内的进程在前台运行程序,不要让前台程序退出
[root@666 k8s]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 64f5d945efcc 3 weeks ago 1.199 MB
ubuntu latest 452a96d81c30 13 months ago 79.62 MB
centos latest e934aafc2206 14 months ago 198.6 MB
registry latest d1fd7d86a825 16 months ago 33.26 MB
nginx latest a5311a310510 2 years ago 181.4 MB
redis latest 1aa84b1b434e 2 years ago 182.8 MB
[root@666 k8s]# docker run -it centos bash
[root@242ccfad7ea7 /]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 11780 1868 ? Ss 03:35 0:00 bash
root 15 0.0 0.0 47452 1656 ? R+ 03:36 0:00 ps aux
如果执行exit退出,容器又停止运行了,如果希望退回到宿主机的shell但不要停止容器,可以按Ctrl+p+q
[root@666 k8s]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bf7570c87a0e centos "bash" 6 minutes ago Up 6 minutes tender_swartz
[root@666 docker+kubernetes]# ls
docker k8s keepalived健康检查.docx
Docker从入门到实践.pdf k8s_pkgs.tar.gz Kubernetes权威指南.pdf
images.tar.gz k8s_setup.txt mykube
[root@666 docker+kubernetes]# tar -xzf k8s_pkgs.tar.gz
[root@666 k8s_pkgs]# ls
atomic-registries-1.22.1-26.gitb507039.el7.centos.x86_64.rpm
conntrack-tools-1.4.4-4.el7.x86_64.rpm
containers-common-0.1.31-8.gitb0b750d.el7.centos.x86_64.rpm
container-selinux-2.74-1.el7.noarch.rpm
container-storage-setup-0.11.0-2.git5eaf76c.el7.noarch.rpm
docker-1.13.1-91.git07f3374.el7.centos.x86_64.rpm
docker-client-1.13.1-91.git07f3374.el7.centos.x86_64.rpm
docker-common-1.13.1-91.git07f3374.el7.centos.x86_64.rpm
etcd-3.3.11-2.el7.centos.x86_64.rpm
kubernetes-1.5.2-0.7.git269f928.el7.x86_64.rpm
kubernetes-client-1.5.2-0.7.git269f928.el7.x86_64.rpm
kubernetes-master-1.5.2-0.7.git269f928.el7.x86_64.rpm
kubernetes-node-1.5.2-0.7.git269f928.el7.x86_64.rpm
libnetfilter_cthelper-1.0.0-9.el7.x86_64.rpm
libnetfilter_cttimeout-1.0.0-6.el7.x86_64.rpm
libnetfilter_queue-1.0.2-2.el7_2.x86_64.rpm
libselinux-2.5-14.1.el7.x86_64.rpm
libselinux-python-2.5-14.1.el7.x86_64.rpm
libselinux-utils-2.5-14.1.el7.x86_64.rpm
libsemanage-2.5-14.el7.x86_64.rpm
libsemanage-python-2.5-14.el7.x86_64.rpm
libsepol-2.5-10.el7.x86_64.rpm
libyaml-0.1.4-11.el7_0.x86_64.rpm
oci-register-machine-0-6.git2b44233.el7.x86_64.rpm
oci-systemd-hook-0.1.18-3.git8787307.el7_6.x86_64.rpm
oci-umount-2.3.4-2.git87f9237.el7.x86_64.rpm
policycoreutils-2.5-29.el7_6.1.x86_64.rpm
policycoreutils-python-2.5-29.el7_6.1.x86_64.rpm
python-pytoml-0.1.14-1.git7dea353.el7.noarch.rpm
PyYAML-3.10-11.el7.x86_64.rpm
selinux-policy-3.13.1-229.el7_6.9.noarch.rpm
selinux-policy-targeted-3.13.1-229.el7_6.9.noarch.rpm
setools-libs-3.3.8-4.el7.x86_64.rpm
socat-1.7.3.2-2.el7.x86_64.rpm
subscription-manager-rhsm-certificates-1.21.10-3.el7.centos.x86_64.rpm
进入容器的方法:
(1)不启动新进程
[root@666 k8s]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bf7570c87a0e centos "bash" 19 minutes ago Up 19 minutes tender_swartz
[root@666 k8s]# docker attach bf
[root@bf7570c87a0e /]# ps a
PID TTY STAT TIME COMMAND
1 ? Ss 0:00 bash
14 ?