-
docker的介绍及部署
Docker是通过内核虚拟化技术(namespaces及cgroups cpu、内存、磁盘io等)来提供容器的资源隔离与安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,提高资源利用率。
docker的主要目标是"Build,Ship and Run any App,Angwhere",构建,运输,处处运行
构建:做一个docker镜像
运输:docker pull
运行:启动一个容器
每一个容器,他都有自己的文件系统rootfs.
kvm解决了硬件和操作系统之间的依赖
docker解决了软件和操作系统环境之间的依赖,能够让独立服务或应用程序在不同的环境中,得到相同的运行结果。
docker容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。
- docker 简介
什么是容器?
一种虚拟化的方案
操作系统级别的虚拟化
只能运行相同或相似内核的操作系统
依赖于Linux内核特性:Namespace和Cgroups(control Group)
- 什么是Docker?
将应用程序自动部署到容器
Go语言开源引擎 Github地址:https://github.com/docker/docker
- docker的目标:
提供简单轻量的建模方式
职责的逻辑分离
快速高效的开发生命周期
鼓励使用面向服务的架构
- docker的使用场景
1、 使用docker容器开发、测试、部署服务
2、 创建隔离的运行环境
3、 搭建测试环境
4、 构建多用户的平台即服务(pass)基础设施
5、 提供软件即服务(saas)应用程序
6、 高性能、超大规模单位宿主机部署
- docker 的安装
yum install -y docker
docker的镜像管理
- 搜索镜像
docker search
选镜像的建议:
1,优先考虑官方
2,starts数量多
- 获取镜像
docker pull(push)
镜像加速器:阿里云加速器,daocloud加速器,中科大加速器,Docker 中国官方镜像加速:https://registry.docker-cn.com
docker pull centos:6.8(没有指定版本,默认会下载最新版)
##配置docker镜像加速
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
##第三方docker镜像仓库,使用方法:
docker pull index.tenxcloud.com/tenxcloud/httpd:latest
- 查看镜像
docker images
- 删除镜像
docker rmi 例子:docker image rm centos:latest
- 导出镜像
docker save 例子:docker image save centos > docker-centos7.4.tar.gz
- 导入镜像
docker load 例子:docker image load -i docker-centos7.4.tar.gz
docker的容器管理
docker run -d -p 80:80 nginx
run(创建并运行一个容器)
-d 放在后台
-p 端口映射
-v 源地址(宿主机):目标地址(容器)
nginx docker镜像的名字
docker run -it --name centos6 centos:6.8 /bin/sh
-it 分配交互式的终端
--name 指定容器的名字
/bin/sh覆盖容器的初始命令
- 启动容器
docker run image_name
docker run -it image_name CMD
docker run ==== docker create + docker start
- 停止容器
docker stop CONTAINER_ID
- 杀死容器
docker kill container_name
- 查看容器列表
docker ps
docker ps –a
- 进入容器
*** docker exec (会分配一个新的终端tty)
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
docker exec -it 容器id或容器名字 /bin/bash
docker attach(使用同一个终端)
docker attach [OPTIONS] CONTAINER
nsenter(安装yum install -y util-linux)
- 删除容器
docker rm
- 批量删除容器
docker rm -f `docker ps -a -q`
总结:docker容器内的第一个进程必须一直处于前台运行的状态(必须夯住),否则这个容器,就会处于退出状态!
- docker容器的网络访问
指定映射(docker 会自动添加一条iptables规则来实现端口映射)
-p hostPort:containerPort
-p ip:hostPort:containerPort
-p ip::containerPort(随机端口)
-p hostPort:containerPort:udp
-p 81:80 –p 443:443
随机映射
docker run -P 80(随机端口)
- docker的数据卷管理
/usr/share/nginx/html
数据卷(文件或目录)
-v /data
-v src(宿主机的目录):dst(容器的目录)
数据卷容器
--volumes-from
- 手动将容器保存为镜像
docker commit 容器id或者容器的名字 新的镜像名字[:版本号可选]
1):基于容器制作镜像
docker run -it centos:6.8
######
yum install httpd
yum install openssh-server
/etc/init.d/sshd start
vi /init.sh
#!/bin/bash
/etc/init.d/httpd start
/usr/sbin/sshd -D
chmod +x /init.sh
2)将容器提交为镜像
docker commit centos:6 centos6-ssh-httpd:v1
3)测试镜像功能是否可用
-
docker-容器的基本操作
docker run IMAGE [COMMAND][ARG]
run 在新容器中执行命令
[root@jinqiu ~]# docker run 5182e96772bf echo 'hello'
hello
启动交互式容器
docker run -i -t IMAGE /bin/bash
-i --interactive=ture|false 默认是false
-t --tty=true|false 默认是false
[root@jinqiu ~]# docker run -it 5182e96772bf /bin/bash
[root@168b47a3f377 /]# ps -ef
查看容器:
docekr ps [-a] [-l]
-a 查看所有容器
-l 查看最新创建的容器
docker inspect 容器ID
查看容器的详细信息
自定义容器名字:
docker run --name=自定义名 -it IMAGE /bin/bash
[root@jinqiu ~]# docker run --name=centos7.1 -it 5182e96772bf /bin/bash
[root@c989d1727358 /]#
重新启动停止容器:
docker start [-i] 容器名
[root@jinqiu ~]# docker start -i centos7.1
[root@c989d1727358 /]#
删除停止的容器
docker rm 容器ID
docker rm -f `docker ps -a -q` 删除多个容器
docker守护式容器:
能够长期运行
没有交互式会话
适合运行应用程序和服务
以守护形式运行容器:
docker run -i -t IMAGE /bin/bash
Ctrl +P
Ctrl +Q
docker run --name=自定义名字 -it -d 容器ID
a63bd654266b4e3d028ee094f8288a0e9fcc0550c7fb520c63a4abf375dcee3b
进入容器
[root@jinqiu ~]# docker attach 1577ab130215
[root@1577ab130215 /]#
[root@jinqiu ~]# docker exec -it 容器ID /bin/bash
[root@3eab758d74af /]# ls
Docker 资源
- Docker 官方主页: https://www.docker.com
- Docker 官方博客: https://blog.docker.com/
- Docker 官方文档: https://docs.docker.com/
- Docker Store: https://store.docker.com
- Docker Cloud: https://cloud.docker.com
- Docker Hub: https://hub.docker.com
- Docker 的源代码仓库: https://github.com/moby/moby
- Docker 发布版本历史: https://docs.docker.com/release-notes/
- Docker 常见问题: https://docs.docker.com/engine/faq/
- Docker 远端应用 API: https://docs.docker.com/develop/sdk/
Docker 国内镜像
阿里云的加速器:https://help.aliyun.com/document_detail/60750.html
网易加速器:http://hub-mirror.c.163.com
官方中国加速器:https://registry.docker-cn.com
ustc 的镜像:https://docker.mirrors.ustc.edu.cn
daocloud:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)