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

[经验分享] docker容器安装

[复制链接]

尚未签到

发表于 2018-5-26 08:53:54 | 显示全部楼层 |阅读模式
  什么是docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。Docker核心解决的问题是利用LXC来实现类似VM的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。同VM的方式不同, LXC 其并不是一套硬件虚拟化方法 - 无法归属到全虚拟化、部分虚拟化和半虚拟化中的任意一个,而是一个操作系统级虚拟化方法, 理解起来可能并不像VM那样直观。所以我们从虚拟化要docker要解决的问题出发,看看他是怎么满足用户虚拟化需求的。
那什么又是lxc呢?
lxc容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。说白了就是所有的设备都是完全寄宿与宿主机
  先安装lxc
环境CentOS 6.5 x64
1、安装LXC
yum -y install epel*       #安装epel库
yum install libcgroup lxc lxc-templates --enablerepo=epel        #安装lxc
/etc/init.d/cgconfig start
2、检查环境
lxc-checkconfig    #检查CPU是否支持lxc虚拟化,输出如下即是ok的
Kernel configuration not found at /proc/config.gz; searching…
Kernel configuration found at /boot/config-2.6.32-431.1.2.0.1.el6.x86_64
— Namespaces —
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
Multiple /dev/ptsinstances: enabled
  — Control groups—
Cgroup: enabled
Cgroup namespace: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled
  — Misc —
Veth pair device: enabled
Macvlan: enabled
Vlan: enabled
File capabilities: enabled
Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config/usr/bin/lxc-checkconfig
  lxc的默认安装模板
/usr/share/lxc/templates/ 下有好几个模板可供选择,这是自带的模板
  lxc的默认安装位置
/var/lib/lxc/
  lxc的主配置文件
vi /etc/lxc/default.conf    #一般要是指定lxc的网络配置参数,此处还需要一个知识点就是宿主机的虚拟网卡,就不再做详细介绍  
lxc.network.type = veth                  #网卡类型 veth只是桥接网卡的一个类型,可以与任何机器(宿主机,其他虚拟机,局域网其他机器)通讯。
lxc.network.link = br0                   #桥接宿主机网卡名
lxc.network.flags = up
lxc.network.name = eth0
lxc.network.ipv4 = 192.168.1.61/24        #此处为虚拟机的网卡ip
lxc.network.ipv4.gateway = 192.168.1.254
  3、lxc的一些常用的命令
lxc-attach       lxc-checkconfig  lxc-console      lxc-execute      lxc-ls           lxc-start        lxc-unfreeze     lxc-wait
lxc-autostart    lxc-clone        lxc-create       lxc-freeze       lxc-monitor      lxc-stop         lxc-unshare      
lxc-cgroup       lxc-config       lxc-destroy      lxc-info         lxc-snapshot     lxc-top          lxc-usernsexec
  此处我借用软件自带的centos模板创建一个虚拟机
lxc-create -n centos1 -t centos    #创建的名字叫centos1
lxc-start -n centos1               #启动centos1
  启动后就可以进行操作我们的虚拟机了
  centos6.5
下面我们说说docker的安装和使用
1、禁用selinux
由于Selinux和LXC有冲突,所以需要禁用selinux。编辑/etc/selinux/config,设置两个关键变量
vim /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted
2、配置Fedora EPEL源
yum install http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
3、添加hop5.repo源
cd /etc/yum.repos.d
wget http://www.hop5.in/yum/el6/hop5.repo
4、安装Docker
yum install docker-io
  此处已经是安装完成了,可是使用docker命令进行测试了
  5、手动挂载cgroup
CentOS环境中运行docker、lxc,需要手动重新挂载cgroup。
service cgconfig stop             # 关闭服务
chkconfig cgconfig off            # 取消开机启动
vi /etc/fstab
none /cgroup cgroup defaults 0 0          # 添加此行,开机后自动挂载
  6、启动docker服务
service docker start
chkconfig docker on
  7、docker的一些常用命令
docker pull <镜像名:tag> #从官网拉取镜像  
docker search <镜像名> #搜索在线可用镜像名
docker top <container> #显示容器内运行的进程  
docker images #查询所有的镜像,默认是最近创建的排在最上。  
docker ps #查看正在运行的容器  
docker ps -l #查看最后退出的容器的ID  
docker ps -a #查看所有的容器,包括退出的。  
docker logs {容器ID|容器名称} #查询某个容器的所有操作记录。  
docker logs -f {容器ID|容器名称} #实时查看容易的操作记录。
docker rm$(docker ps -a -q) #删除所有容器  
docker rm <容器名or ID> #删除单个容器  
docker rmi <ID> #删除单个镜像  
docker rmi$(docker images | grep none | awk '{print $3}' | sort -r) #删除所有镜像
docker stop <容器名or ID> #停止某个容器  
docker start <容器名or ID> #启动某个容器  
docker kill <容器名or ID> #杀掉某个容器
  8、docker search centos7           #列出官网可用centos7的所有镜像,根据自身需求拉取
docker pull oogatta/centos7_64_vagrant      #拉取一个镜像
docker images                               #查看所有的镜像
REPOSITORY                   TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
oogatta/centos7_64_vagrant   latest              e415131e31fb        9 weeks ago         898 MB
docker run -i -t docker pull oogatta/centos7_64_vagrant /bin/bash    #运行docker pull oogatta/centos7_64_vagrant 服务器
  做MySQL镜像
制作镜像依靠docker的Dockerfile文件
我们首先下载centos的镜像
1、docker pull centos
[root@lan56 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              centos5             5a1ebaa356ff        2 weeks ago         484 MB
centos              centos7             70214e5d0a90        3 weeks ago         224 MB
centos              latest              70214e5d0a90        3 weeks ago         224 MB
centos              centos6             68eb857ffb51        3 weeks ago         212.7 MB
2、制作一个MySQL的容器,
首先创建一个目录并在目录下创建一个Dockerfile,文件内容如下
vim Dockerfile
FROM centos:centos6            #利用我们的centos:centos6为镜像模板
MAINTAINER Fanbin Kong &quot;kongxx@hotmail.com&quot;

RUN yum install -y mysql:server mysql               #yum安装
RUN /etc/init.d/mysqld start &&\                    #启动
mysql -e "grant all privileges on *.* to 'root'@'%' identified by 'letmein';"&&\                # 授权
mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by 'letmein';"&&\  
mysql -u root -pletmein -e "show databases;"                   #指定用户名和密码
EXPOSE 3306                          
CMD ["/usr/bin/mysqld_safe"]  
  3、在Dockerfile所在目录下运行build命令来生成image文件,这里使用mysql:mysql-server作为image文件名
docker build -t mysql:mysql-server .
4、再次查看镜像
[root@lan56 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
mysql               mysql-server        134b2876c7fd        45 minutes ago      625.1 MB
centos              centos5             5a1ebaa356ff        2 weeks ago         484 MB
centos              centos7             70214e5d0a90        3 weeks ago         224 MB
centos              latest              70214e5d0a90        3 weeks ago         224 MB
centos              centos6             68eb857ffb51        3 weeks ago         212.7 MB
已经做好MySQL的镜像   
5、启动容器
docker run --name=mysqlserver -d -P mysql:mysql-server
启动完容器后,可以使用“sudo docker ps”来查看,此时可以看PORTS列内容为“0.0.0.0:49153->3306/tcp”,容器的3306端口会被映射到宿主机器的49153端口,这样我们就可以通过宿主机器的49153端口来连接了
  备注:
mysql -h <宿主机器> -u root -pletmein -P 49153
另外在运行容器的时候也可以通过下面的命令来修改端口映射
docker run --name=mysqlserver -d -p 3306:3306 mysql:mysql-server
此时容器的3306端口会被映射到宿主机器的3306端口,这样我们就可以通过宿主机器的3306端口访问mysql了
还有一种情况就是为了安全考虑,我只希望当前的宿主机器可以访问mysql服务,此时我们可以
docker run --name=mysqlserver -d -p 127.0.0.1:3306:3306 mysql_server
  安装ssh和Apache
[root@lan51 httpd]# vim Dockerfile

sshd
  #

VERSION               0.0.1
  FROM        centos:latest
MAINTAINER  Fisher via &quot;sudops.com&quot;
  RUN         yum install -y --nogpgcheck openssh openssh-server httpd net-tools
RUN         echo 'root:mypwd' |chpasswd
RUN         ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN         ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN         sed -i &quot;/ServerName www.example.com:80/a\ServerName 0.0.0.0:80&quot; /etc/httpd/conf/httpd.conf
EXPOSE      22
EXPOSE      80
CMD         /usr/sbin/sshd -D

运维网声明 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-481186-1-1.html 上篇帖子: 虚拟化容器Docker的安全性讨论 下篇帖子: Docker_快速部署jenkins
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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