一、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. pandas - drop()函数

    函数形式:DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors ...

  2. 『现学现忘』Docker基础 — 37、ONBUILD指令介绍

    目录 1.ONBUILD指令说明 2.演示ONBUILD指令的使用 3.补充:crul命令解释 1.ONBUILD指令说明 ONBUILD是一个特殊的指令,它后面跟的是其它指令,比如 RUN, COP ...

  3. 转Gerber和拼版

    1 Gerber 这个网上有现成的教程:(不要写网上能找到的资料-敏捷开发) AD 导出Gerber :https://jingyan.baidu.com/article/3c48dd3494181c ...

  4. task0002(四)- 练习:数据处理、轮播及交互

    转载自我的个人博客 欢迎大家批评指正 包括5部分: 小练习1-处理用户输入 小练习2-日期对象的使用 小练习3:轮播图 小练习4:输入提示框 小练习5:界面拖拽交互 源码地址task0002 在线De ...

  5. Android Studio安装问题

    安装问题可以参考:https://blog.csdn.net/y74364/article/details/96121530 但是gradle安装缓慢,需要FQ.有加速器FQ的可以开加速器安装,没有的 ...

  6. 【Android开发】APP桌面角标问题

    Demo:https://github.com/baitutang1221/BadgeNumberManager 参考:https://juejin.im/post/59f2e59751882578c ...

  7. linux压缩及解压命令

    .zip文件:压缩:zip,解压:unzip 如果要解压到指定目录,可以加上 -d 选项 .gz文件:压缩:gzip,解压:gunzip 压缩.解压缩后原文件丢失,可以加上 -c 选项利用 linux ...

  8. python中字符串、列表访问

    一.列表 列表由一系列按特定顺序排列的多个元素或空元素组成,包含字母表中所有字母.数字0~9或所有家庭成员姓名的列表:列表中各元素间可以没有任何关系:实际使用过程中,通常给列表指定一个表示复数的名称, ...

  9. Kubernetes部署单元-Pod

    在 k8s 搞出 pod 概念的时候,其实 docker 官方就已经推出自己的容器编排应用 swarm.这一套服务可以帮助在不同节点上的容器,进行统一的管理,主要针对容器的启停,运维,还有部署,注意我 ...

  10. VScode链接服务器并配置公钥-SSH Keys

    VScode链接服务器并配置公钥-SSH Keys 一直在用Xshell做SSH连接服务器与虚拟机,但是中文乱码的问题一直找不到解决方案,干脆使用编辑器自带的插件,集成之后用起来也方便 1.概述 做法 ...