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


    然后 更新和安装

  • 相关阅读:
    每天进步一小点
    C# 类
    XML JavaScript
    基础XML
    多态,重载,重写
    数据结构
    sql server规范
    .net core 使用TimeZoneInfo类的时间与时间戳转换
    git 重命名文件与文件夹
    IDEA spring boot 开启热加载
  • 原文地址:https://www.cnblogs.com/ilinuxer/p/6367004.html
Copyright © 2011-2022 走看看