zoukankan      html  css  js  c++  java
  • docker1.12安装配置及使用笔记

    官方安装手册地址:https://docs.docker.com/engine/installation/linux/ubuntulinux/

    使用的操作系统是是ubuntu14.04,按照官方的推荐的配置(其他操作系统,多少有点区别请参考官方文档)。安装步骤如下:

    1、检查内核版本

    uname -r #把linux内核升级到3.10以上

    2、apt的证书验证和key

    apt-get update
    apt-get install apt-transport-https ca-certificates
    apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

    3、添加源

    vim /etc/apt/sources.list.d/docker.list
    deb https://apt.dockerproject.org/repo ubuntu-trusty main
    apt-get update
    apt-get purge lxc-docker #如果已经安装了,或者安装的是更老的docker.io卸载掉
    apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual #安装aufs存储必须包

    4、安装docker

    apt-get install docker-engine
    service docker start

    5、配置国内镜像

            关于docker一定要按照官方安装文档来,特别是ubuntu14.04默认apt安装的是1.9比较老的版本,如果使用国内镜像就会报什么乱七八糟的的错误,升级到最新版,问题解决

    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://8db7f41f.m.daocloud.io
    #检查下是否成功添加了一行:DOCKER_OPTS="$DOCKER_OPTS --registry-mirror=http://8db7f41f.m.daocloud.io"
    vim /etc/default/docker

    6、Docker常用命令讲解
    a.镜像:
    镜像位置:/var/lib/docker/aufs

    docker commit             #容器名 centos:v1 ,创建镜像,-a作者信息 -m镜像信息
    docker  version           #查看版本
    docker  search centos     #搜索可用docker镜像
    docker  images            #查看当前docker所有镜像
    docker  pull  centos      #下载镜像(会把所有相关tag都下载下来,建议还是加上:tag少下载点)
    docker  push  名称+tag    #上传镜像
    cat   centos.tar | docker import  -  centos6  #Docker导入镜像
    docker  export  id  > cenos6.tar              #Docker导出镜像
    docker rmi  images        #删除镜像,最好是仓库名+TAG(如果要多个就空格开就行),这样其他标签相同id的文件就不会删除(只是删除标签),如果要删除所有标签同一个id,那就
    直接输入id,就会都删除

    b.容器部分:

    docker  run   centos echo "hello word"  #在docker容器中运行hello world!
    docker  run  centos yum install ntpdate #在容器中安装ntpdate的程序
    docker  ps -l                           #命令获得最后一个容器的id
    docker  ps  -a                          #查看所有的容器。
    docker commit 容器名称                  #提交刚修改的容器,例如:
    docker run -i -t centos /bin/bash       #在容器里启动一个/bin/bash shell环境,可以登录进入操作,其中-t 表示打开一个终端的意思,-i表示可以交互输入。
    docker run -d -i -t centos /bin/bash    #在后台启动,退出要ctrl+P、Q才能继续后台,不能exit,exit就相当于关闭容器
    docker attach CONTAINER ID              #进入在后台启动后的这个容器
    docker run  -d  centos:v1  /bin/bash    #-d表示在后台启动,以daemon方式启动。
    docker run -d -p 80:80 -p 8022:22 centos:latest /usr/bin/sshd -D #端口映射
    docker port 容器名                      #查看端口映射情况
    docker stop 容器名                      #正常关闭容器
    docker kill 容器名                      #直接kill掉进程
    docker start  id                        # 启动某个容器,也可以改为docker start -i 容器名称
    docker rm  id                           #删除容器

    d.排bug常用:

    docker inspect id                 #查看容器、镜像状态
    docker logs -tf --tail 10 容器名  #最近10行容器内部运行情况
    docker top 容器名                 #查看运行中容器的进程

    7、Docker独立IP及容器互联

    Ubuntu部分

    apt-get install bridge-utils    #安装brctl安装包
    service docker stop             #停止docker
    ifconfig docker0 down           #停止网卡
    brctl show                      #查看物理机上有哪些网桥
    brctl delbr docker0             #删除docker的默认网桥
    brctl addbr br0                 #自定义网桥
    ifconfig br0 192.168.180.22 netmask 255.255.255.0    #给网桥指定IP和子网
    vim /etc/default/docker         #修改docker启动桥接
    DOCKER_OPTS="$DOCKER_OPTS -b=br0"
    service docker start            #启动docker
    brctl show                      #查看是否生效

    Centos部分
    service docker stop
    ifconfig docker0 down
    brctl delbr docker0
    cd /etc/sysconfig/network-scripts/

    vi ifcfg-eth0
    DEVICE=eth0
    BOOTPROTO=none
    ONBOOT=yes
    TYPE=Ethernet
    BRIDGE="br0"
    BOOTPROTO=static

    vi ifcfg-br0
    DEVICE="br0"
    ONBOOT=yes
    NM_CONTROLLED=no
    BOOTPROTO=static
    TYPE=bridge
    IPADDR=192.168.1.165
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1
    DNS=192.168.1.50

    vi /etc/sysconfig/docker
    other_args="-b=br0"

    service docker start
    [root@localhost ~]# ps -ef|grep docker
    root      5502     1  0 01:23 pts/3    00:00:00 /usr/bin/docker -d -b=br0
    root      5800  5311  0 01:47 pts/3    00:00:00 grep docker

    service network restart
    可能会报以下错误:
    Shutting down interface eth0:                              [  OK  ]
    Shutting down loopback interface:                          [  OK  ]
    Bringing up loopback interface:                            [  OK  ]
    Bringing up interface br0:  Determining if ip address 192.168.1.161 is already in use for device br0...
                                                               [  OK  ]
    Bringing up interface eth0:  Error: Connection activation failed: Master connection not found or invalid
                                                               [FAILED]
    解决方法:
    此时,当前网卡也是可以通信的,但是通过网络管理工具修改IP之后,当前修改操作是不会生效的。那如何消除这个提示呢?
    其实,问题的原因是RedHat自己开发的NetworkManager管理工具和/etc/sysconfig/network-scripts/ifcfg-ethx配置不同步造成的。如果要消除这个提示,请关闭NetworkManager

    服务即可:
    chkconfig NetworkManager off  
    service NetworkManager stop  
    Stopping NetworkManager daemon:                            [  OK  ]
    此时,再重新加载network服务即可:
    service network restart
    Shutting down interface br0:                               [  OK  ]
    Shutting down loopback interface:                          [  OK  ]
    Bringing up loopback interface:                            [  OK  ]
    Bringing up interface br0:  Determining if ip address 192.168.1.161 is already in use for device br0...
                                                               [  OK  ]
    Bringing up interface eth0:  device eth0 is already a member of a bridge; can‘t enslave it to bridge br0.
                                                               [  OK  ]


                     
    8、为容器手动配置静态ip                 
    安装新的 iproute 包:
    wget https://repos.fedorapeople.org/repos/openstack/openstack-icehouse/epel-6/iproute-2.6.32-130.el6ost.netns.2.x86_64.rpm
    yum localinstall iproute-2.6.32-130.el6ost.netns.2.x86_64.rpm

    安装pipework:
    git clone https://github.com/jpetazzo/pipework     
    cp ~/pipework/pipework /usr/local/bin/
    启动Docker容器:
    docker run -itd --net=none jdeathe/centos-ssh:latest /bin/bash

    docker exec -it <CONTAINER ID> /bin/bash  /这样你就进到这个container 里面了,这个bash退出也不会影响之前 docker run 启动的 bash/

    pipework br0 <CONTAINER ID> 192.168.1.170/24@192.168.1.1

    9、制作可以ssh登录的本地Docker镜像
    安装制作CentOS镜像的工具:
    yum -y install febootstrap

    制作CentOS镜像文件centos6-image目录:
    febootstrap -i bash -i wget -i yum -i iputils -i iproute -i man -i vim-minimal -i openssh-server -i openssh-clients centos6 centos6-image

    http://mirrors.aliyun.com/centos/6/os/x86_64/

    制作Docker镜像,镜像名字是centos6-base:
    cd centos6-image && tar -c .|docker import - centos6-base

    制作可以ssh登陆的Docker镜像,名字是centos6-ssh:
    docker build -t centos6-ssh https://git.oschina.net/feedao/Docker_shell/raw/start/Dockerfile

    经过前面的六个步骤,一个可以登陆的本地docker镜像就制作好了。
    用户名是:root,密码是:123456

    转: http://www.mamicode.com/info-detail-1521690.html

    安装docker-engine出现的问题

    下列软件包有未满足的依赖关系:
     docker-engine : 依赖: libsystemd-journal0 (>= 201) 但无法安装它
    E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

    解决办法:
    在source.list 中docker源之前加上

    1 sudo vim /etc/apt/sources.list
    2 deb http://cz.archive.ubuntu.com/ubuntu trusty main
    3 
    4 su apt-get update


    然后 更新和安装

  • 相关阅读:
    Spring MVC Ajax 嵌套表单数据的提交
    Spring MVC 过滤静态资源访问
    Spring MVC 页面跳转时传递参数
    IDEA Maven 三层架构 2、运行 springMVC
    IDEA Maven 三层架构 1、基本的Archetype 搭建
    EasyUI DataGrid 基于 Ajax 自定义取值(loadData)
    Spring MVC Ajax 复杂参数的批量传递
    Mybatis Sql片段的应用
    在 Tomcat 8 部署多端口项目
    自动升级的设计思路与实现
  • 原文地址:https://www.cnblogs.com/ilinuxer/p/6367004.html
Copyright © 2011-2022 走看看