docker基础
镜像管理: Docker 镜像就是一个只读的模板。 例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。 镜像可以用来创建 Docker 容器。 docker提供了一个很简单的机制来创建镜像或者更新现有的镜像, 用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。 1、镜像下载 [root@compute01 mnt]# docker pull centos 2、镜像本地查看 [root@compute01 mnt]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.io/registry latest 5dc7ee9e7834 2 days ago 37.6 MB docker.io/nginx latest e5b1f15c25f4 2 days ago 181.6 MB docker.io/centos 7.3.1611 2785d012ae3e 2 weeks ago 191.8 MB docker.io/centos latest 2785d012ae3e 2 weeks ago 191.8 MB docker.io/hello-world latest 95f1eedc264a 6 months ago 1.848 kB docker.io/komukomo/centos-sshd 6.6 9843f6ce7919 7 months ago 265.3 MB #REPOSITORY :镜像厂库源名称/镜像名称 #TAG :镜像标签名称 #IMAGE ID :镜像ID(唯一) #CREATED :镜像创建时间 #VIRTUAL SIZE:镜像大小 3、网络镜像搜索 [root@compute01 ~]# docker search centos 4、镜像删除和更新 [root@compute01 ~]# docker rmi 5dc7ee9e7834 #docker rmi 名称 //删除的是:daixuan:latest,lastest是默认tag #docker rmi 名称:TAG //删除的是:daixuan:TAG #docker rmi IMAGE ID //删除的是:所有的IMAGE ID,会提示输入-f选项,强制删除多个镜像 5、将镜像保存为tar包 [root@compute01 ~]# docker save centos6-mytest > centos6-mytest.tar 6、将导出的tar包加载为镜像 [root@compute01 ~]# docker load < centos6-mytest.tar 7、制作基础镜像 [root@compute01 ~]# yum -y install febootstrap [root@compute01 ~]# febootstrap -i bash \ -i wget -i yum -i iputils -i iproute -i man -i vim-minimal \ -i openssh-server -i openssh-clients -i cronie-anacron -i crontabs -i rsyslog \ centos6 centos6-image http://mirrors.aliyun.com/centos/6/os/x86_64/ [root@compute01 ~]# cd centos6-image && tar -c . | docker import - centos6-base 8、制作应用镜像 使用Dockerfile 9、修改镜像名 [root@localhost ~]# docker tag centos daixuan //为centos镜像设置标签为daixuan # docker tag 原镜像名 自义定名:自定义TAG名 //实际上是新建了镜像 # docker tag IMAGE_ID 自义定名:自定义TAG名 //实际上是新建了镜像 注:如果镜像已经有了名称和tag,那么这条命令就会新建一个相同IMAGE ID的镜像; 注:模板导入的镜像没有tag,所以使用docker tag添加名称和tag,参考模板导入,不会新建镜像 10、从容器中创建一个新的镜像 [root@compute01 ~]# docker commit e73b26e75823 lianliqiang 语法 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] OPTIONS说明: -a :提交的镜像作者; -c :使用Dockerfile指令来创建镜像; -m :提交时的说明文字; -p :在commit时,将容器暂停。 11、docker history : 查看指定镜像的创建历史。 语法 docker history [OPTIONS] IMAGE OPTIONS说明: -H :以可读的格式打印镜像大小和日期,默认为true; --no-trunc :显示完整的提交记录; -q :仅列出提交记录ID。 Docker 容器: Docker 利用容器来运行应用。 容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。 可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。 注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。 1、启动一个容器 docker run :创建一个新的容器并运行一个命令 语法 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] OPTIONS说明: -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项; -d: 后台运行容器,并返回容器ID; -i: 以交互模式运行容器,通常与 -t 同时使用; -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用; --name="nginx-lb": 为容器指定一个名称; --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致; --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致; -h "mars": 指定容器的hostname; -e username="ritchie": 设置环境变量; --env-file=[]: 从指定文件读入环境变量; --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行; -m :设置容器使用内存最大值; --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型; --link=[]: 添加链接到另一个容器; --expose=[]: 开放一个端口或一组端口; [root@compute01 ~]# docker run --name mynginx -d nginx:latest 2、 Docker start/stop/restart 命令 docker start :启动一个或多少已经被停止的容器 docker stop :停止一个运行中的容器 docker restart :重启容器 语法 docker start [OPTIONS] CONTAINER [CONTAINER...] docker stop [OPTIONS] CONTAINER [CONTAINER...] docker restart [OPTIONS] CONTAINER [CONTAINER...] 3、 docker kill :杀掉一个运行中的容器。 语法 docker kill [OPTIONS] CONTAINER [CONTAINER...] OPTIONS说明: -s :向容器发送一个信号 4、 docker rm :删除一个或多少容器 语法 docker rm [OPTIONS] CONTAINER [CONTAINER...] OPTIONS说明: -f :通过SIGKILL信号强制删除一个运行中的容器 -l :移除容器间的网络连接,而非容器本身 -v :-v 删除与容器关联的卷 5、 docker pause :暂停容器中所有的进程。 docker unpause :恢复容器中所有的进程。 语法 docker pause [OPTIONS] CONTAINER [CONTAINER...] docker unpause [OPTIONS] CONTAINER [CONTAINER...] 6、 docker create :创建一个新的容器但不启动它 用法同 docker run 语法 docker create [OPTIONS] IMAGE [COMMAND] [ARG...] 语法同 docker run 7、 docker exec :在运行的容器中执行命令 语法 docker exec [OPTIONS] CONTAINER COMMAND [ARG...] OPTIONS说明: -d :分离模式: 在后台运行 -i :即使没有附加也保持STDIN 打开 -t :分配一个伪终端 实例 在容器mynginx中以交互模式执行容器内/root/runoob.sh脚本 runoob@runoob:~$ docker exec -it mynginx /bin/sh /root/runoob.sh http://www.runoob.com/ 在容器mynginx中开启一个交互模式的终端 runoob@runoob:~$ docker exec -i -t mynginx /bin/bash root@b1a0703e41e7:/# 8、 docker ps : 列出容器 语法 docker ps [OPTIONS] OPTIONS说明: -a :显示所有的容器,包括未运行的。 -f :根据条件过滤显示的内容。 --format :指定返回值的模板文件。 -l :显示最近创建的容器。 -n :列出最近创建的n个容器。 --no-trunc :不截断输出。 -q :静默模式,只显示容器编号。 -s :显示总的文件大小。 9、 docker inspect : 获取容器/镜像的元数据。 语法 docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE...] OPTIONS说明: -f :指定返回值的模板文件。 -s :显示总的文件大小。 --type :为指定类型返回JSON。 10、启动,关闭镜像,进入容器 root@localhost ~]# docker stop c49153b5d5b6 c49153b5d5b6 [root@localhost ~]# docker start c49153b5d5b6 c49153b5d5b6 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c49153b5d5b6 centos "/bin/bash" 19 hours ago Up 10 seconds furious_perlman [root@localhost ~]# docker exec -it c49153b5d5b6 /bin/bash //进入正在运行的容器exec命令 [root@c49153b5d5b6 /]# ctrl + d 或者exit都是退出一个容器 Docker 仓库 仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。 仓库分为公开仓库(Public)和私有仓库(Private)两种形式。 最大的公开仓库是Docker Pool 等,可以提供大陆用户更稳定快速的访问。 当然,用户也可以在本地网络内创建一个私有仓库。 当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。. 注:Docker 仓库的概念跟Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。 一个容器(改动(服务nginx tomcat)+只读模板(基础镜像))------重新生成一个新的镜像---------启动这个镜像 另一个容器(基础镜像) 一个方式:交互容器(基础镜像里)-----yum或者源码安装 另一种方式: DOckerfile:脚本形式安装部署 docker 下载一个基础镜像centos6.6 启动镜像,安装http --------安装好后生成一个新的镜像。 docker 后台启动新的镜像 [root@compute01 ~]# docker run -d -ti -p 8082:80 -v /home/www/:/var/www/html/ lianliqiang00004:v4 [root@compute01 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b37aec321235 lianliqiang00004:v4 "/bin/bash" 6 minutes ago Up 6 minutes 0.0.0.0:8082->80/tcp clever_keller [root@compute01 ~]# docker exec -ti b37aec321235 /bin/bash 进入到容器里 启动httpd ctrl+d退出 浏览器访问http://192.168.40.123:8882 能够正常访问 http docker ------新镜像 -----调用 1、启动一个基础镜像容器 2、连接到容器 3、yum install httpd -y 4、退出 生成新的镜像 5、通过新的镜像启动一个容器 (http 手动开启) 6、访问apache服务,并且能够正常使用 dockerfile 安装服务 FROM 基础系统镜像 MAINTAINER :作者的相关信息 ENV NGINX_VERSION 1.10.1-1~jessie ----------NGINX_VERSION=1.10.1-1~jessie ENV a 1 ==== a=1 run yum install httpd rum mkdir aaa EXPOSE 80 CMD /usr/local/nginx/sbin/nginx 启动容器时执行命令 docker build -t nginx
连老师欢迎大家进行评论研讨!!!!!