Docker的基本使用

# 转载请留言联系

 

  • Docker是什么?

Docker 是一个开源的应用容器引擎,基于 Go 语言 并听从Apache2.0协议开源。html

Docker 可让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,而后发布到任何流行的 Linux 机器上,也能够实现虚拟化。linux

容器是彻底使用沙箱机制,相互之间不会有任何接口(相似 iPhone 的 app),更重要的是容器性能开销极低。web

 

  • Docker的优势

 

  • 一、简化程序:

Docker 让开发者能够打包他们的应用以及依赖包到一个可移植的容器中,而后发布到任何流行的 Linux 机器上,即可以实现虚拟化。Docker改变了虚拟化的方式,使开发者能够直接将本身的成果放入Docker中进行管理。方便快捷已是 Docker的最大优点,过去须要用数天乃至数周的 任务,在Docker容器的处理下,只须要数秒就能完成。redis

 

 

  • 二、避免选择恐惧症:

若是你有选择恐惧症,仍是资深患者。Docker 帮你 打包你的纠结!好比 Docker 镜像;Docker 镜像中包含了运行环境和配置,因此 Docker 能够简化部署多种应用实例工做。好比 Web 应用、后台应用、数据库应用、大数据应用好比 Hadoop 集群、消息队列等等均可以打包成一个镜像部署。docker

 

  • 三、节省开支:

一方面,云计算时代到来,使开发者没必要为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思惟定势。Docker 与云的结合,让云空间获得更充分的利用。不只解决了硬件管理的问题,也改变了虚拟化的方式。shell

 

  • Docker组件

1)Docker 客户端和服务器

Docker 是一个客户端-服务器(C/S)架构程序。Docker 客户端只须要向 Docker 服务器 或者守护进程发出请求,服务器或者守护进程将完成全部工做并返回结果。Docker 提供了 一个命令行工具 Docker 以及一整套 RESTful API。你能够在同一台宿主机上运行 Docker 守护 进程和客户端,也能够从本地的 Docker 客户端链接到运行在另外一台宿主机上的远程 Docker 守护进程。数据库

 

 

2)Docker镜像

Docker 镜像是由文件系统叠加而成(是一种文件的存储形式)。最底端是一个文件引 导系统,即 bootfs,这很像典型的 Linux/Unix 的引导文件系统。Docker 用户几乎永远不会和 引导系统有什么交互。实际上,当一个容器启动后,它将会被移动到内存中,而引导文件系 统则会被卸载,以留出更多的内存供磁盘镜像使用。Docker 容器启动是须要一些文件的, 而这些文件就能够称为 Docker 镜像。ubuntu

Docker 把应用程序及其依赖,打包在 image 文件里面。只有经过这个文件,才能生成 Docker 容器。image 文件能够看做是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,能够生成多个同时运行的容器实例。bash

image 是二进制文件。实际开发中,一个 image 文件每每经过继承另外一个 image 文件,加上一些个性化设置而生成。举例来讲,你能够在 Ubuntu 的 image 基础上,往里面加入 Apache 服务器,造成你的 image。服务器

image 文件是通用的,一台机器的 image 文件拷贝到另外一台机器,照样可使用。通常来讲,为了节省时间,咱们应该尽可能使用别人制做好的 image 文件,而不是本身制做。即便要定制,也应该基于别人的 image 文件进行加工,而不是从零开始制做。

 

3)Registry(注册中心)

Docker 用 Registry 来保存用户构建的镜像。Registry 分为公共和私有两种。Docker 公司 运营公共的 Registry 叫作 Docker Hub。用户能够在 Docker Hub 注册帐号,分享并保存本身的 镜像(说明:在 Docker Hub 下载镜像巨慢,能够本身构建私有的 Registry)。

 

4)Docker容器

Docker 能够帮助你构建和部署容器,你只须要把本身的应用程序或者服务打包放进容 器便可。容器是基于镜像启动起来的,容器中能够运行一个或多个进程。咱们能够认为,镜 像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。 容器基于 镜像启动,一旦容器启动完成后,咱们就能够登陆到容器中安装本身须要的软件或者服务。

 

DOCKER的经常使用操做

  • Docker的启动与中止

1)安装(基于Ubuntu16.04)

sudo apt-key add gpg
sudo dpkg -i docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb

 

2)Docker服务端的启动与中止

docker是一个客户端-服务端(C/S)架构程序,相似redis。

- 客户端: docker命令行工具
- 服务器: Docker守护进程(docker引擎)

只有在服务端运行时,输入docker的命令才能运行。咱们平时用的终端界面就是docker的客户端。

# 启动docker
sudo service docker start

# 中止docker
sudo service docker stop

# 重启docker
sudo service docker restart

注意:安装完成Docker后,默认已经启动了docker服务

 

  • Docker的镜像

1)搜索可用的docker镜像

sudo docker search [镜像名字]

示例:sudo docker search ubuntu

 

2)下载docker镜像

sudo docker pull [镜像名字]

注意:要写完整的名字

示例:sudo docker pull ubuntu

 

3)加载本地镜像

若是有已经下载好的镜像,能够直接加载

sudo docker load -i [包的位置]

-i, –input string Read from tar archive file, instead of STDIN
从tar归档文件读取镜像,而不是标准输入流

示例:sudo docker load -i ./ubuntu.tar

 

4) 删除镜像

sudo docker image rm [镜像名字或镜像id]

示例:sudo docker image rm ubuntu

 

5)镜像的备份与迁移

咱们能够经过save命令将镜像打包成文件,拷贝给别人使用

sudo docker save -o 保存的文件名 镜像名

示例:

sudo docker save -o ./装载了web应用的镜像.tar ubuntu

而后能够拷贝给别人,别人拿到以后,用3)的方法就能够运行了。

 

6)列出镜像

sudo docker image ls

  • Docker的容器

1)列出本机正在运行的容器

sudo docker container ls

  • REPOSITORY:镜像所在的仓库名称
  • TAG:镜像标签
  • IMAGEID:镜像ID
  • CREATED:镜像的建立日期(不是获取该镜像的日期)
  • SIZE:镜像大小

 

2)列出本机全部容器,包括已经终止运行的

sudo docker container ls --all

 

3)建立容器

sudo docker run [option] 镜像名 [向启动容器中传入的命令]

经常使用可选参数说明:

  • -i 表示以“交互模式”运行容器
  • -t 表示容器启动后会进入其命令行。加入这-it两个参数后,容器建立就能登陆进去。即分配一个伪终端。
  • --name 为建立的容器命名
  • -v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录,即 宿主机目录:容器中目录),可使 用多个-v 作多个目录或文件映射。注意:最好作目录映射,在宿主机上作修改,而后 共享到容器上。
  • -d 在run后面加上-d参数,则会建立一个守护式容器在后台运行(这样建立容器后不 会自动登陆容器,若是只加-i -t 两个参数,建立后就会自动进去容器)。
  • -p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可使用多个-p 作多个端口映射
  • -e 为容器设置环境变量
  • --network=host 表示将主机的网络环境映射到容器中,容器的网络与主机相同

示例1:  

若是是建立一个交互式的容器。

sudo docker run -it --name=myubuntu ubuntu /bin/bash

在容器中能够随意执行linux命令,就是一个ubuntu的环境,当执行exit命令退出时,该容器也随之中止。注意是中止,不是没了。用sudo docker container ls --all列出全部容器(包括已终止的),能够看到容器还在的。

示例2:

若是是建立一个守护式的容器。

对于一个须要长期运行的容器来讲,咱们能够建立一个守护式容器。在容器内部exit退出时,容器也不会中止。

sudo docker run -dit --name=damonubuntu ubuntu [命令(可选)]

(为何不用-d而用-dit呢?缘由就是:Docker容器后台运行,就必须有一个前台进程。主线程结束,容器会退出。)

 

4)进入已运行的容器

例如,我想进入刚刚建立的守护式容器damonubuntu。

sudo docker exec -it 容器名或容器id 进入后执行的第一个命令

示例:sudo docker exec -it damonubuntu /bin/ls

 

5)中止与启动容器

# 中止一个已经在运行的容器
sudo docker container stop 容器名或容器id

# 启动一个已经中止的容器
sudo docker container start 容器名或容器id

# kill掉一个已经在运行的容器
sudo docker container kill 容器名或容器id

 

6)删除容器

sudo docker container rm 容器名或容器id

 

7)将容器保存为镜像

sudo docker commit 容器名 镜像名
相关文章
相关标签/搜索