docker简介和基础命令

一、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 指定仅显示评价为指定星级以上的镜像

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

2、docker info //查看当前信息

[[email protected] ~]# docker info 

3、docker pull //下载镜像

[[email protected] ~]# docker pull amber/nginx

4、docker push //上传镜像

[[email protected] ~]# docker push amber/nginx

5、cat 本地容器快照名 |docker import - 自定义容器名:自定义标记名 //导入本地容器快照

6、docker run //运行一个容器,-i 交互式,-t 获得一个终端,-d 守护进程形式运行

[[email protected] ~]# docker run -it centos:1 /bin/bash

[[email protected] /]#

[[email protected] ~]# docker run -d centos:1 /bin/bash -c "while :; do echo hello; sleep 2; done"

b21e687d0719cb36c89a4325808bc03d42918ef51176235e9dfc50c57094236b

[[email protected] ~]# 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 //退出伪终端,容器后台运行

[[email protected] ~]# docker run -it centos:1 /bin/bash

[[email protected] /]#ctrl +p ; ctrl+q [[email protected] ~]#

[[email protected] ~]# 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

[[email protected] ~]# docker attach 353   //输入容器ID,若没有重名的,输入第一个字母即可

[[email protected] /]#

8、docker ps  //查看容器,-a 查看所有容器,-q 只查看容器ID

[[email protected] ~]# 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

[[email protected] ~]# 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 //删除一个容器

[[email protected] ~]# 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

[[email protected] ~]# docker rm -f b21

b21

[[email protected] ~]# docker rm -f f

f

[[email protected] ~]# docker rm -f 353

353

[[email protected] ~]# docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

10、docker rmi //删除一个或多个镜像,-f 强制删除

[[email protected] ~]# 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

[[email protected] ~]# docker rmi docker.io/nginx

Untagged: docker.io/nginx:latest

Untagged: docker.io/[email protected]:4296639ebdf92f035abf95fee1330449e65990223c899838283c9844b1aaac4c

[[email protected] ~]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

centos              1                   51f7df51ca40        32 minutes ago      196.7 MB

11、docker create //创建一个容器,但不运行

[[email protected] ~]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

centos              1                   385c6554f48e        19 seconds ago      196.7 MB

[[email protected] ~]# docker create -it centos:1 /bin/bash

9bace61c06b5c4539e4d8668a04ff2762cf5aaad13731d3c2ac6b99d1e3cb517

[[email protected] ~]# 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 //运行已停止的容器|停止一个正在运行的容器|重启

一个容器|杀死一个正在运行的容器

[[email protected] ~]# docker start 9ba

9ba

[[email protected] ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES

9bace61c06b5        centos:1            "/bin/bash"         About a minute ago   Up 9 seconds                            drunk_payne

[[email protected] ~]# docker stop 9ba

9ba

[[email protected] ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

[[email protected] ~]# docker start 9ba

9ba

[[email protected] ~]# docker kill 9ba

9ba

[[email protected] ~]# 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 //存储镜像|载入镜像

[[email protected] ~]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

centos              1                   385c6554f48e        6 minutes ago       196.7 MB

[[email protected] ~]# docker save -o centos.tar centos:1

[[email protected] ~]# ls

anaconda-ks.cfg  centos.tar  mysql5.tar  nginx.tar  tomcat.tar

[[email protected] ~]# docker rmi -f centos:1

Untagged: centos:1

Deleted: sha256:385c6554f48e0aaa488fd905e2f70b579ba47c98a9d4d44bf0235e0a8e3141ff

[[email protected] ~]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

[[email protected] ~]# docker load < centos.tar

Loaded image: centos:1

[[email protected] ~]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

centos              1                   385c6554f48e        15 minutes ago      196.7 MB

[[email protected] ~]#

14、docker export //导出容器快照

[[email protected] ~]# docker run -it centos:1 /bin/bash

[[email protected] /]# touch aaa

[[email protected] /]# 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

[[email protected]ffd /]# exit

exit

[[email protected] ~]# 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

[[email protected] ~]# docker export -o centos-aaa.tar 42a

[[email protected] ~]# ls

anaconda-ks.cfg  centos-aaa.tar  centos.tar  mysql5.tar  nginx.tar  tomcat.tar

[[email protected] ~]# cat centos-aaa.tar |docker import - centos-aaa

sha256:99e1653378ed127eaeb8dd531fc7b4b5fc17b8bf095d9deeec5246f368dc4dcf

[[email protected] ~]# 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

[[email protected] ~]# docker run -it centos-aaa /bin/bash

[[email protected] /]# 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 镜像来简单搭建一套本地仓库环境

[[email protected] ~]# vi /etc/sysconfig/docker

# INSECURE_REGISTRY=‘--insecure-registry‘

INSECURE_REGISTRY=‘--insecure-registry 192.168.10.130:5000‘

[[email protected] ~]# systemctl restart docker.service

方法一:

方法二:

[[email protected] ~]# mkdir -pv /opt/data/registry

mkdir: 已创建目录 "/opt/data" mkdir:

已创建目录 "/opt/data/registry"

[[email protected] ~]# docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry 通过这种方式可以将上传的镜像放到本地的: /opt/data/registry

[[email protected] ~]# 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

[[email protected] ~]# docker start bb0

bb0

[[email protected] ~]# 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

[email protected]:/# 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,使服务保持后台运行

[[email protected] ~]# 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

[[email protected] ~]# docker tag nginx 192.168.10.130:5000/nginx-test   //将修改过的nginx 镜

像做标记封装,准备上传到私有仓库

[[email protected] ~]# 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

[[email protected] ~]# 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

[[email protected] ~]# docker pull 192.168.10.131:5000/nginx-test //从私有仓库下载镜像

略。。。

时间: 2024-10-10 08:05:25

docker简介和基础命令的相关文章

docker学习(2)--基础命令

转载请注明源出处:http://www.cnblogs.com/lighten/p/6875355.html 1.基本命令 搭建好docker环境之后,使用docker help命令查看docker的基本用法: docker COMMAND. 目前我们较为常使用的是commands下面的指令,如果使用swarm相关功能会用到management commands.目前我使用的是17.03.1-ce,后续版本功能应该会更加细分,可能会替换成management来使用.比如docker images

Docker介绍及基础命令

什么是Docker? Docker 是一种容器技术,它不依赖任何语言.框架或系统,可以将应用变成一种标准化的.可移植的.自管理的组件,并脱离硬件平台在任何主流系统中开发.调试和运行.docker是一个基于LXC容器技术又对其进行优化升级扩展的管理工具,提供一系列更强的功能,如可移植性.自动化构建(dockerfile).版本控制.镜像管理等. Docker是一个重新定义了程序开发测试.交付和部署过程的开放平台,Docker则可以称为构建一次,到处运行,这就是docker提出的"Build onc

Linux系统简介&amp;分区&amp;基础命令(ADMIN01-1)

讲师牛犇课程介绍:ADMIN 管理员技术7天Engineer 工程师技术6天Services 系统&服务进阶7天 ADMIN课程安排:1.Linux系统简介 安装RHEL7系统.RHEL7基本操作2.教学环境介绍.命令行基础.目录和文件管理3.配置网络.软件包管理.文本/文件查找4.NTP时间同步.tar备份与恢复.管理用户和组.cron计划任务5.权限和归属.使用LDAP认证.家目录漫游6.分区规划及使用.LVM逻辑卷.管理交换空间7.综合串讲.综合练习 一.基础知识 UNIX诞生时间1970

docker系列之基础命令-1

1.docker基础命令 docker images 显示镜像列表 docker ps 显示容器列表 docker run IMAGE_ID 指定镜像, 运行一个容器 docker start/stop/pause/unpause/kill/restart CONTAINER_ID 操作容器状态 docker tag IMAGE_ID [REGISTRYHOST/][USERNAME/]NAME[:TAG] 给指定镜像命名 docker pull/push NAME:TAG 下载, 推送镜像到 

linux简介和基础命令使用

1.按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别. linux主流发行版本主要有 slackware系列:主要代表有S.u.S.E,openSUSE openSUSE:根据使用者的不同,可选择适用于各自的版本. debian系列:主要衍生分支ubuntu,mint ubuntu:在国内名气较大,使用广泛,其突出特点使用简单,容易上手.可为装完就能用 mint:基于ubuntu,显著特点安装时可选择桌面环境后,即可使用,简单,方便易用 redhat系列:主要代表rehl,Cent

cmd 与 bash 基础命令入门

身为一个程序员会用命令行来进行一些简单的操作,不是显得很装逼嘛!?嘿嘿~ ヾ(>?<) cmd 与 bash 基础命令入门 ??????简介 ??????CMD 基础命令 ????????????目录操作 ??????????????????切换目录 ??????????????????列出文件与子目录 ??????????????????创建目录 ??????????????????删除目录 ??????????????????复制目录 ??????????????????移动目录 ????

docker 应用-1(安装以及基础命令)

Docker 安装 还是看官方文档吧TAT https://docs.docker.com/engine/getstarted/step_one/ 理解docker镜像和容器 镜像就是docker容器在运行的时候所使用的文件系统以及系统内核,以及其他参数.当然,docker镜像一般都会比实际的操作系统+软件要轻便的多. 容器就是一个镜像的运行实体. Docker基础命令 # 查看docker的版本信息 $ docker version # 查看安装docker的信息 $ docker info

Docker实战(一):Docker基础命令

Docker基础命令 下面简单介绍一下Docker常用的一些基础命令 # 在ubuntu中安装docker $ sudo apt-get install docker.io # 查看docker的版本信息 $ docker version # 查看安装docker的信息 $ docker info # 查看本机Docker中存在哪些镜像 $ docker images # 检索image $ docker search ubuntu:14.04 # 在docker中获取ubuntu镜像 $ do

Centos安装docker及docker基础命令

安装 rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm sed -i 's/^mirrorlist=https/mirrorlist=http/' /etc/yum.repos.d/epel.repo yum -y install docker-io service docker start 基础命令 docker search 在仓库中寻找镜像 docker  pull 拉取镜像