·镜像 docker run -i -t centos /bin/bash 运行起来就是容器,上传到官方hub的是镜像
·镜像保存在 /var/lib/docker目录下
·镜像存储在仓库中,然后从仓库中下载镜像,仓库存储在registry中,即docker hub
·过程:下载基础镜像centos(精简版),然后增加自己的内容,保存成一个新的镜像,运行起来
安装docker
1.安装epel扩展源
rpm -ivh epel-release-6-5.noarch.rpm vim /etc/yum.repos.d/epel.repo
2.安装、启动docker
yum -y install docker-io service docker start
配置docker
1.获取centos基础镜像
docker pull centos
2.运行centos镜像
docker run -i -t centos /bin/bash
创建镜像
1.让docker能上网
vim /etc/default/docker “docker_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
2.配置yum源
如果没有wget 命令,需要用yum安装
wget <epel地址> rpm -ivh epel-release-6-5.noarch.rpm vim /etc/yum.repos.d/epel.repo
3.退出镜像,并保存
exit #退出 docker commit < cfe3bf676fe7> <newimage> #保存
3.创建Dockerfile文件
mkdir static_web #创建存储Dockerfile的目录 cd static_web vim Dockerfile //加入 FROM [centos] #指定一个基础镜像名称,后续操作都基于这个镜像。 MAINTAINER zhaijunming [email protected] #指定镜像的作者及联系方式 RUN yum update #更新yum(每条run指令都会创建一个新的镜像层,如果该指令执行成功,就会将此镜像层提交,之后继续执行下一条指令) RUN yum -y install nginx #安装nginx RUN echo “hello nginx” >/usr/share/nginx/html/index.html EXPOSE 80 #应用程序将会使用这个端口。出于安全原因docker并不会自动打开这个端口,需要在使用docker run时指定使用哪个端口
4.执行Dockerfile #使用build
cd static_web #进入到Dockerfile所在目录 docker build -t="jamtur01/httpdimage" . #httpdimage是对dockerfile里指定的那个镜像做完操作后,保存的新的镜像的名称
###Dockerfile执行过程
·docker从基础镜像运行一个容器
·执行一条命令,对容器做出修改
·执行类似docker commit 的操作,保存,提交一个新的镜像层
·docker再基于刚提交的镜像运行一个新的容器
·执行docker中的下一条指令,知道所有指令都执行完毕
-----------------------------------------------------------------
常用命令集合
·docker version 查看docker客户端、服务端的版本号等
·docker search <image name> 查找镜像
·docker pull <image name> 下载镜像
·docker push <image name> 上传镜像
·docker image -a 列出所有镜像
·docker ps 显示正在运行中的容器
-a 显示所有的容器,包括未运行的
-l 显示最后一次创建的容器,包括未运行的
·docker logs <容器ID> 列出在此容器中执行的操作
·docker rm <容器> 删除此容器
·docker rm ‘docker ps -a -l‘ 删除所有容器
·docker start/stop/restart <容器ID> 启动/停止/重启容器
·docker attach <容器> 重新附着到一个运行中的容器
·docker run -i -t centos /bin/bash 使用镜像创建一个容器,登录到/bin/bash
-t:给容器分配一个伪tty
·docker run -i -t -p <host_port:contin_port> 将容器的端口映射到宿主机端口
·docker build <path> 寻找path路径下名为Dockerfile的文件,使用此配置生成新的镜像文件
·docker build - < <dockerfile> 使用指定的dockerfile配置文件,docker以stdin方式获取内容,使用此配置生成新的image
·docker port <container> <container port> 查看本地哪个端口映射到container的指定端口,其实用docker ps 也可以看到
·docker commit <容器ID> <新的镜像名称>
·docker images 查看所有镜像