1,安装环境说明
系统环境:centos6.6
服务应用了: haproxy confd etcd docker
主机名 ip 服务角色
dockerha-152 192.168.36.152 haproxy confd
dockerEtcd-153 192.168.36.153 etcd
dockermain-154 192.168.36.154 docker
2,安装依懒包,关闭冲突的服务
官方文档要求Linux kernel至少3.8以上,且docker只能运行在64位的系统中。由于RHEL6和CentOS6的内核版本为2.6,因此必须要先升级内核。
1
2
3
|
cd /etc/yum .repos.d
wget http: //www .hop5. in /yum/el6/hop5 .repo
yum install kernel-ml-aufs kernel-ml-aufs-devel -y
|
修改grub的主配置文件/etc/grub.conf,设置default=0,表示第一个title下的内容为默认启动的kernel(一般新安装的内核在第一个位置)。
然后重启,重启系统,这时候你的内核就成功升级了,版本应该在3.8以上了,
1
2
|
uname -r
[root@dockermain-154 shell] # uname -r
|
3.10.5-3.el6.x86_64
1
2
|
sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
setenforce 0
|
在Fedora EPEL源中已经提供了docker-io包,下载安装epel:
1
2
|
rpm -ivh http://mirrors.sohu.com/fedora -epel /6/x86_64/epel -release -6-8.noarch.rpm
sed -i 's/^mirrorlist=https/mirrorlist=http/' /etc/yum.repos.d/epel.repo
|
3,安装组件
(1)haproxy confd
dockerha-152上操作
1、haproxy
1
|
# yum –y install haproxy
|
2、confd
1
2
3
4
|
# wget https://github.com/kelseyhightower/confd/releases/download/v0.6.3/confd-0.6.3-linux-amd64
# mv confd /usr/local/bin/confd
# chmod +x /usr/local/bin/confd
# /usr/local/bin/confd -version
|
(2)etcd
dockerEtcd-153上操作
1
2
3
4
5
6
7
|
# mkdir -p /home/install && cd /home/install
# wget https://github.com/coreos/etcd/releases/download/v0.4.6/etcd-v0.4.6-linux-amd64.tar.gz
# tar -zxvf etcd-v0.4.6-linux-amd64.tar.gz
# cd etcd-v0.4.6-linux-amd64
# cp etcd* /bin/
# /bin/etcd -version
etcd version 0.4.6
|
(3)Docker
1
2
3
|
# yum -y install docker-io
# service docker start
# chkconfig docker on
|
4,docker命令使用
(1)查看帮助
1
|
docker COMMAND - -help
|
(2)搜索可用的境像
docker search name 如示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
[root@dockermain-154 src] # docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 817 [OK]
ansible/centos7 -ansible Ansible on Centos7 30 [OK]
tutum/centos Centos image with SSH access. For the root... 13 [OK]
jdeathe/centos -ssh -apache -php CentOS-6 6.5 x86_64 / Apache / PHP / PHP m... 8 [OK]
blalor/centos Bare -bones base CentOS 6.5 image 8 [OK]
jprjr/centos -php -fpm 6 [OK]
steeef/graphite -centos CentOS 6.x with Graphite and Carbon via ng... 6 [OK]
tutum/centos-6.4 DEPRECATED. Use tutum/centos:6.4 instead. ... 5 [OK]
layerworx/centos A general CentOS 6 image with the EPEL6 an... 2 [OK]
jr42/chef -solo -centos Official CentOS base images with current c... 1 [OK]
million12/centos -supervisor Base CentOS-7 with supervisord launcher, h ... 1 [OK]
internavenue/centos -percona Centos -based Percona image. 1 [OK]
jdeathe/centos -ssh CentOS-6 6.5 x86_64 / EPEL Repo. / OpenSSH... 1 [OK]
jdeathe/centos -ssh -mysql CentOS-6 6.5 x86_64 / MySQL. Image include... 1 [OK]
yajo/centos -epel CentOS with EPEL and fully updated 1 [OK]
nimmis/java -centos This is docker images of CentOS 7 with dif... 0 [OK]
lighthopper/orientdb -centos A Dockerfile for creating an OrientDB imag... 0 [OK]
bbrietzke/centos -starter CentOS 7 with EPEL and SupervisorD 0 [OK]
tcnksm/centos -node Dockerfile for CentOS packaging node 0 [OK]
insaneworks/centos CentOS 6.5 x86_64 + @update 0 [OK]
snowyday/centos Provide for emacs and Ricty font on X11 en... 0 [OK]
dmglab/centos CentOS with superpowers! 0 [OK]
akroh/centos Centos 6 container that has been updated w... 0 [OK]
timhughes/centos Centos with systemd installed and running 0 [OK]
solict/provisionous -puppet -centos CentOS provisions with Puppet included 0 [OK]
|
(3)下载镜像
注意镜像名称要写全,就是用docker search name 搜出来的NAME列的名称。
docker pull name 如示例:
1
2
3
4
5
6
7
|
[root@dockermain-154 src] # docker pull jdeathe/centos-ssh-apache-php
Pulling repository jdeathe/centos -ssh -apache -php
........
62203f428b1f: Download complete
e1812755a4ca: Download complete
0910edda3736: Download complete
Status: Downloaded newer image for jdeathe/centos -ssh -apache -php :latest
|
(4)查看已安装的镜像
1
2
3
4
|
[root@dockermain-154 src] # docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos latest dade6cb4530a 10 days ago 210.1 MB
jdeathe/centos -ssh -apache -php latest f1a489312a4a 3 months ago 297.7 MB
|
(5)docker容器中运行命令
docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。 注意:IMAGE=REPOSITORY[:TAG],如果IMAGE参数不指定镜像的TAG,默认TAG为latest。
1
2
3
4
|
[root@dockermain-154 run] # sudo docker run jdeathe/centos-ssh-apache-php echo 'hello world!'
hello world!
[root@dockermain-154 run] # sudo docker run jdeathe/centos-ssh-apache-php hostname
db7e1d2269fb
|
(6)列出容器
查看最近生成的容器:docker ps -l
查看正在运行的容器:docker ps
1
2
3
|
[root@dockermain-154 run] # docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
db7e1d2269fb jdeathe/centos -ssh -apache -php :latest "hostname" 27 seconds ago Exited (0) 26 seconds ago adoring_babbage
|
(7)显示容器标准输出
1
2
3
4
5
|
[root@dockermain-154 run] # docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
db7e1d2269fb jdeathe/centos -ssh -apache -php :latest "hostname" 27 seconds ago Exited (0) 26 seconds ago adoring_babbage
[root@dockermain-154 run] # docker logs db7e1d2269fb
db7e1d2269fb
|
(8)给容器中安装程序或服务
1
2
3
|
[root@dockermain-154 run] # sudo docker run centos yum install -y httpd
Loaded plugins: fastestmirror
..........
|
Dependency Installed:
1
2
3
4
5
|
apr.x86_64 0:1.4.8-3.el7
apr -util .x86_64 0:1.5.2-6.el7
centos -logos .noarch 0:70.0.6-1.el7.centos
httpd -tools .x86_64 0:2.4.6-19.el7.centos
mailcap.noarch 0:2.1.41-2.el7
|
Failed:
httpd.x86_64 0:2.4.6-19.el7.centos
Complete!
(9)保存对容器中的修改并生成新的镜像
1
|
docker commit CONTAINERID [REPOSITORY[:TAG]]
|
REPOSITORY参数可以是新的镜像名字,也可以是旧的镜像名;如果和旧的镜像名和TAG都相同,会覆盖掉旧的镜像。
1
2
3
4
5
6
7
|
[root@dockermain-154 ~] # docker commit bd7cc4f4ac92 centos:httpd
1e0915f3247b86414ebc11fd994fc6abfb590ff3b1ab890949c845ee88b2d9f4
[root@dockermain-154 ~] # docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos httpd 1e0915f3247b 9 seconds ago 320.8 MB
centos latest dade6cb4530a 10 days ago 210.1 MB
jdeathe/centos -ssh -apache -php latest f1a489312a4a 3 months ago 297.7 MB
|
(10)停止正在运行的容器
(11)查看容器或镜像详情
下面是我刚保存提交产生的新的容器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
[root@dockermain-154 ~] # docker inspect 943e45b6e5f3
[{
"AppArmorProfile" : "" ,
"Args" : [],
"Config" : {
"AttachStderr" : true,
"AttachStdin" : true,
"AttachStdout" : true,
"Cmd" : [
"/bin/bash"
],
"CpuShares" : 0,
"Cpuset" : "" ,
"Domainname" : "" ,
"Entrypoint" : null,
"Env" : [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"ExposedPorts" : null,
"Hostname" : "943e45b6e5f3" ,
"Image" : "centos:httpd" ,
"MacAddress" : "" ,
"Memory" : 0,
"MemorySwap" : 0,
"NetworkDisabled" : false,
"OnBuild" : null,
"OpenStdin" : true,
"PortSpecs" : null,
"StdinOnce" : true,
"Tty" : true,
"User" : "" ,
"Volumes" : null,
"WorkingDir" : ""
},
|
(12)删除容器
1
|
docker rm CONTAINERID
|
查看所有容器ID:docker ps -a -q
删除所有的容器:docker rm $(docker ps -a -q)
(13)删除镜像
1
|
docker rmi IMAGE
|
(14)查看docker的信息,包括Containers和Images数目、kernel版本等
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@dockermain-154 ~] # docker info
Containers: 14
Images: 56
Storage Driver: aufs
Root Dir : /var/lib/docker/aufs
Dirs: 89
Execution Driver: native-0.2
Kernel Version: 3.10.5-3.el6.x86_64
Operating System: <unknown>
CPUs: 1
Total Memory: 989.6 MiB
Name: dockermain-154
ID: W4PW:W3XR:FQZE:SBAA:2DS2:BM6N:DV5B:ARF2:3SZM:XGST:5ZF7:DFZV
WARNING: No swap limit support
|
(15)创建容器,并像平常ssh登录一样使用
1
2
3
|
[root@dockermain-154 ~] # docker run -i -t centos /bin/bash
[root@7c0414d03fe7 /] # ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin selinux srv sys tmp usr var
|
以上所述是小编给大家介绍的部署维护docker环境的详细教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:http://blog.csdn.net/chengxuyuanyonghu/article/details/54929162