centos7.2安裝及管理docker
使用的操作系統是是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
[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 ]
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/24@192.168.1.1
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
浙公網安備 33010602011771號