4.3 学docker

1.docker 为什么这么好

相较于普通电脑,可以封装环境。便于运维
相比虚拟机,依托于linux内核,没有操作系统部分,小巧

2.docker组成

docker 客户端/守护进程  c/s架构
docker image镜像 基石 层叠的只读文件系统
    bootfs 联合加载
    rootfs(ubuntu)基础镜像
    add emacs 
    ...   全部是只读
docker container 容器
    通过镜像启动 //启动和执行阶段
    在最上面加上一个可写层
    写时复制 //不改变其他层
docker registry 仓库
    共有 docker hub
    私有

3.docker 依赖linux内核的特性

namespaces 命名空间
    一种封装的概念
    系统资源的隔离
        进程、网络、文件系统
    docker隔离的东西
        pid 进程隔离
        net 管理网络接口
        ipc 管理跨进程通行的访问
        mnt 管理挂载点
        uts 隔离内核和版本标识

control groups 控制组
    通过这个隔离
    资源限制
    优先级设定
    资源计量
    资源控制
docker容器的能力
    文件隔离 都有自己的root文件
    进程隔离 都运行在自己的进程环境中
    网络隔离 容器间的网络接口和ip都是分开的
    资源隔离和分组 用cgroup将cpu和内存之类的资源独立分配给每个docker容器

4.docker 安装部署

ubuntu 安装 14.04版本
    1.检查内核版本 $uname -a
    2.检查device mapper(存储驱动) $ls -l /sys/class/misc/device-mapper
    3.$sudo apt-get install docker.io  //ubuntu的apt-get 自己所含,版本低
    4.$source /etc/bash_completion.d/docker.io
    (3). $sudo apt-get install -y crul
    (4). $curl -sSL https://get.daocloud.io/docker | sh
    5.不需要sudo运行docker的方法,添加docker的用户组
        1.$sudo groupadd docker //建立一个docker 的用户组
        2.$sudo gpasswd -a ${USER} docker //把当前的用户添加到用户组里
        3.$sudo service docker restart //重启docker服务
        4.重新登录ubuntu

5.容器的基本操作

启动容器:
    docker run IMAGE[COMMAND][ARG...]
        eg. docker run ubuntu echo 'hello world'
    docker run -i -t IMAGE /bin/bash //-i:interactive;-t:-tty 交互启动
查看容器
    docker ps -a -l// -a 查看所有;-l最新创建的
    docker inspect [id]//查看已经建立的容器 
自定义容器名:
    docker run --name=自定义名字 -i -t IMAGE /bin/bash
重新启动已经停止的容器
    docker start [-i] 容器名字
删除容器
    docker rm 容器名 //删除已经停止的容器

6.docker守护式容器

#守护式容器:
    能够长期运行
    没有交互式的会话
    适合运行应用程序和服务
//以守护的方式运行容器:
    1.docker run -i -t IMAGE /bin/bash
    2.用ctrl+p 和ctrl+q 键退出
    3. docker attach 容器名 //进入后台的容器
    (1) docker run -d 镜像名[command] //用段命令启动
//查看容器日志:
    docker logs [-f] [-t] [--tail] 容器名 //-f: -follows -t:加上时间戳
    eg. docker logs -tf --tail 10 dc1
//查看容器的进程
    docker top 容器名
//如何在运行中的容器内启动新进程
    cocker exec [-d][-i][-t] 容器名 [command]
//停止运行中守护式容器
    docker stop 容器名 //发送一个信号给容器,等待容器停止
    docker kill 容器名 //直接停止
//查看docker 帮助文档
    man docker-run
    man docker-logs
    ...

7.用docker搭建一个web静态网站

#设置容器的端口映射
    run[-P][-p]//P映射所有端口,p映射指定端口
    eg. docker run -p 80 -i -t ubuntu /bin/bash  //指定映射的端口 
        四种方式
        containerPort//上例第一种
        hostport::containerPort
        ip::containerPort
        ip::hostport::containerPort
在容器中部署静态网站  
    //创建映射80端口的交互式容器
    docker run -p 80 --name web -i -t ubuntu /bin/bash
    //安装Nginx 在容器里面
    apt-get install -y nginx
    //安装vim
    apt-get install -y vim
    //创建静态页面
    mkdir -p /var/www/html  //建立路径
    cd /var/www/html //进入到目录
    vim index.html //创建一个静态页面
    ...
    //修改Nginx配置文件
    whereis nginx   //查找nginx的位置
    ls /etc/nginx/sites-enabled //
    vim /etc/nginx/sites-enabled/default //打开配置文件
    ...     //将root值改成刚刚网站的地址
    //运行Nginx
    nginx
    //验证网站访问
    用主机的ip加上映射的端口    //重启改变
    用inspect容器的ip和正常的端口 //重启改变
查看端口映射
    docker port 容器名

8.查看和删除镜像

docker info 命令查看docker存储位置
列出镜像
    docker images [options] 
        -a --all=false
        -f --filter=[]
        --no-trunc=false
        -a,--quiet=false
仓库repository
    不是registry
tag 标签
repository+tag 唯一指定一个镜像

查看镜像
     docker inspect [options] container|image[command]
         -f,
删除镜像
    docker rmi 镜像名


9.获取和推送镜像

查找镜像
    官网 docker hub
    docker search [options] term 
        --automated=false           Only show automated builds
        --no-trunc= false         Don't truncate output
        -s  --stars=0          Only displays with at least x stars
拉取镜像
    docker pull [options] name[:tag]
        -a --all
推送镜像
    docker push docker_hub_name/镜像名

10.构建docker镜像

docker commit
    将建好的容器变成镜像
docker build 
    创建dockerfile文件
    docker build -t='name' 创建
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值