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

[经验分享] Centos7 环境创建docker

[复制链接]

尚未签到

发表于 2018-4-21 08:38:50 | 显示全部楼层 |阅读模式
          Docker是一个容器,安装在宿主机(比如一个安装好的centos7虚拟机)上,一个宿主机可以装多个docker,每个docker的环境互不干扰。

Docker镜像相当于linux虚拟机的一个镜像,但linux虚拟机镜像安装好了只是一个linux环境,没有任何已安装好的 应用或者软件包;而docker的镜像可以包含有安装好的 应用或者软件包。

比如:用一个含有centos+nginx+mysql+php的docker镜像新建一个docker,那么新建好的docker就是一个 centos+nginx+mysql+php 的环境,这个docker新建好,进入docker就可以用这个lnmp环境,就不再动手安装lnmp了,挺棒的!


思路:

    1. yum 安装docker

    2. 启动docker服务

    3. 下载docker镜像

    4. 安装docker镜像

    5. 进入,退出docker

    6. 重点讲解


一. yum 安装docker

执行命令 yum install y docker-io


二.启动docker服务

        systemctl  start docker.service (启动docker服务)

        systemctl  enable docker.service (设置为开机启动)

        systemctl  start docker.service (停止docker服务)


三. 获取docker镜像

  

方法一下载:

官网下载:

docker pull centos:latest (官网下载centos镜像,最新版)

        docker pull ubuntu (官网下载ubuntu docker镜像 所有版本)

  

其他网站下载

                   #阿里云

docker pull registry.cn-hangzhou.aliyuncs.com/acs-sample/redis-sameersbn

#时速云

docker pull index.tenxcloud.com/tenxcloud/ubuntu

#网易蜂巢

docker pull hub.c.163.com/xbingo/jdk8:latest

  

方法二复制:

          #先看看有没有想要的镜像

docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

centos              latest              9baab0af79c4        6 weeks ago         196.8 MB

#导出到tar文件

docker save 9baab0af79c4 > /home/mycentos-save-1204.tar

#拷贝到目的机器文件夹


#进入目的机器文件夹

          cd /opt

#把docker镜像导入目标机器

docker load <centos-dockerimages.tar

#看看镜像导成功没有

docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

centos              latest              9baab0af79c4        6 weeks ago         196.8 MB


附:删除docker镜像方法: docker rmi 镜像id (镜像id 可用docker images 查看)


四. 安装docker镜像

    a. 简单安装一个docker

docker run --rm -ti centos:latest /bin/bash

这条命令如果没有centos:latest 镜像,会在官网自动下载完后再安装) 意思是通过镜像centos:latest创建了一个未命名的容器,run就是运行并创建容器,--rm是当容器退出就直接删除容器的意思,-ti的意思是创建了容器之后立刻进入交互模式,/bin/bash则是指定在容器内执行什么操作,一般来说,视乎镜像包含了什么软件和环境,你的容器就有什么软件和环境.


b. 完整命令安装一个docker

docker run -ti -e "TZ=Asia/Shanghai" --name testweb1 --restart=on-failure:3 -c 250 -m 1g --memory-swap=-1 -p 8001:80 -p 22222:22 -v /data/webdata:/data/htdocs/www centos/test:webdemo1  /bin/bash


意思就是创建一个容器,用镜像centos/test:webdemo1来做模板,设置时区是Asia/Shanghai,名字叫testweb1,分配了250cpu1G内存,把母机8001端口映射到容器的80端口,22222端口映射给22端口,把目录/data/webdata挂载到/data/htdocs/www,在容器内运行初始化脚本/bin/bash,这样你想要的容器就搭建完成了,你用web访问母机IP8001端口就能访问了,ssh登录就用22222端口.


附:删除已创建docker 方法:

docker rm 容器名(或者容器ID)删除没有运行的容器:

docker rm f 容器名(或者容器ID)删除运行的容器:


docker rm -f `docker ps -a -q`  删除所有容器

         docker rm `docker ps -a -q`  删除非运行的容器

         docker rm `docker ps -a | grep Exited | awk'{print $1}'`  删除异常退出的容器


五. 进入,退出docker

a 查看已经安装docker :命令docker ps a

DSC0000.png


b. 进入名为yzt_newips_core 的docker :docker exec ti yzt_newips_core bash


c. 退出docker:命令 exit









六. 重点讲解


先来看看常用命令和参数解析:

docker images:    查看本地已经存在的镜像,-a 列出所有(默认不包括中间镜像);

docker rmi IMAGE:    删除指定的镜像,-f 强制删除;

docker ps:    查看运行中的 Docker 容器,-a 列出所有(默认不包括未运行的容器);

docker rm CONTAINER:    删除指定的容器,-f 强制删除;

docker attach containerID:    进入指定ID的容器内,不过要慎用,有隐患,建议用docker exec -it  containerID/containerNAME bash来替代

docker inspect containerID:    查看指定ID的容器配置

docker commit containerID 镜像名:    将指定ID的容器制作成镜像,方便以后复用,可以重新提交来更新镜像

-d :    后台运行容器,并返回容器ID

-i :    以交互模式运行容器,通常与 -t 同时使用;

-t :    为容器重新分配一个伪输入终端,通常与 -i 同时使用;

-c:    分配cpu资源,并不是按核数区分,可以分配1-1024任何一个数字,默认是1024,只是一个对比值,比如AB两个容器,A配置的是1024B配置的是512,那么A最大可以使用的CPU资源是B的两倍,如果A容器一直闲着,那B容器还是可以使用空闲资源的。

-m:    分配内存,支持k/m/g/t/p单位,例如分配1G内存:-m 1g

--memory-swap:    分配多少(非负数值)swap资源,-1即完全不分配

-p:    映射母机端口到容器端口,例如:将母机的8001端口映射给容器的80端口:-p 8001:80,将母机内网44444端口映射到容器的22端口:192.168.1.10:44444:22,甚至可以把tcp协议换成udp(我是不太建议):192.168.0.225:300:3000/udp

-v:    把母机的文件夹挂载到容器内的文件夹,例如将母机的/data/soft挂载到容器内的/soft文件夹:-v /data/soft:/soft

--name="nginx-lb" :    为容器指定一个名称(和计算机名不是一回事)

--dns 8.8.8.8 :    指定容器使用的DNS服务器,默认和宿主一致;

--dns-search example.com :    指定容器DNS搜索域名,默认和宿主一致;

-h "mars":     指定容器的hostname(和容器名不是一回事)

-e username="ritchie" :    设置环境变量;

--env-file=[]:     从指定文件读入环境变量;

--net="bridge" :    指定容器的网络连接类型,支持 bridge /host / none

--restart=on-failure:3 :    容器意外停止后的操作方式,这里是尝试重启3次的意思

  

运维网声明 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-449837-1-1.html 上篇帖子: 解决CentOS 7 ifconfig: command not found vultr 下篇帖子: 本地自动化安装CentOS系统
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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