前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker使用教程

Docker使用教程

原创
作者头像
Action
修改2021-04-01 09:49:49
5730
修改2021-04-01 09:49:49
举报
文章被收录于专栏:WEB开发~

Docker是什么

Docker是一种容器技术,通过Docker你可以做到:

  1. 更快速的交付和部署
  2. 更高效的虚拟化
  3. 更轻松的迁移和扩展
  4. 更简单的管理(类似git)

下面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

Docker的3个重要的概念

Docker 包括三个基本概念

  1. 镜像(Image)
  2. 容器(Container)
  3. 仓库(Repository)

镜像是分层存储的

类似Git,一个文件对此修改,之后的修改是对上次修改的补丁,一层层的覆盖。

镜像也一样,它不像ISO那样的打包文件,由一个文件组成,而是由一组文件系统组成,或者说,由多层文件系统联合组成。

镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。

容器

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

注意:容器中的数据非持久的,容器的生命周期结束了, 容器中的文件也就没有了,所以容器运行时,不应当往容器本身的存储层(文件系统)中写数据,而是应当用数据卷(Volume)。数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器可以随意删除、重新 run,数据却不会丢失。

仓库

用于集中的存储、分发镜像。

公开服务:Docker官方的镜像存储服务器,一般比较慢,但可以使用国内的加速器。

私有的服务:Docker Registry可以自己搭建, Docker 官方也提供了搭建Docker Registry的官方镜像

下图是Docker 的总结图

Docker的安装

Mac下安装Docker

https://download.docker.com/mac/stable/Docker.dmg

或者https://download.docker.com/mac/stable/Docker.dmg

或者https://docs.docker.com/docker-for-mac/

和一般的应用安装应用一样,安装完后如下:

设置加速

https://ftheyftp.mirror.aliyuncs.com

在Centos6.5中。只需要修改 /etc/sysconfig/docker文件,加上下面这句

other_args=--registry-mirror=https://0yrztjfu.mirror.aliyuncs.com并重启docker就好了

Docker的基本操作

对镜像

镜像的搜索:

代码语言:txt
复制
docker search Name

镜像的获取:

代码语言:txt
复制
docker pull Name:Tag

镜像的查看:

代码语言:txt
复制
docker images

镜像的标签:

一个镜像可以定义多个标签

代码语言:txt
复制
docker tag REPOSITORY:TAG MY_REPOSITORY:TAG; 

镜像的删除:

删除可以是REPOSITORY:TAG, 也可以是镜像的ID

按tag删除时,一个镜像还有其他标签是,这个镜像不会完全删除,直到这个是最后的标签。

代码语言:txt
复制
docker rmi CONTAINERID
docker rmi NAME:TAG

删除全部镜像

代码语言:txt
复制
docker rmi $(docker images -q) 

Docker 的导出:

代码语言:txt
复制
docker save -o ~/Documents/99temp/onlyoffice_doc_server.tar onlyoffice:0.1

Docker的载入:

代码语言:txt
复制
docker load < onlyoffice_doc_server.tar

Docker保存镜像:

代码语言:txt
复制
docker commit -m 'add chinese fonts' -a 'demo' 629c927b43b3 onlyoffice:0.1 

对容器

查看容器:

代码语言:txt
复制
docker ps
docker create # 创建容器,但不运行
docker run 创建容器,并且运行

典型的命名:

代码语言:txt
复制
docker run -i -t -d -p 8080:80 -h onlyofficeweb --name onlyoffice --restart=always onlyoffice/documentserver

#-it 参数保存标准输入打开,并分配一个伪终端

#--restart=always 异常情况下总是重新启,包括:不可知的错误(内存溢出等)、docker服务启动时

进入容器:

代码语言:txt
复制
docker attach ContainerID/ContainerNamedocker exec -it ContainerID bash

#-it 是必选的

容器的启动、停止:

代码语言:txt
复制
docker start CONTAINER
docker stop CONTAINER

删除容器:

代码语言:txt
复制
docker rm CONTAINER

删除全部容器

代码语言:txt
复制
docker rm $(docker ps -aq) 

-a:列出全部容器包括没有运行的;-q:列出容器的id

重命名

代码语言:txt
复制
docker rename CONTAINER NEWNAME

输出容器的特定信息

代码语言:txt
复制
docker inspect -f "{{ .Mounts }}” web1
docker inspect -f '{{ (index .Mounts 0).Source }}' containerid

数据卷

创建并启动一个nginx, 新建数据卷/web

代码语言:txt
复制
docker run -it -d -P --name web -h web1 -v /web nginx

bind 绑定一个本地目录为容器的数据卷:

代码语言:txt
复制
docker run -it -d -P --name -h web1 web -v /Users/demo/Documents/workspace/docker/volumes/web1:/web nginx

数据共享: #web2 会共享web1中所用的数据卷

代码语言:txt
复制
docker run -it -d -P -h demoweb2 --name web2 --volumes-from web1 nginx 

端口

-P 随机分配端口映射(49000 ~ 49900)

-p 8000:80 本机的8000端口映射到容器的80端口

代码语言:txt
复制
docker run -it -d -P --name web -h web1 -v /web nginx
docker run -it -d -p8000:80 --name web -h web1 -v /web nginx

容器互联

代码语言:txt
复制
docker run -it -d -P -h web1 --name web --link db:db nginx

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Docker是什么
  • Docker的3个重要的概念
  • Docker的安装
  • Docker的基本操作
    • 对镜像
      • 删除全部镜像
        • 对容器
          • 删除全部容器
            • 数据卷
              • 端口
                • 容器互联
                相关产品与服务
                容器镜像服务
                容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档