设为首页 收藏本站
查看: 958|回复: 0

[经验分享] docker操作运行一步一步来

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-5-28 08:49:15 | 显示全部楼层 |阅读模式
环境:CentOS 6.5 64位

https://registry.hub.docker.com/  
https://www.gitbook.com/book/yeasy/docker_practice/details  Docker —— 从入门到实践

1
2
docker安装
# yum install docker-io  最新为1.5的版本



如果没有安源,先安装http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# service docker restart
# ps aux|grep docker |grep -v grep
root      2470  1.4  2.0 365780 15640 pts/0    Sl   17:17   0:00 /usr/bin/docker -d
# docker --help  #查看docker的命令
# docker info
# docker version
Client version: 1.5.0
Client API version: 1.17
Go version (client): go1.3.3
Git commit (client): a8a31ef/1.5.0
OS/Arch (client): linux/amd64
Server version: 1.5.0
Server API version: 1.17
Go version (server): go1.3.3
Git commit (server): a8a31ef/1.5.0




安装一个centos容器
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
# docker search ubuntu                   #搜索ubuntu镜像
  
[iyunv@manager ~]# docker search centos   #搜索centos镜像
NAME                                 DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                               The official build of CentOS.                   1024      [OK]      
ansible/centos7-ansible              Ansible on Centos7                              42                   [OK]
tutum/centos                         Centos image with SSH access. For the root...   13                   [OK]
blalor/centos                        Bare-bones base CentOS 6.5 image                9                    [OK]
   
[iyunv@manager ~]# docker pull tutum/centos  #拉取一个docker镜像到本地
Pulling repository tutum/centos
8daafe0f270b: Download complete
6941bfcbbfca: Download complete
41459f052977: Download complete
fd44297e2ddb: Download complete
e22c88592c50: Download complete
ffce4358d6e4: Download complete
5f0574f254a5: Download complete
77ad887d94d4: Download complete
009a97f615dc: Download complete
1d9e8ea240cb: Download complete
1f071815e864: Download complete
Status: Downloaded newer image for tutum/centos:latest
[iyunv@manager ~]# docker images          #查看镜像,这样就可以了
REPOSITORY             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
tutum/centos           latest              8daafe0f270b        13 days ago         292.2 MB




下面说docker容器的运行,ssh登录进去

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
[iyunv@manager ~]# docker run -it tutum/centos /bin/bash  #开始运行一个docker
[iyunv@4c7fb1a01e9a /]# ls             #根目录下有个run.sh,是开启ssh服务的
bin  etc   lib    lost+found  mnt  proc  run     sbin            srv  tmp  var
dev  home  lib64  media       opt  root  run.sh  set_root_pw.sh  sys  usr
  
[iyunv@81b5869f7934 /]# cat run.sh
#!/bin/bash
  
if [ "${AUTHORIZED_KEYS}" != "**None**" ]; then
    echo "=> Found authorized keys"
    mkdir -p /root/.ssh
    chmod 700 /root/.ssh
    touch /root/.ssh/authorized_keys
    chmod 600 /root/.ssh/authorized_keys
    IFS=$'\n'
    arr=$(echo ${AUTHORIZED_KEYS} | tr "," "\n")
    for x in $arr
    do
        x=$(echo $x |sed -e 's/^ *//' -e 's/ *$//')
        cat /root/.ssh/authorized_keys | grep "$x" >/dev/null 2>&1
        if [ $? -ne 0 ]; then
            echo "=> Adding public key to /root/.ssh/authorized_keys: $x"
            echo "$x" >> /root/.ssh/authorized_keys
        fi
    done
fi
  
if [ ! -f /.root_pw_set ]; then
    /set_root_pw.sh
fi
exec /usr/sbin/sshd -D
  
[iyunv@81b5869f7934 /]# cat set_root_pw.sh
#!/bin/bash
  
if [ -f /.root_pw_set ]; then
    echo "Root password already set!"
    exit 0
fi
  
PASS=${ROOT_PASS:-$(pwgen -s 12 1)}
_word=$( [ ${ROOT_PASS} ] && echo "preset" || echo "random" )
echo "=> Setting a ${_word} password to the root user"
echo "root:$PASS" | chpasswd
   
echo "=> Done!"
touch /.root_pw_set
   
echo "========================================================================"
echo "You can now connect to this CentOS container via SSH using:"
echo ""
echo "    ssh -p <port> root@<host>"
echo "and enter the root password '$PASS' when prompted"
echo ""
echo "Please remember to change the above password as soon as possible!"
echo "========================================================================"
#需要对ssh配置做如下改动
[iyunv@87d9ae33bd8b /]# sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
[iyunv@87d9ae33bd8b /]# sed -ri 's/#UsePAM no/UsePAM no/g' /etc/ssh/sshd_config
#先不要退出




#这时候需要新开或复制一下这个ssh,进行下面操作:
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
[iyunv@manager ~]# docker ps
CONTAINER ID        IMAGE                 COMMAND             CREATED              STATUS              PORTS               NAMES
87d9ae33bd8b      
tutum/centos:latest   "/bin/bash"         About a minute ago   Up About
a minute   22/tcp              elegant_hodgkin     
  
[iyunv@manager ~]# docker commit 87d9ae33bd8b new_centos
aaf36507c751aed68eb2589136cc5ade1b6f062a18fe00733a10afa3780e5c91
  
[iyunv@manager ~]# docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
new_centos             latest              aaf36507c751        6 seconds ago       292.2 MB

[iyunv@manager ~]# docker run -d -p 0.0.0.0:2222:22 new_centos /run.sh
683198a36fcbb8d95cbe63d70c0daa1dc81d0bce9ebd304b731e20aef77cb0ff
  
[iyunv@manager ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
683198a36fcb      
new_centos:latest   "/run.sh"           3 seconds ago       Up 1
seconds        0.0.0.0:2222->22/tcp   reverent_jang      
  
[iyunv@manager ~]# docker logs 683198a36fcb 2>&1 |grep '^and enter'
and enter the root password 'I2ihX1Fj4Aq2' when prompted
  
[iyunv@manager ~]# ssh -p 2222 root@localhost
root@localhost's password:             #密码即是上面写的'I2ihX1Fj4Aq2'
  
[iyunv@683198a36fcb ~]# ls /
bin  etc   lib    lost+found  mnt  proc  run     sbin            srv  tmp  var
dev  home  lib64  media       opt  root  run.sh  set_root_pw.sh  sys  usr




为什么会有些麻烦?

原因在于如果你是Ubuntu的系统,直接就可以使用了;然而centos的系统需要在ssh配置里面把“UsePAM yes”禁用才可以ssh登录,刚开始一直卡到这里:

[iyunv@manager ~]# ssh -p 2222 root@localhost
root@localhost's password:
Connection to localhost closed.


也可以先下载centos的镜像包,这样就不会出现问题:

1
2
3
4
# wget https://github.com/tutumcloud/tutum-centos/archive/master.zip
# unzip tutum-centos-master.zip
# cd tutum-centos-master
# docker build -t tutum/centos:centos6 centos6



  

1
2
3
4
5
6
7
#给docker的内存设置为最大100M,cpu使用率不超过50%,本地40000端口映射到docker的22端口
[iyunv@manager ~]# docker run -m 100m -c 512 -d -p 40000:22 new_centos /run.sh
566d0985af12d1a8aadfc39e94cf826a053347f1bec4084ee4b81476dcf4e7d1
  
[iyunv@manager ~]# docker ps     #查看运行的docker   CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMESe10324ba99ca      
centos:centos6      "/bin/bash"         38 minutes ago      Up 38
minutes                           elegant_lalande





docker容器安装nginx

ssh进入容器后,安装一个nginx
1
2
3
4
5
# yum install nginx -y
# /usr/sbin/nginx
# ps aux|grep nginx
root       154  0.0  0.2 109392  2136 ?        Ss   03:28   0:00 nginx: master process /usr/sbin/nginx
nginx      155  0.0  0.3 109812  3000 ?        S    03:28   0:00 nginx: worker process



到这里,大家应该就明白以后怎么继续做了,具体怎么配置docker的容器,生成自己定制的一套环境,大家各自大显身手,这篇是希望通过这些步骤明白docker具体的操作方法


tutum/centos 这个镜像也可以这么玩,先设定密码或者私钥:

docker run -d -p 0.0.0.0:2222:22 -e ROOT_PASS="mypass" tutum/centos  

docker run -d -p 2222:22 -e AUTHORIZED_KEYS="`cat ~/.ssh/id_rsa.pub`" tutum/centos


docker的常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
# docker pull <镜像名:tag>               #拉取一个镜像
# docker images                          #查看images
# docker run -i -t image_name /bin/bash  #交互式进入容器
# docker ps                              #查看运行的docker
# docker logs <镜像名:tag>               #查看容器的logs
# docker start/stop/kill <镜像名:tag>   
# docker rm $(docker ps -a -q)           #删除所有容器
# docker rmi $(docker images | grep none | awk '{print $3}' | sort -r) #删除所有镜像
# docker build -t <镜像名> <Dockerfile路径>  #构建自己的镜像
# docker cp 683198a36fcb:/run.sh .       #从docker复制一个文件到当前目录
# docker save new_centos:latest > net_centos.tar  #保存镜像
# docker load < net_centos.tar           #载入镜像
# docker run --help                      #更多的命令自己查看一下,相当丰富



http://yeasy.gitbooks.io/docker_practice/content/appendix_command/index.html  


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-71339-1-1.html 上篇帖子: Docker跨主机容器互传数据问题及解决方法 下篇帖子: 运行自己的docker registry
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表