docker安装及基本操作

Docker学习

环境:CentOS6.8
Docker的三大核心概念:镜像(Image)、容器(Container)、仓库(Repository)

1、安装Docker
    Docker支持CentOS6及以后的版本,对于本次使用的CentOS6.8系统可使用epel源安装Docker
    yum -y install epel-release
    yum -y install docker-io
    CentOS系统中更新docker有两种方法:一是通过源码编译安装;二是下载二进制文件更新

2、镜像
    Docker运行容器前需要本地存在对应的镜像,如果镜像不在本地,docker会默认从镜像仓库下载(默认使用Docker Hub)
    下载镜像
        docker pull NAME[:TAG]    从网络仓库中下载镜像,若不加TAG则使用latest标签,默认下载最新版本镜像
        例:docker pull registry.hub.docker.com/ubuntu:14.04    从指定仓库下载指定标签的镜像
    查看镜像
        docker images    查看本地镜像
    添加新标签
        docker tag nginx:14 nginx:latest    将一个nginx:14镜像再添加一个latest标签,原镜像和标签依然存在
    查看镜像详细信息
        docker inspect 镜像ID    获取镜像的详细信息
    搜索镜像
        docker search mysql        搜索远端仓库中的镜像,默认搜索官方Docker Hub
    删除镜像
        docker rmi nginx:14        删除本地镜像,当一个镜像有多个标签时该命令只是删除了标签
    创建镜像:1、基于已有镜像的容器创建;2、基于本地模板导入;3、基于Dockerfile创建。
        1、docker commit -m "提交信息" -a "作者" 容器ID 新镜像名:标签    基于容器创建新镜像
        2、可以使用OpenVZ提供的模板创建
            cat 模板文件 |docker import - 模板名:标签    基于本地模板创建
        3、Dockerfile创建镜像    
    存出和载入镜像
        docker save -o centos_6u8.tar centos:6.8    将本地镜像centos:6.8存成centos_6u8.tar文件
        docker load --input centos_6u8.tar            导入本地centos_6u8.tar模板文件
    上传镜像
        docker push    镜像    默认上传到Docker Hub,需要登录
        
3、容器
    新建容器
        docker create -it centos:6.8    使用centos:6.8这个镜像新建一个容器
        docker start 容器ID                使用create命令新建的容器处于停止状态,此命令启动容器
    新建并启动容器
        docker run centos:6.8 /bin/echo "hello,world"    通过镜像启动容器并在容器中运行一条shell语句
        docker run -i -t centos:6.8 /bin/bash            启动容器并进入容器中的交互环境
            -t    让Docker分配一个伪终端并绑定到容器的标准输入上
            -i    让容器的标准输入保持打开
        当容器中运行的程序或应用退出后容器也就自动处于终止状态
    守护态运行
        docker run -d centos:6.8 /bin/bash -c "while true; do echo hell; sleep 1; done"
            -d     让容器以守护进程的方式运行
        docker ps            查看正在运行的容器信息
        docker logs 容器ID    查看正在运行的容器的输出信息
    终止容器
        docker stop 容器ID        终止一个正在运行的容器
        docker restart 容器ID    重启正在运行的容器
    进入容器
        当容器再后台运行时,如果想进入容器进行操作,可使用docker attach、docker exec、nsenter工具等
        docker attach 容器ID    进入一个正在运行的容器
            当多窗口使用attach进入同一个容器时,所有窗口都同步显示,有时并不方便
        docker exec -ti 容器ID /bin/bash    进入一个正在运行的容器,并启动一个bash
    删除容器
        docker rm 容器ID    删除处于终止状态的容器
            -f    强制终止并删除运行中的容器
            -l    删除容器的连接,但保留容器
            -v    删除容器挂载的数据卷
    导入和导出容器
        docker export 容器ID >文件名.tar                将容器(无论运行与否)导成文件
        cat 容器文件.tar |docker import - 镜像名:标签    将容器文件导成镜像
    
4、仓库
    仓库是集中存放镜像的地方,注册服务器是存放仓库的具体服务器。如d1.dockerpool.com/ubuntu,d1.dockerpool.com是注册
    服务器地址,ubuntu是仓库名。
    创建私有仓库
        docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
            通过官方提供的registry镜像来简单搭建一套本地私有仓库
            -v    将容器中的目录映射到宿主机指定目录上,真机目录:容器目录
            
5、数据管理
    用户在使用Docker的过程中往往需要能查看容器内应用产生的数据,或者把容器内的数据备份,甚至多个容器之间进行数据共享
    容器中管理数据的方法有两个:1、数据卷;2、数据卷容器。
    数据卷
        数据卷是一个可供容器使用的特殊目录,可以在容器之间共享,对数据卷的修改会马上生效,对数据卷的更新不会影响镜像
        在使用docker run命令时使用-v可以在容器内创建一个数据卷
        docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
        docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py    默认是rw权限,此时ro
        也可以指定文件挂载到容器中,这样可以记载容器中该文件所记载的内容
        docker run --rm -it -v ~/.bash_history:~/.bash_history ubuntu /bin/bash
    数据卷容器
        如果用户需要在容器之间共享一些数据,最简单的方法是使用数据卷容器
        1、创建一个数据卷容器dbdata,并在其中创建也给数据卷挂载到/dbdata
            docker run -it -v /dbdata --name dbdata centos:6.8
        2、在其他容器中使用--volumes-from来挂载dbdata中的数据卷
            docker run -it --volumes-from dbdata --name db1 centos:6.8
        这时这两个容器中共用/dbdata目录
    利用数据卷容器迁移数据
        docker run --volumes-from dbdata -v $(pwd):/backup --name worker centos:6.8 tar cvf /backup/back.tar /dbdata
        使用centos:6.8镜像创建一个worker容器,使用--volumes-from从dbdata容器挂载数据卷,使用-v参数来讲本地当前目录
        挂载到worker容器的/backup目录,然后使用tar命令打包数据卷/dbdata内的内容到/backup目录下,即将数据备份到了本地
        当前目录下
    恢复数据
        docker run -v /dbdata --name dbdata2 centos:6.8 /bin/bash
            首先创建一个有数据卷的容器dbdata2
        docker run --volumes-from dbdata2 -v $(pwd):/backup centos:6.8 tar xvf /backup/back.tar
            创建另一个容器,挂载dbdata2的容器,并解压备份文件到所挂载的数据卷中
    
6、网络配置
    docker自身有四种网络模式,还有一些自定义模式,安装docker时会自动创建三个网络模式:bridge(创建容器默认连接到此网络)、 none 、host
    在创建容器时(docker run)可使用如下参数指定网络模式
        host模式:使用 --net=host 指定。
        none模式:使用 --net=none 指定。
        bridge模式:使用 --net=bridge 指定,默认设置。
        container模式:使用 --net=container:NAME_or_ID 指定。
    Host模式:相当于Vmware中的桥接模式,与宿主机在同一个网络中,但没有独立IP地址,使用宿主机的IP和端口。
    Container模式:新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。
    None模式:该模式将容器放置在它自己的网络栈中,但是并不进行任何配置,相当于关闭网络功能。
    Bridge模式:相当于Vmware中的Nat模式,通过docker0网桥以及Iptables nat表配置与宿主机通信。


    端口映射
        docker run -d -P training/webapp python app.py
            -P    Docker会随机映射一个49000~49900的端口到容器内的开放端口
        docker run -d -p 5000:5000 training/webapp python app.py
            -p    Docker使用指的的端口映射到容器内的指定端口,还可以指定ip地址或者协议
            docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
            docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
    容器互联实现容器间通信
        docker run -d --name db training/postgres
            先创建一个数据库容器
        docker run -d -P --name web --link db:db_link training/webapp python app.py
            --link 格式为--link name:alias,name为要链接的容器名,alias为这个链接的别名
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值