使用的操作系统是是 centos7.2, 按照官方的推荐的配置, 把 Linux 内核升级到 3.8 以上. 安装步骤如下:
1, 升级内核版本(包含 aufs)
- cd /etc/yum.repos.d
- wget http://www.hop5.in/yum/el6/hop5.repo
- yum install kernel-ml-aufs kernel-ml-aufs-devel
2, 修改引导的内核
vi /etc/grub.conf
把默认的引导文件设置为 0. 因为升级内核之后, 新的内核在第一个 (0) 位置.
3, 重启系统, 使用新的内核
- # 检查内核版本:
- uname -r
- 3.10.5-3.el6.x86_64
- # 检查 aufs 是否存在
- grep aufs /proc/filesystems
- nodev aufs
4, 安装相应的 epel 源
- wget http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
- rpm -ivh epel-release-6-8.noarch.rpm
5, 安装 docker
yum -y install docker-io
6, 启动 docker
启动 docker 进程: service docker start
查看 docker 进程: ps -ef |grep docker
- root 1878 1 0 18:33 ? 00:00:00 /usr/bin/docker -d
- root 2307 2201 0 18:52 pts/0 00:00:00 grep docker
7,Docker 常用命令讲解
- docker version #查看版本
- docker search CentOS# 搜索可用 docker 镜像
docker images 查看当前 docker 所有镜像
- docker pull CentOS #下载镜像
- cat CentOS.tar | docker import - centos6 #Docker 导入镜像
- docker export id> cenos6.tar #Docker 导出镜像
- 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 commit 2313132 CentOS:v1
docker run -i -t CentOS /bin/bash 在容器里启动一个 / bin/bash shell 环境, 可以登录进入操作, 其中 - t 表示打开一个终端的意思,-i 表示可以交互输入.
docker run -d -i -t CentOS /bin/bash 在后台启动
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 stop id 关闭容器
docker start id 启动某个容器
docker rm id 删除容器, docker rmi images 删除镜像
进入容器:
如果 docker 版本已经在 1.3 以上了, 那么可以用 docker exec 这个命令:
docker exec -it <CONTAINER ID> /bin/bash / 这样你就进到这个 container 里面了, 这个 bash 退出也不会影响之前 docker run 启动的 bash/
docker -p 80:80 CentOS 代表映射
8.docker 初体验
获取一个 docker 镜像
docker pull CentOS
列出所有 docker 镜像
docker images
在容器里启动一个 / bin/bash
docker run CentOS /bin/bash
9. 体验 docker hub
创建 docker hub 帐号
docker login
然后就注册用户名密码
然后在使用 docker login 登录
8,Docker 独立 IP 及容器互联
- 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
- [[email protected] ~]# 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 ]
9, 为容器手动配置静态 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/[email protected]
10, 制作可以 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.bubuko.com/infodetail-3101525.html