docker起源于2013年,目前新版的docker需要linux 7版本环境。
docker的三个基础概念:镜像、容器、仓库。
docker安装:
yum install docker #docker安装
systemctl start docker.service #docker启动
docker #docker命令的执行
docker search mysql -s 100 #查看mysql的镜像源,-s指显示STARS大于100的镜像源
镜像获取:
镜像是一个模板,可以从镜像服务器上获取做好的镜像。docker使用docker pull命令来获取镜像。
docker pull mysql #获取一个mysql镜像
docker images #显示本地已有的镜像,有几个字段,分别是来自哪个仓库/镜像,镜像标志,镜像id,创建时间,镜像大小
docker run -t -i 镜像名称 /bin/bash #使用获取的镜像,创建一个容器,在容器中运行bash应用,-t指运行之后产生一个命令行(terminal),-i让容器的标准输入保持打开
docker ps #ps查看运行的容器有哪些
创建镜像:
创建镜像有很多种方法,用户可以更新镜像,也可以利用本地文件系统创建镜像。
a、docker pull training/sinatra #先下载镜像
b、docker run -t -i training/sinatra /bin/bash #启动镜像
c、gem install json #在镜像种添加gem和json应用
d、exit #使用exit退出容器
e、docker commit -m 'add gem json' -a 'Docker Container' 7b789b19572d my/sinatra:v2 #利用docker commit命令来提交更新后的副本,-m参数指定提交的说明描叙信息,-a参数指定维护的用户信息,后面是用来指定镜像的容器ID(d之前的容器ID),最后面是创建镜像的仓库名和tag信息。创建成功后,命令会返回这个镜像的ID信息。
f、docker images #查看刚才创建的镜像
g、docker run -t -i my/sinatra:v2 /bin/bash #使用自己创建的镜像来启动容器
方法二:使用Dockerfile创建镜像
使用Dockerfile来创建镜像,使用docker commit虽然很容易扩展镜像,但不便于团队分享,我们可以使用docker build 来创建一个新的镜像。为此首先要创建一个Dockerfile文件,这个文件中包含如何创建镜像的指令。
a、首先创建一个目录和Dockerfile
mkdir sinatra&&cd sinatra&&touch Dockerfile
b、Dockerfile中输入指令,每条指令都创建镜像的一层
cat >>Dockerfile < --------------------------------------------- #注解 FROM centos MAINTAINER REGAN [email protected] RUN yum -qqy install python --------------------------------------------- < docker build -t='/my/python:v1'. #其中-t标记来添加tag,指定新的用户的信息。“.“是Dockerfile所在的路径(当前目录),也可以替换为一个具体的Dockerfile的路径。可以看到build进程在执行操作。它要做的第一件事情就是上传这个Dockerfile内容,因为所有的操作都要依据Dockerfile来进行。然后,Dockerfile中的指令被一条一条的执行。每一步都创建一个新的容器,在容器中执行指令并提交修改(就跟之前的docker commit一样)。当所有的指定都执行完毕之后,返回了最终的镜像id。所有的中间步骤所产生的容器都被删除和清理了。需要注意的是,一个镜像是不能操作127层,否则会报错。 当然Dockerfile中还可以输入其他的命令,例如可以使用ADD命令复制本地文件到镜像中;用EXPOSE命令对外开放端口;使用CMD命令描述容器启动后运行的程序。 docker images命令查看容器的标签信息,如果觉得不好看,可以使用docker tag命令来更改标签的名字。 本地导入镜像: 使用docker import命令进行导入 例如下载了一个rarlinux-x64-5.3.0.tar.gz镜像文件,使用下列命令导入 cat rarlinux-x64-5.3.0.tar.gz|docker import - rarlinux:5.3 可以看到导入完成后,docker为我们生成了一个镜像的ID,使用docker images也可以看到我们刚才导入的镜像。注意镜像文件必须是tar.gz类型的文件。 上传镜像:用户可以通过docker push命令,把自己创建的镜像上传到仓库中共享。 docker push rarlinux #注意,上传到公有库时,需要注意上传的镜像名称,前面要加上github的注册账户名/软件仓库名。 镜像的保存、载入、删除 使用docker save命令,保存镜像到本地 docker save -o rarlinux.tar.gz rarlinux 使用docker load命令,将本地保存的镜像再次载入到docker中。 docker load --input rarlinux.tar.gz 或者 docker load docker镜像过时了,需要删除,使用docker rmi image_id docker容器的创建、启动和停止 容器是独立运行的一个或一组应用,及他们的运行环境。容器是docker的一个重要概念。 docker容器的启动有2种方式, a、基于镜像新建容器并启动 例如我们可以启动一个容器,打印出当前的日历表 docker run centos cal 我们还可以通过指定参数,启动一个bash交互终端。 docker run -t -i centos /bin/bash b、将在终止状态的容器重新启动 可以使用docker start命令,直接将一个已经终止的容器启动运行起来。 docker start mysql docker stop imageID 2、守护态运行 很多时候,我们希望容器在后台以守护态运行,此时可以添加-d参数来实现(daemon)例如我们启动centos后台容器,每隔一秒打印当天的日历。 docker run -d centos /bin/bash -c "while true;do echo hello docker;sleep 1;done" 启动之后,我们使用docker ps查看容器的信息 要查看启动的centos容器的输出,可以使用docker logs containerID 3、终止容器 使用docker stop来终止一个运行中的容器。并且可以使用docker ps -a来看终止状态的容器 docker stop containerID #终止一个正在运行的容器 使用docker run命令来启动容器,docker在后台运行的标准操作包括 1、检查本地是否存在指定的镜像,不存在则从公有仓库下载 2、使用镜像创建并启动容器 3、分配一个文件系统,并在只读的镜像层外面挂载一层可读可写层 4、从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去 5、从地址池分配一个ip地址给容器 6、执行用户指定的应用程序 7、执行完毕之后容器被终止