docker 理解和一些应用
1。镜像和容器是两个东西 一定要先理解,不然后期可能绕一点弯路
镜像:如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像
docker images :可以查看我们当前可使用的镜像
容器:是生成的
以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:
docker run -it ubuntu /bin/bash :生成一个容器可以操作
-i 交互式操作
-t 终端
-d 后台运行,不会进入容器
/bin/bash :放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
容器:
docker ps -a 查看所有的容器 stop 《容器的id》 停止容器 restart 《容器的id》 重启 exec 如果从这个容器退出,不会导致这个容器的停止 《docker exec -it 243c32535da7 /bin/bash》
attach 这个容器会停止
port 《容器的id》查看指定映射的端口
docker export 1e560fca3906 > ubuntu.tar 导出为镜像 cat docker/ubuntu.tar | docker import - test/ubuntu:v1 导入(镜像)
docker rm -f 1e560fca3906 删除一个容qi
//导出的要为tar或者tar.gz //导入的是镜像,不是容器,docker images 可以查看
镜像 docker search httpd 搜索镜像 images 查看镜像 pull 获取新的镜像 rmi 删除镜像 创建镜像: 1。从已经创建的容器中更新镜像,并且提交这个镜像 docker run -t -i ubuntu:15.10 /bin/bash apt-get update(在容器中运行) 在完成操作之后,输入 exit 命令来退出这个容器。此时 ID 为 e218edb10161 的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit 来提交容器副本 docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2 -m:提交的描述信息 -a:作者 2.我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像 vim Dockerfile 代码为: FROM centos:6.7 MAINTAINER Fisher "fisher@sudops.com" RUN /bin/echo 'root:123456' |chpasswd RUN useradd runoob RUN /bin/echo 'runoob:123456' |chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D 每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。 第一条FROM,指定使用哪个镜像源 RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。 然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。 runoob@runoob:~$ docker build -t runoob/centos:6.7 . Sending build context to Docker daemon 17.92 kB Step 1 : FROM centos:6.7 ---> d95b5ca17cc3 Step 2 : MAINTAINER Fisher "fisher@sudops.com" ---> Using cache ---> 0c92299c6f03 Step 3 : RUN /bin/echo 'root:123456' |chpasswd ---> Using cache ---> 0397ce2fbd0a Step 4 : RUN useradd runoob ...... -t :指定要创建的目标镜像名 . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径 我们可以使用新的镜像来创建容器 runoob@runoob:~$ docker run -t -i runoob/centos:6.7 /bin/bash [root@41c28d18b5fb /]# id runoob uid=500(runoob) gid=500(runoob) groups=500(runoob) 从上面看到新镜像已经包含我们创建的用户 runoob。 设置镜像标签: docker tag 860c279d2fec runoob/centos:dev 会看到860c279d2fec会多一个标签tag
Docker Dockerfile
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。