一、docker简介

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

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

二、docker的应用场景

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

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

  • 在服务型环境中部署和调整数据库或其他的后台应用。

  • 解决软件跨境迁移的问题

三、docker的安装

  docker在各个平台均可以使用,centos、ubuntu、mac、windows等,这里就不一一列举了,附上各个平台的安装链接

四、docker的架构

  • 镜像(image):用于创建docker容器的模板
  • 容器(container):独立运行的一个或一组应用,是镜像的实体
  • 仓库(repository):用来保存镜像的

五、docker进程相关命令

  1、启动docker

systemctl start docker

  2、停止docker

systemctl stop docker

  3、查看docker状态

systemctl status docker

  4、重启docker

systemctl restart docker

  5、设置开机启动

systemctl enable docker

六、docker镜像相关命令

  1、查看镜像,查看本地所有的镜像

docker images

  2、查询所有镜像的ID

docker images -q

  3、搜索镜像:从网络中查询需要的镜像

docker search 镜像的名称

  4、拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号, 如果不指定,则是最新版,如果不知道镜像的版本号,可以去hub.docker.com去查询

docker pull 镜像名称

  5、删除指定镜像:

docker rmi 镜像id 

  6、删除所有镜像:

docker rmi `docker images -q`    # 注意` 是键盘ESC下面的键

七、容器相关命令

  1、查看正在运行容器

docker ps

  2、查看所有容器

docker ps -a

  3、创建并启动容器

docker run 参数 镜像名称:版本号

参数说明:
* -i:保持容器运行,通常与-t同时使用,加上 it 这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭,
* -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
* -d:以守护(后台)模式运行容器,创建一个容器在后台运行,需要使用docker exec 进入容器,退出后,容器不会关闭。
* -it 创建的容器一般称为交互式容器, -id 创建的容器一般称为守护式容器
* --name: 为创建的容器命名
* -p 宿主机端口:容器端口 * -e:环境配置
* --restart:是否自动重启

案例:docker run -id --name=community4 -p 8000:8000 -p 2223:22 -p 8005:8005 -e PYTHONIOENCODING=utf-8 --restart=always community:5.0 /start.sh

  docker 默认的的编码是ascii,所以在创建容器的时候,指定 -e PYTHONIOENCODING=utf-8

  在创建容器是添加-–restart=always选项,保证docker服务启动时,容器会自动运行

  4、进入容器

docker exec 参数 容器id或者容器名 /bin/bash  # 退出容器,容器不会关闭
示例:docker exec -it haoshun /bin/bash

  5、停止容器

docker stop 容器名称或者容器id

  6、启动容器

docker start 容器名称或者容器id

  7、删除容器:如果是运行状态则删除失败,需要停止容器才能删除

docker rm 容器名称或者容器id

  8、查看容器信息

docker inspect 同期名称或者容器id

八、docker数据卷

  配置数据卷

docker run  ... -v 宿主机目录(文件):容器内目录(文件)...

  注意事项

  1. 目录必须是绝对路径
  2. 如果目录不存在,会自动创建
  3. 可以挂在多个数据卷

  举例:通过多个-v 可以配置多个数据卷

docker run -it --name=test2 -v /vagrant/test_data2:/home/test_data2 -v /vagrant/test_data3:/home/test_data3 ubuntu:16.04

九、docker转镜像

  1、使用容器打包成镜像

docker commit 容器id 要生成的镜像名:版本号

  2、将镜像打包成压缩文件

docker save -o 压缩文件名称 要压缩的镜像名:版本号

  3、加载压缩包形式的镜像文件

docker load -i 压缩文件名称

  注意:通过目录挂载的形式的文件,在通过容器制作镜像的过程中,将不会被打包到镜像中,直接在镜像内的文件则可以被打包到镜像内

十、dockerfile构建docker镜像文件

  • Dockerfile 是一个文本文件

  • 包含了一条条的指令

  • 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像

  • 对于开发人员:可以为开发团队提供一个完全一直的开发环境

  • 对于测试人员:可以直接那开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作

  • 对于运维人员:在部署时,可以实现应用的无缝移植

案例需求:自动以centos7镜像

  • 默认登录的路径为/usr

  • 可以使用vim

1、定义父镜像: FROM centos:7
2、定义作者信息:MAINTAINER Se7eN_HOU
3、执行安装vim命令:RUN yum install -y vim # 注意,-y 表示当执行程序需要选择是会自动选择y,如果没有该参数会一直停留在选择处
4、执行默认的工作目录:WORKDIR /usr
5、定义容器执行的命令:CMD /bin/bash

  执行dockerfile生成镜像

docker build -f dockerfile文件的路径 -t 设置新的镜像的名称和版本号 .  # 注意最后的点,代表生成的镜像路径
-f 表示dockerfile路径
-t 设备新镜像的名称和版本号
最后的. 表示生成镜像的路径,为当前路径

十一、docker的常用配置

  不同平台的配置方法大同小异,就不一一举例了,但是一下配置确实非常常用的,可自行百度解决。

  1、docker 配置SSH,可以远程访问docker

  2、docker 配置支持中文,默认docker是不支持中文,网上大部分是临时性的解决方案,《docker容器中添加中文字符的支持》中有永久解决办法

  3、《配置docker中的服务跟随docker启动而自动启动

docker使用详解的更多相关文章

  1. Docker命令详解

    Docker命令详解   最近学习Docker,将docker所有命令实验了一番,特整理如下: # docker --help Usage: docker [OPTIONS] COMMAND [arg ...

  2. Docker系列10—容器编排工具Docker Compose详解

    本文收录在容器技术学习系列文章总目录 1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置 ...

  3. docker pull 详解

    docker pull 用于从镜像仓库中拉取或更新指定镜像,用法如:docker pull centos ,默认是从 Docker Hub 中拉取镜像 在拉取镜像前,我们可以先配置 docker 加速 ...

  4. docker 操作命令详解

    docker attach命令-登录一个已经在执行的容器 docker build 命令-建立一个新的image docker commit命令-提交一个新的image docker cp命令-将容器 ...

  5. docker入门级详解

    Docker 1 docker安装 yum install docker [root@topcheer ~]# systemctl start docker [root@topcheer ~]# mk ...

  6. Docker网络详解——原理篇

    安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络). none .host 网络模式 简介 Host 容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP ...

  7. docker 容器详解

    Docker 是一个开源的应用容器引擎,基于Go语言 并遵Apache2.0协议开源,也是一种虚拟化技术.让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux ...

  8. Docker入门详解——安装docker并利用docker搭建lnmp

    首先我们需先安装docker环境,这个比较简单,以centos7为例 docker在centos7上安装需要系统内核版本3.10+,可以通过uname -r查看内核版本号,如果版本不符请自行查阅资料更 ...

  9. Docker网络详解

         当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机.它会在挂载到它的网口之间进行转发.      ...

  10. Docker Dockerfile详解

    http://blog.csdn.net/wsscy2004/article/details/25878223 如何使用 Dockerfile用来创建一个自定义的image,包含了用户指定的软件依赖等 ...

随机推荐

  1. springboot使用策略模式实现一个基本的促销

    策略模式 定义了算法族,分别封装起来,让它们之间可以互相替换, 此模式让算法的变化独立于使用算法的客户 源码:https://github.com/youxiu326/sb_promotion.git ...

  2. 学习Kvm(三)

    虚拟化(将一个物理硬件平台虚拟成多个) vmware(模拟出一堆硬件设备,每一个硬件设备都是独立平台) 虚拟化要解决的问题(硬件之上的OS,有用户空间.内核空间:vmware虚拟机所模拟出的多个硬件平 ...

  3. vsftd及虚拟用户

    临时需要搭建一个ftp,突然忘记怎么搞了,重新整一下,以后备用 vsftd及虚拟用户 1.安装vsftpd yum install vsftpd 2.添加用户(用于虚拟用户映射) adduser se ...

  4. (HTML基础系列1)网页基本结构

    元素名 描述 header 标记头部区域内容 footer 标记脚部区域内容 section Web页面中独立的一块区域 article 独立的文章内容 aside 相关文章应用或应用(常用于侧边栏) ...

  5. css文字颜色渐变的3种实现

    在web前端开发过程中,UI设计师经常会设计一些带渐变文字的设计图,在以前我们只能用png的图片来代替文字,今天可以实现使用纯CSS实现渐变文字了.下面就介绍3中实现方式供大家参考! 基础样式: .g ...

  6. java中递归的用法和例子

    递归   直接或者间接调用自己, public class Test{    public static void main(String[] args){        int i = 5;    ...

  7. android.content.res.Resources$NotFoundException: String resource ID #0x0报错

    报错:android.content.res.Resources$NotFoundException: String resource ID #0x0 原因:在setText()中使用了int型的参数 ...

  8. Jar 包下载以及 maven jar 包配置

    学习内容: jar包下载是我们必须掌握的一个内容,不管是使用Maven项目还是其他项目,一般都需要引入外部的 jar 包 jar包下载 下载地址(打不开网址的直接百度搜索 maven reposito ...

  9. 【零碎小bug系列】windows下的回车和换行符,cmd(telnet)上输出不左对齐

    cmd(telnet)上输出不左对齐,而是有莫名其妙的空格 目录 cmd(telnet)上输出不左对齐,而是有莫名其妙的空格 背景 解决 细究 背景 在cmd上使用telnet连接本地端口的服务器时, ...

  10. Wireshark捕获网易云音乐音频文件地址

    打开Wireshark,开始捕获. 打开网易云音乐,然后播放一首歌. Wireshark停时捕获,然后在不活的文件中搜索字符串"mp3".可以发现有如下信息: 将其中的内容:&qu ...