1.简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 LinuxWindows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口

在之前的项目部署中,我们需要在linux服务器上安装python,nginx,uwsgi,redis, ,mysql等等,这是一个非常耗时的过程,可能要花费一天的时间,如果我们在以后迁移到其他服务器怎么办,难道要重新部署一次吗?!!!

为此我们可以使用docker技术,将所有的部署放在docker中,然后将docker打包,如果以后需要迁移,直接将镜像发送到服务器,一键启动

1.1 Docker的应用场景

  • Web 应用的自动化打包和发布。

  • 自动化测试和持续集成、发布。

1.2 相关链接

Docker 官网:https://www.docker.com

Github Docker 源码:https://github.com/docker/docker-ce

2.docker的生命周期概念

  • 镜像:一个系统的只读版本,例如一个微型的centos或者ubuntu系统

  • 容器:容器进程,应用程序以后封装在容器中运行,相互隔离

  • 仓库:存储镜像的一个仓库地址,便于和他人共享镜像文件

我们基于镜像运行容器,一个镜像可以运行多个容器实例,这样的话多个容器内的环境也是一模一样的

3.安装docker

3.1 下载

使用官方安装脚本自动安装

# 下载curl
sudo apt install curl

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

3.2 确保docker服务已打开

# 查看docker服务状态 
sudo service docker status
# 重启docker服务
sudo service docker restart
# 关闭docker
sudo service docker stop
# 开启docker服务
sudo service docker start

3.3 测试docker是否成功安装

sudo docker run hello-world

显示如下下界面代表安装成功

4 卸载docker

删除安装包:

sudo apt-get purge docker-ce

删除镜像、容器、配置文件等内容:

sudo rm -rf /var/lib/docker

5 操作docker

docker服务操作

sudo service docker start   # 开启docker服务
sudo service docker stop # 关闭docker服务
sudo service docker restart # 重启docker服务
sudo service docker status # 查看docker服务状态

5.1 查看所有镜像

sudo docker images
包括:镜像名称 镜像ID 镜像创建时间 镜像大小

5.2 查看容器

docker ps   # 查看存活的容器
docker ps -a # 查看所有容器,包括已退出的容器

5.3 运行docker

在运行一个镜像的时候,如果容器中没有存活的进程,容器就会直接挂掉

# 简单运行一下,通常会执行一下容器就会挂掉
docker run 镜像名称
# 交互式的运行一个的docker容器,-i:交互式命令, -t:开启一个终端
docker run -it 镜像名称 /bin/bash # 后台运行一个docker容器,并指定运行shell代码 -d:让容器后台运行, -c:运行的shell命令
docker run -d 镜像名称 /bin/sh -c "while true;do echo 辛苦了,学习linux; sleep 1;done" # 运行容器并指定名称
docker run --name xxx -it 镜像名称 /bin/bash # 运行容器并指定端口映射
docker run --name xxx -it 镜像名称 -p 6000:5000

# 运行容器并指定端口映射,文件夹映射
docker run --name xxx -it 镜像名称 -p 6000:5000 -v 宿主机目录:容器目录 -e 环境变量key:环境变量velue
# 运行容器并制定端口映射,文件夹映射和环境PATH映射
docker run --name xxx -it 镜像名称 -p 6000:5000 -v 宿主机目录:容器目录 -e
# 进入一个存活的容器 docker exec -it 容器id /bin/bash # 容器重启 docker restart 容器id # 容器停止 docker stop 容器id # 容器启动 docker start 容器id
sudo docker run -d --name kunmzhao  -e PYTHONPATH=/home/auto/code/tng-synlite -v /host/path/to/broad-tests:/broad-tests  -v /home/mars/kunmzhao/ata_script:/ata_scripts_containers.cisco.com/synergy_lite/runnertest:3.6.15

5.4 docker镜像的获取

方式一:dockerhub获取,先搜索后下载
  docker search 镜像名称docker pull  镜像名称

​方式二:自己制作docker commit 容器id 新镜像名称

5.5 删除镜像

# 删除镜像要确保没有使用该镜像的容器,否则失败
docker rmi 镜像id # 批量删除镜像
docker rmi `docker iamges -aq`

5.6 删除容器

# 确保容器是未运行的
docker rm 容器id # 批量删除容器
docker rm `docker ps -aq`

5.7 查看指定容器的运行日志

docker logs  容器id
docker logs -f 容器id #实时刷新容器内的日志,例如检测nginx等日志信息

5.8 镜像的制作,导出及导入

  • 镜像制作

    docker commit  容器ID  镜像名称

  • 镜像导出
    docker save  镜像id   >   镜像的压缩文件

  • 镜像导入
    初次导入镜像没有tag,添加一个即可
    docker load < 镜像的压缩文件
    docker tag 镜像id 镜像新名称

1.docker的基本使用的更多相关文章

  1. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  2. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  3. Docker 第一篇--初识docker

    已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...

  4. 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)

    环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...

  5. docker for mac 学习记录

    docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...

  6. scrapy爬虫docker部署

    spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...

  7. [原][Docker]特性与原理解析

    Docker特性与原理解析 文章假设你已经熟悉了Docker的基本命令和基本知识 首先看看Docker提供了哪些特性: 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上, ...

  8. 开发者的利器:Docker 理解与使用

    困扰写代码的机器难免会被我们安装上各种各样的开发工具.语言运行环境和引用库等一大堆的东西,长久以来不仅机器乱七八糟,而且有些相同的软件还有可能会安装不同的版本,这样又会导致一个项目正常运行了,却不小心 ...

  9. 使用python自动生成docker nginx反向代理配置

    由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...

  10. 微服务与Docker介绍

    什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...

随机推荐

  1. 100 个常见错误「GitHub 热点速览 v.22.35」

    本周的特推非常得延续上周的特点--会玩,向别人家的女朋友发送早安.这个错误是如何发生的呢?如何有效避免呢?自己用 daily_morning 免部署.定制一个早安小助手给女友吧. 除了生活中的错误,工 ...

  2. 并发编程Bug起源:可见性、有序性和原子性问题

    以前古老的DOS操作系统,是单进行的系统.系统每次只能做一件事情,完成了一个任务才能继续下一个任务.每次只能做一件事情,比如在听歌的时候不能打开网页.所有的任务操作都按照串行的方式依次执行. 这类服务 ...

  3. immutable 与 stable 函数的差异

    Stable 函数不能修改数据库,单个Query中所有行给定同样的参数确保返回相同的结果.这种稳定级别允许优化器将多次函数调用转换为一次.在索引扫描的条件中使用这种函数是可行的,因为索引扫描只计算一次 ...

  4. Spring Boot2配置Swagger2生成API接口文档

    一.Swagger2介绍 前后端分离开发模式中,api文档是最好的沟通方式. Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务. 及时性 (接 ...

  5. [Python]-openpyxl模块Excel数据处理-读取公式的结果

    日常需要Python来处理各种数据,处理Excel数据常用的库一般有openpyxl.xlrd(读取).xlwt(写入). 经过对比发现openpyxl模块比较好用. openpyxl模块 这篇笔记比 ...

  6. day41-网络编程03

    Java网络编程03 5.UDP网络通信编程[了解] 5.1基本介绍 类DatagramSocket 和 DatagramPacket[数据报/数据包]实现了基于 UDP的协议网络程序 UDP数据报通 ...

  7. ProxySQL SSL 配置

    后端 SSH 连接配置 从版本 v1.2.0e 开始,ProxySQL 支持对后端使用 SSL 连接. 重要提示: 仅支持 v1.x 中的后端 SSL.在 v2.x 之前的版本中,客户端是无法使用 S ...

  8. 图解 Kubernetes Ingress

    文章转载自:https://www.qikqiak.com/post/visually-explained-k8s-ingress/ 原文链接: https://codeburst.io/kubern ...

  9. Service概述

    为何需要 Service Kubernetes 中 Pod 是随时可以消亡的(节点故障.容器内应用程序错误等原因).如果使用 Deployment 运行您的应用程序,Deployment 将会在 Po ...

  10. 19. Fluentd输入插件:in_http用法详解

    in_http插件允许使用HTTP协议来采集日志事件.这个插件会建立一个支持REST风格的HTTP端点,来接收日志事件请求. 配置示例 <source> @type http port 9 ...