一、简介:
Docker是一个开源的应用容器,基于Go语言,遵从Apache2.0协议开源,Docker可以让开发者打包他们的应用到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口,容器性能开销极低。
二、Docker架构:
Images:docker镜像,用于创建Docker容器的模板。
Container:docker容器,独立运行的一个或一组应用。
Client:docker客户端,使用docker Api 与 docker 的守护进程进行通讯
Host:docker主机,一个物理或者虚拟的机器用于执行docker守护进程和容器,比如cetnos,ubuntu等
Registry:docker仓库,用来保存镜像。
Machine:一个简化docker安装的命令行工具,比如VirtualBox、 Digital Ocean、Microsoft Azure。
三、Docker 初体验
centos7安装docker:
yum install -y docker 默认安装
docker-ce 安装:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install docker-ce
测试安装是否成功:service docker start—启动docker,docker version 查看docker版本
四:Docker常规用法:
docker操作:
版本 / 信息 —— docker 【version / info】
容器操作:
容器声明周期管理:docker 【 run | start | stop | restart | kill | rm | pause | unpause 】
容器操作运维:docker 【 ps | inspect | exec | logs | export | import | port 】
容器rootfs命令:docker 【commit | cp | diff】
镜像操作:
镜像管理:docker 【 images | rmi | tag | build |history | save | import 】
仓库操作:
镜像仓库:docker【login | pull | push | seacher】
五:容器使用
docker run :创建一个容器并运行一个命令
docker create: 创建一个容器,但不启动
-d :后台运行容器
-i:以交互模式运行容器,通常与 -t 同时使用
-p :端口映射,格式为:主机(宿主机)端口:容器端口
-t :为容器重新分配一个伪终端,通常与 -i 同时使用
--name="zk" :为容器指定一个名称
--dns 8.8.8.8:指定容器使用的DNS服务器,默认和宿主机一致
-m:设置容器最大使用内存
--net="bridge":网络连接类型,支持bridge/host/none/container: 四种类型;
--link=[]:添加链接到另一个容器
--expose=[]:开放一个端口或一组端口
容器是独立运行的一个或一组应用,以及他们的运行态环境;
交互式创建容器并进入:docker run -it --name centos centos /bin/bash(前台进程)
exit:退出关闭容器;
Ctrl+P+Q:退出不关闭容器;
后台启动容器:docker run -d --name nginx(容器名字) nginx(镜像名字)
进入已运行的容器:docker exec -it nginx /bin/bash
查看容器的元数据:docker inspect nginx
绑定容器端口到主机:docker run -d -p 8080:80 --name nginx nginx:latest
挂载主机文件目录到容器内:docker run -dit -v/root/peter_dir/;/pdir --name cent centos
复制主机文件到容器内: docker run -dit -v /root/peter_dir/:/pdir --name cent centos
复制主机文件目录到容器内:docker cp anaconda-ks.cfg
复制主机文件到容器内:docker cp anaconda-ks.cfg cent:/var
6.仓库使用:
仓库(Repository)是集中存放镜像的地方
Docker官方仓库:https://hub.docker.com, 自由注册,邮件激活
常用命令: Docker pull / search / login /push / tag
Tag:标记本地镜像,将其归入某一仓库
Push:推送镜像到仓库 --- 需要登录
Search:在仓库中查询镜像 --- 无法查到tag版本
Pull:下载镜像到本地
Login:登录仓库
7.私有仓库的使用:
使用registry镜像创建私有仓库,下载registry镜像:docker pull registry
可配置加速器加速下载
vi /etc/docker/daemon.json
{
"bip":"127.17.5.1/24",
"registry-mirrors":["https://registry.docker-cn.com"]
}
启动:docker run -d --name reg -p 5000:5000 registry
设置 http 传输 :systemctl daemon-reload | systemctl restart docker
vi /etc/docker/daemon.json
{
"bip":"127.17.5.1/24",
"registry-mirrors":["https://registry.docker-cn.com"],
"insecure-registries":["192.168.244.5:5000"]
}
docker tag hello-world http://192.168.244.5:5000/hello-world
docker push 192.168.244.5:5000/hello-world
查询:curl http://192.168.244.5:5000/v2/_catalog | http://192.168.244.5:5000/v2/hello-world/tags/list