虚拟机安装软件与docker容器安装区别

来源:互联网 发布:mac日历收到垃圾邀请 编辑:程序博客网 时间:2024/04/20 03:27

docker run -it centos
修改容器配置环境
配置 yum 源
[rhel7]
name=rhel
baseurl=ftp://192.168.4.254/rhel7
enabled=1
gpgcheck=0

清理缓存
yum clean all
安装软件
yum install -y net-tools
yum install -y psmisc
yum install -y iproute
yum install -y vim-enhanced
yum install -y openssh-clients

安装完成以后,切换到宿主机
对已经修改过的 docker 做镜像
查看修改过的容器的 id
docker ps

把容器做成镜像
docker commit  容器id  新镜像的名称:tag
docker commit  dd61895d9f88 mycentos:latest

查看新的镜像
docker images 

用新的镜像生成容器
docker run -it mycentos /bin/bash

进入容器检查,刚刚的配置

利用 Dockerfile 编排镜像
关键字
FROM:基础镜像
MAINTAINER:镜像创建者信息
EXPOSE:开放的端口
ENV:设置变量
ADD:复制文件到镜像
RUN:制作镜像时执行的命令,可以有多个

WORKDIR:定义容器默认工作目录
CMD:容器启动时执行的命令,仅可以有一条CMD

综合 Dockerfile 实验
1、自动配置 yum 的源
2、安装 net-tools psmisc httpd sshd
3、设置容器启动,自动运行 [sshd,httpd]
4、设置默认主页为 Hello World
5、添加用户 user01,并设置默认密码为 123456
6、在宿主机添加映射,把 22,80 映射出去

yum 源配置文件
local.repo
[rhel7]
name=rhel
baseurl=ftp://192.168.4.254/rhel7
enabled=1
gpgcheck=0

Dockerfile 文件配置
FROM centos
MAINTAINER  lix  lix@tedu.cn
ENV  HOSTNAME=web
RUN  rm -f /etc/yum.repos.d/*
ADD  local.repo /etc/yum.repos.d/local.repo
RUN  yum clean all
RUN  yum install -y net-tools psmisc vim-enhanced openssh-clients 
RUN  yum install -y openssh-server httpd
WORKDIR  /var/www/html
RUN  echo "Hello World" >index.html
RUN  useradd user01
RUN  echo 123456 |passwd --stdin user01
RUN  chage -d 0 user01
EXPOSE  22
EXPOSE  80
ADD  run.sh /etc/init.d/run.sh
CMD  ["/etc/init.d/run.sh"]

因为每个 images 只能有一个 CMD,我们需要启动两个服务
这里使用一个脚本解决这个问题
run.sh 脚本
#!/bin/bash
/usr/sbin/sshd-keygen >/dev/null 2<&1
/usr/sbin/sshd
/usr/sbin/httpd -DFOREGROUND

配置完以后,build 自定义镜像
docker build -t myimg .

编译成功以后,我们启动容器,这里使用参数 -p 映射端口
[ -p ] 宿主机端口:容器端口
docker run -d -p 80:80 -p 222:22 myimg

容器启动以后: 
    可以使用 curl http://宿主机ip/ 访问容器
    可以使用 ssh -l user01 -p 222 宿主机 ip 连接