docker使用详解
一、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 宿主机目录(文件):容器内目录(文件)...
注意事项
- 目录必须是绝对路径
- 如果目录不存在,会自动创建
- 可以挂在多个数据卷
举例:通过多个-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使用详解的更多相关文章
- Docker命令详解
Docker命令详解 最近学习Docker,将docker所有命令实验了一番,特整理如下: # docker --help Usage: docker [OPTIONS] COMMAND [arg ...
- Docker系列10—容器编排工具Docker Compose详解
本文收录在容器技术学习系列文章总目录 1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置 ...
- docker pull 详解
docker pull 用于从镜像仓库中拉取或更新指定镜像,用法如:docker pull centos ,默认是从 Docker Hub 中拉取镜像 在拉取镜像前,我们可以先配置 docker 加速 ...
- docker 操作命令详解
docker attach命令-登录一个已经在执行的容器 docker build 命令-建立一个新的image docker commit命令-提交一个新的image docker cp命令-将容器 ...
- docker入门级详解
Docker 1 docker安装 yum install docker [root@topcheer ~]# systemctl start docker [root@topcheer ~]# mk ...
- Docker网络详解——原理篇
安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络). none .host 网络模式 简介 Host 容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP ...
- docker 容器详解
Docker 是一个开源的应用容器引擎,基于Go语言 并遵Apache2.0协议开源,也是一种虚拟化技术.让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux ...
- Docker入门详解——安装docker并利用docker搭建lnmp
首先我们需先安装docker环境,这个比较简单,以centos7为例 docker在centos7上安装需要系统内核版本3.10+,可以通过uname -r查看内核版本号,如果版本不符请自行查阅资料更 ...
- Docker网络详解
当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机.它会在挂载到它的网口之间进行转发. ...
- Docker Dockerfile详解
http://blog.csdn.net/wsscy2004/article/details/25878223 如何使用 Dockerfile用来创建一个自定义的image,包含了用户指定的软件依赖等 ...
随机推荐
- mysql的cpu飙升原因及处理
Mysql 批量杀死进程 正常情况下kill id,即可,但是有时候某一异常连接特别多的时候如此操作会让人抓狂,下面记录下小方法: use information_schema; select co ...
- 学习Git(二)
常用命令 git add 添加 git status 查看状态 git status -s 状态概览 git diff 对比 git diff --staged 对比暂存区 git commit 提交 ...
- 数据分析之Pandas操作
Pandas pandas需要导入 import pandas as pd from pandas import Series,DataFrame import numpy as np 1 Serie ...
- 自定义XML文件模板步骤
- Azure DevOps (八) 通过流水线编译Docker镜像
上一篇文章我们完成了最简单的传统部署:上传应用到服务器上使用守护进程进行应用的部署. 本篇文章我们开始研究容器化和流水线的协作. 在开始操作之前,我们首先需要准备一下我们的dockerfile,这里我 ...
- ctfhub web信息泄露备份文件下载(vim缓存 Ds-Store)
Vim缓存 进入环境由于不懂得vim是什么借鉴大佬的博客 网页提示flag在index.php中我们按着这个思路去找 将文件保存下来因为是swp文件我们用kail进行打开 使用vim -r index ...
- 用Node处理文件上传
前言 在Web开发中,文件上传是一个非常常见.非常重要的功能.本文将介绍如何用Node处理上传的文件. 需求分析 由于现在前后端分离很流行,那么本文也直接采用前后端分离的做法.前端界面如下: 用户从浏 ...
- Javascript Symbol 隐匿的未来之星
ES6中基础类型增加到了7种,比上一个版本多了一个Symbol,貌似出现了很长时间,但却因没有使用场景,一直当作一个概念层来理解它,我想,用它的最好的方式,还是要主动的去深入了解它吧,所以我从基础部分 ...
- spark配置双master时一直处于standby的情况
一.情况描述 按照如下配置,使用zookeeper监听 SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspa ...
- mysql 合并查询结果
UNION 使用 UNION 关键字是,数据库系统会将所有的查询结果合并到一起,然后去除掉相同的记录: UNION ALL 使用 UNION ALL,不会去除掉系统的记录: