设为首页 收藏本站
查看: 514|回复: 0

[经验分享] docker简介和基础命令

[复制链接]

尚未签到

发表于 2018-5-27 12:59:51 | 显示全部楼层 |阅读模式
一、Docker 概述
        Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。Docker 自开源后受到广泛的关注和讨论, 以至于 dotCloud 公司后来都改名为 Docker Inc。Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中广泛应用。Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。

左边传统的虚拟化技术,底层是服务器硬件,硬件上运行宿主机的操作系统,在宿主机
的操作系统之上,虚拟化出虚拟硬件设备,在虚拟硬件之上运行虚拟化操作系统,再在虚拟
的操作系统之上运行应用服务。而中间这段,虚拟化出来的操作系统大大占用了服务器的硬
件资源。而容器虚拟化技术就不同了,我们看一下右边这张图。在底层硬件上运行宿主机操作系
统,在宿主机上运行docker 引擎,无需虚拟化硬件,也不用操作系统,而是直接运行容器,
提供所需的应用服务,大大减降低了服务器资源的占用。
二、Docker 的优点
1、快速的交付和部署
2、更高效的虚拟化
3、更轻松的迁移和扩展
4、简单的管理

三、Docker 的基本概念
1、镜像(Image) Docker 镜像就是一个只读的模板。例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。 镜像可以用来创建 Docker 容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
2、容器(Container) Docker 利用容器来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root 用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。 *注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。
3、仓库(Repository)
仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。仓库分为公开仓库(Public)和私有仓库(Private) 两种形式。最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。 国内的公开仓库包括 Docker Pool 等,可以提供大陆用户更稳定快速的访问。当然,用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。 *注:Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。
四、Docker 基础命令
1、docker search //从Docker Hub 搜索镜像
用法: docker search TERM
参数:
--automated=false 仅显示自动创建的镜像
--no-trunc=false 输出信息不截断显示
-s, --stars=0 指定仅显示评价为指定星级以上的镜像

[root@docker ~]# docker search -s 500 nginx //搜索星级为500 以上的镜像


2、docker info //查看当前信息
[root@docker ~]# docker info

3、docker pull //下载镜像
[root@docker ~]# docker pull amber/nginx
4、docker push //上传镜像
[root@docker ~]# docker push amber/nginx
5、cat 本地容器快照名 |docker import - 自定义容器名:自定义标记名 //导入本地容器快照
6、docker run //运行一个容器,-i 交互式,-t 获得一个终端,-d 守护进程形式运行
[root@docker ~]# docker run -it centos:1 /bin/bash
[root@fcbe47db440d /]#
[root@docker ~]# docker run -d centos:1 /bin/bash -c "while :; do echo hello; sleep 2; done"
b21e687d0719cb36c89a4325808bc03d42918ef51176235e9dfc50c57094236b
[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
b21e687d0719        centos:1            "/bin/bash -c 'while "   About a minute ago   Up About a minute                       high_brahmagupta
7、退出容器
exit 或 ctrl + d //退出并停止容器
(2)先按ctrl + p 再按 ctrl + q //退出伪终端,容器后台运行
[root@docker ~]# docker run -it centos:1 /bin/bash
[root@353fc6f27cb7 /]#ctrl +p ; ctrl+q [root@docker ~]#
[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
353fc6f27cb7        centos:1            "/bin/bash"              49 seconds ago      Up 48 seconds                           berserk_einstein
b21e687d0719        centos:1            "/bin/bash -c 'while "   5 minutes ago       Up 5 minutes                            high_brahmagupta
[root@docker ~]# docker attach 353   //输入容器ID,若没有重名的,输入第一个字母即
[root@353fc6f27cb7 /]#
8、docker ps //查看容器,-a 查看所有容器,-q 只查看容器ID
[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
b21e687d0719        centos:1            "/bin/bash -c 'while "   11 minutes ago      Up 11 minutes                           high_brahmagupta
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
353fc6f27cb7        centos:1            "/bin/bash"              18 minutes ago      Exited (127) 11 minutes ago                       berserk_einstein
b21e687d0719        centos:1            "/bin/bash -c 'while "   23 minutes ago      Up 23 minutes                                     high_brahmagupta
fcbe47db440d        centos:1            "/bin/bash"              26 minutes ago      Exited (127) 23 minutes ago                       nauseous_franklin
9、docker rm //删除一个容器
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
353fc6f27cb7        centos:1            "/bin/bash"              20 minutes ago      Exited (127) 12 minutes ago                       berserk_einstein
b21e687d0719        centos:1            "/bin/bash -c 'while "   24 minutes ago      Up 24 minutes                                     high_brahmagupta
fcbe47db440d        centos:1            "/bin/bash"              27 minutes ago      Exited (127) 24 minutes ago                       nauseous_franklin
[root@docker ~]# docker rm -f b21
b21
[root@docker ~]# docker rm -f f
f
[root@docker ~]# docker rm -f 353
353
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
10、docker rmi //删除一个或多个镜像,-f 强制删除
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              1                   51f7df51ca40        30 minutes ago      196.7 MB
docker.io/nginx     latest              db079554b4d2        32 hours ago        181.8 MB
[root@docker ~]# docker rmi docker.io/nginx
Untagged: docker.io/nginx:latest
Untagged: docker.io/nginx@sha256:4296639ebdf92f035abf95fee1330449e65990223c899838283c9844b1aaac4c
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              1                   51f7df51ca40        32 minutes ago      196.7 MB
11、docker create //创建一个容器,但不运行
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              1                   385c6554f48e        19 seconds ago      196.7 MB
[root@docker ~]# docker create -it centos:1 /bin/bash
9bace61c06b5c4539e4d8668a04ff2762cf5aaad13731d3c2ac6b99d1e3cb517
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
9bace61c06b5        centos:1            "/bin/bash"         12 seconds ago      Created                                 drunk_payne
12、docker start|stop|restart|kill //运行已停止的容器|停止一个正在运行的容器|重启
一个容器|杀死一个正在运行的容器
[root@docker ~]# docker start 9ba
9ba
[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
9bace61c06b5        centos:1            "/bin/bash"         About a minute ago   Up 9 seconds                            drunk_payne
[root@docker ~]# docker stop 9ba
9ba
[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@docker ~]# docker start 9ba
9ba
[root@docker ~]# docker kill 9ba
9ba
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                       PORTS               NAMES
9bace61c06b5        centos:1            "/bin/bash"         4 minutes ago       Exited (137) 8 seconds ago                       drunk_payne
13、docker save |load //存储镜像|载入镜像
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              1                   385c6554f48e        6 minutes ago       196.7 MB
[root@docker ~]# docker save -o centos.tar centos:1
[root@docker ~]# ls
anaconda-ks.cfg  centos.tar  mysql5.tar  nginx.tar  tomcat.tar
[root@docker ~]# docker rmi -f centos:1
Untagged: centos:1
Deleted: sha256:385c6554f48e0aaa488fd905e2f70b579ba47c98a9d4d44bf0235e0a8e3141ff
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@docker ~]# docker load < centos.tar
Loaded image: centos:1
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              1                   385c6554f48e        15 minutes ago      196.7 MB
[root@docker ~]#
14、docker export //导出容器快照
[root@docker ~]# docker run -it centos:1 /bin/bash
[root@42a1ab757ffd /]# touch aaa
[root@42a1ab757ffd /]# ls
aaa                bin  etc   lib    lost+found  mnt  proc  run   srv  tmp  var
anaconda-post.log  dev  home  lib64  media       opt  root  sbin  sys  usr
[root@42a1ab757ffd /]# exit
exit
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
42a1ab757ffd        centos:1            "/bin/bash"         45 seconds ago      Exited (0) 29 seconds ago                         nauseous_varahamihira
9bace61c06b5        centos:1            "/bin/bash"         17 minutes ago      Exited (137) 13 minutes ago                       drunk_payne
[root@docker ~]# docker export -o centos-aaa.tar 42a
[root@docker ~]# ls
anaconda-ks.cfg  centos-aaa.tar  centos.tar  mysql5.tar  nginx.tar  tomcat.tar
[root@docker ~]# cat centos-aaa.tar |docker import - centos-aaa
sha256:99e1653378ed127eaeb8dd531fc7b4b5fc17b8bf095d9deeec5246f368dc4dcf
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos-aaa          latest              99e1653378ed        13 seconds ago      196.7 MB
centos              1                   385c6554f48e        21 minutes ago      196.7 MB
[root@docker ~]# docker run -it centos-aaa /bin/bash
[root@0dcb3999062c /]# ls
aaa                bin  etc   lib    lost+found  mnt  proc  run   srv  tmp  var
anaconda-post.log  dev  home  lib64  media       opt  root  sbin  sys  usr
、创建私有仓库
仓库(Repository)是集中存放镜像的地方。
注册服务器才是存放仓库具体的服务器(Registry),每个服务器上都可以放置多个仓库,
而每个仓库下可以放置多个镜像,每个镜像上可以运行多个容器,每个容器上可以跑一个应
用或应用组。
仓库自身可以分为:公共仓库和私有仓库
比如共有仓库: http://hub.docker.com 或国内的: dl.dockerpool.com
安装docker 后,可以通过官方提供的registry 镜像来简单搭建一套本地仓库环境
[root@docker ~]# vi /etc/sysconfig/docker
# INSECURE_REGISTRY='--insecure-registry'
INSECURE_REGISTRY='--insecure-registry 192.168.10.130:5000'
[root@docker ~]# systemctl restart docker.service
方法一:

方法二:
[root@docker ~]# mkdir -pv /opt/data/registry
mkdir: 已创建目录 "/opt/data" mkdir:
已创建目录 "/opt/data/registry"
[root@docker ~]# docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry 通过这种方式可以将上传的镜像放到本地的: /opt/data/registry

[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
bb09700272a6        registry            "/entrypoint.sh /etc/"   5 minutes ago       Exited (2) 25 seconds ago                       jovial_poitras
[root@docker ~]# docker start bb0
bb0
[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
bb09700272a6        registry            "/entrypoint.sh /etc/"   3 minutes ago       Up 3 minutes        0.0.0.0:5000->5000/tcp   jovial_poitras

root@19bd142b0566:/# 192.168.10.160 - - [17/Feb/2017:10:22:06 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)" "-"

按ctrl+p 再按ctrl+q,使服务保持后台运行
[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                           NAMES
19bd142b0566        nginx               "/bin/bash"              12 minutes ago      Up 12 minutes       443/tcp, 0.0.0.0:5500->80/tcp   adoring_ardinghelli
bb09700272a6        registry            "/entrypoint.sh /etc/"   23 minutes ago      Up 18 minutes       0.0.0.0:5000->5000/tcp          jovial_poitras

[root@docker ~]# docker tag nginx 192.168.10.130:5000/nginx-test   //将修改过的nginx 镜
像做标记封装,准备上传到私有仓库
[root@docker ~]# docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
centos-aaa                       latest              99e1653378ed        31 minutes ago      196.7 MB
centos                           1                   385c6554f48e        53 minutes ago      196.7 MB
docker.io/nginx                  latest              db079554b4d2        33 hours ago        181.8 MB
192.168.10.130:5000/nginx-test   latest              db079554b4d2        33 hours ago        181.8 MB
docker.io/registry               latest              d1e32b95d8e8        4 weeks ago         33.17 MB
[root@docker ~]# docker push 192.168.10.130:5000/nginx-test   //上传到私有仓库
The push refers to a repository [192.168.10.130:5000/nginx-test]
a82b6c66a6d4: Pushed
1941ca4a7a84: Pushed
a2ae92ffcd29: Pushed
latest: digest: sha256:9e81e4ce4899448e5e7aea69a72dfd1df989a7a0fe7365ad63be1133f05acf10 size: 948
另外打开一台机器装好docker
[root@docker-2 ~]# docker pull 192.168.10.131:5000/nginx-test //从私有仓库下载镜像
略。。。

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-481802-1-1.html 上篇帖子: docker commit 定制镜像 下篇帖子: docker存储与通信
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表