## Docker 笔记整理(一)

Docker 简单笔记(一)

类似jvm一样直接跑在系统上提供所有依赖,配置。快速部署应用。(Linux container技术的封装后。“pxe—>cobbler”)

主机级别的虚拟化:
1.直接在硬件上安装虚拟化软件
2.在一个特定系统上使用虚拟化(kvm xen)
docker可以使一个完整的,被隔离的裸机( container)跑在系统上。namespace+cgroups这两种机制来实现虚拟化。
虚拟机的隔离性:
linux 内核3.8+默认原生支持这6种namespace名称空间。也就是centos7以后。
1.UTS #主机名和域名
2.MOUNT #文件系统树
3.IPC #信号,消息队列。
4.PID #进程树都有独立的“init”
5.USER #用户
6.NETWORK #网络设备
资源分配
内核通过cgroeps把系统资源(bikio、cpu、memory等)分配给各container使用。
namespace+cgroups这两种机制来实现虚拟化。

docker 架构
c/s架构
## Docker 笔记整理(一)_第1张图片
Containers:容器
Images:镜像、映像
Registry:Image Repositories
docker客户端传递指令———>服务端监听,通过镜像来创建实例。<————registry提供镜像仓库。

registry:
提供镜像
提供用户认证
风格:
nginx:latest
nginx:1.0
镜像和container关系:
镜像就像可执行文件(rm)他不变。
container就像rm开启的进程,可以rm不同的文件,基于rm命令。

docker管理的对象(增删改查):
image、container、network、volumes、plugins等

docker安装
1.内核3.10+
2.extras基本源内会提供一个老版本的

1.下载repo:
wget -O /etc/yum.repos.d/ https://download.docker.com/linux/centos/docker-ce.repo

由于网路原因,可以把里面的url改成清华大学源相应的位置.

直接截取了一部分:

[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg
:%s$https://download.docker.com/$=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/$

2.安装docker #此处叫docker-ce

[ZW@localhost ~]# yum install   docker-ce

3.修改配置文件:
配置主文件:/etc/docker/daemon.json
#默认不存在,可以手动建立编辑:
#添加加速器,k-v风格的数组,可以添加多个。

[ZW@localhost ~]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

4.重启服务即可

docker简单使用
查看docker当前版本:

[ZW@localhost ~]# docker  version  
Client:
 Version:           18.06.1-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        e68fc7a
 Built:             Tue Aug 21 17:23:03 2018
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.1-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       e68fc7a
  Built:            Tue Aug 21 17:25:29 2018
  OS/Arch:          linux/amd64
  Experimental:     false

docker 常用命令:

docker   search	  XXX		搜索镜像
docker   pull     XXX:YYY	下载镜像
docker   rm       XXX:YYY     删除镜像
docker   image		ls			列出镜像

docker   create     [OPTION]  IMAGE			创建一个容器
docker	 run	    [OPTION]  IMAGE 	创建并且运行一个容器
				#-it	创建出一个交互式界面(镜像有的话)
				#-name	指定名字
				#-d	后台
docker	 pause/unpause                   暂停/开启一个服务
docker   kill		                     相当于kill  -9
docker   start/stop
docker	 exec  		[option]   CONTAINER	在容器内执行操作
docker   logs	    CONTAINER				查看日志

例子:

[ZW@localhost ~]# docker  run  --name  tom    nginx:latest 
运行一个容器;他会执行镜像默认的命令  “ docker  info   | grep  cmd  ”   可以看到
[ZW@localhost ~]# docker exec  -it   tom  /bin/sh 
# ls
bin  boot  dev	etc  home  lib	lib64  media  mnt  opt	proc  root  run  sbin  srv  sys  tmp  usr  var
# 
在容器内执行操作;
[ZW@localhost ~]# docker inspect  tom 
查看容器信息;
[ZW@localhost ~]# docker  logs tom
172.17.0.1 - - [21/Oct/2018:05:48:40 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"
查看容器日志;

docker状态转换结构:
## Docker 笔记整理(一)_第2张图片
docker镜像基础操作
docker镜像含有启动容器文件系统和内容的。最底层为bootfs引导容器启动有BootLoader(grub?lilo?)和kernel,上面为rootfs是文件系统,不过和centos刚启动时一样默认是只读的,如果想要修改会再抽出一层进行读写,在容器上每启动一个服务或者配置其他功能都会抽出独立的一层进行修改,然后挂载使用(分层构建,联合挂载)。docker container rm 时那些可写层会被删除。
默认搜索或者下载镜像docer deamon会去找docker hub。
所以docker文件系统一定得用特殊的文件系统。
Aufs:乌班图在用
overlay:centos在用,构建在xfs上的二级文件系统。信息里可以看到

[ZW@localhost ~]# docker info  | grep -A 3 Storage
Storage Driver: overlay2
 Backing Filesystem: xfs
 Supports d_type: true
 Native Overlay Diff: false

registry=repository+index
公共registry---->修改镜像---->推送到自己的registry---->下载使用

docker镜像制作
A:基于已有的容器制作 commit
B:docker file 用“build”

docker commit使用:

[ZW@localhost ~]# docker commit   --help

Usage:	docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-p   暂停(pause)
-c	  修改默认运行的指令
-a   作者

例子:

[ZW@localhost ~]# docker run -it   --name   AA busybox  
/ # echo "AA"  > a.txt
/ # ls
a.txt  bin    dev    etc    home   proc   root   sys    tmp    usr    var
/ # exit
[ZW@localhost ~]# docker commit   AA
sha256:90b6168c4e41d87299bfc631041c94ddb561e3845b0397f3d7d23a6d8acf9df7
[ZW@localhost ~]# docker image  ls
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
                            90b6168c4e41        About a minute ago   1.15MB
nginx               latest              dbfc48660aeb        5 days ago           109MB

新制作的没有仓库和标签。 #一个镜像可以有多个标签(软链接?)删除 一个标签不会真的删除。

制作标签:
docker tag hub账号/仓库名:标签

[ZW@localhost ~]# docker tag  90b6168c4e41   haha:hehe
[ZW@localhost ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
haha                hehe                90b6168c4e41        10 minutes ago      1.15MB

也可以制作时修改命令及标签(命令可以在容器里–help一下)
docker commit -a “ZW” -c “CMD [”/bin/httpd","-f","-h","/data/html"]" web hehe:web

对于自己镜像管理可以推送到网上,也可以直接导入导出。
推送镜像push方法:
1.登录hub账号

[ZW@localhost ~]# docker login  -u ZW
Password: 

2推送,会吧仓库全推到hub上
#docker push 账号/仓库 注意本地自己建立的名字要和网上的一样

[ZW@localhost ~]# docker push  ZW/haha

如果不是hub上,那就需要把网址路径写全。假设是阿里云
地址是https://dev.aliyun.com/search.html
可以注册一下,打开管理中心,创建镜像仓库。会给操作指南。

登录   登录密码是单独设定的registry密码
[ZW@localhost ~]# docker login --username=郑伟的号吧 registry.cn-qingdao.aliyuncs.com
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
修改标签:
[ZW@localhost ~]# docker tag   hehe:zw2    registry.cn-qingdao.aliyuncs.com/zhengw/haha:latest

推送
docker push registry.cn-qingdao.aliyuncs.com/zhengw/haha:latest

然后可以登录验证
## Docker 笔记整理(一)_第3张图片
镜像导入导出方法:
直接打包去另外机子上使用
打包:

[ZW@localhost ~]# docker save  haha:hehe   -o  image.gz
[ZW@localhost ~]# ls
anaconda-ks.cfg   image.gz  

使用:

[ZW@localhost ~]# docker load  -i image.gz 

是时候吃饭了。。。。

你可能感兴趣的:(笔记)