docker 是一个开源的项目,把项目打包一个独立的环境中运行的轻量级环境,可以跨平台运行
解决了运行环境不一致带来的问题,并可以快速扩展
docker 核心:镜像、仓库和容器,从仓库拉取镜像到本地,运行镜像形成容器
- docker linux 安装
1.获取安装命令
$ sudo wget -qO- https://get.docker .com/ |sh
wget :下载命令
-q : 减少wget的输出
O-: 设置输出为标准输出,直接输出,而不是输出到文件
| sh :把shell 脚本送给shell去执行
或者通过yum install -y docker 来安装
2. 允许非root用户来运行docker
$ sudo usermod -aG docker {yourusername}
出现的问题:如果输入命令时出现下面内容,说明docker服务没启动,
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
解决方案:service docker start 启动docker服务 - docker结构
-
docker镜像 image:相当于docker的文件存储系统
-
docker容器 container :相当于一个进程,镜像的每一层都是只读的,只有容器是可写的,如果要修改镜像里面的文件,会把镜像的文件拷贝到容器里进行修改,当应用需要读取一个文件的时候,会先从顶层进行查找,如果没有才会去查找下一层。这样就可以保证一个镜像可以生成多个容器,并且容器之间没有任何干扰
-
docker仓库 : 用来保存镜像,,除了远程拉取镜像,docker还支持建立本地镜像仓库
- 常用远程仓库:
1.hub.docker.com
2.c.163.com - docker架构
- docker.daemon :负责做各种docker操作,比如下载docker镜像,运行容器等,通过客户端命令来与docker.daemon进行交互,来进行docker操作。
- Registry :互联网镜像仓库
客户端和守护进程进行交互,把命令送给守护进程,获取镜像,运行容器,并且和远端的镜像仓库进行交互
-
常用命令
拉取镜像
docker pull [options] NAME[:TAG]
查看镜像
docker images [optings] [REPOSITORY[:TAG]]
运行容器
docker run [options] IMAGE[:TAG] [COMMAND] [ARG]docker run -d [name] 后台运行
docker exec -it 【容器id或name】 bash
-
使用镜像加速
使用国内的镜像仓库:
新建并 配置/etc/docker/daemon.json
在阿里云上申请一个私有的加速镜像地址,具体参考
https://www.cnblogs.com/atuotuo/p/6264800.html -
docker 网络:
docker的网络也是隔离的,
- 网络类型
bridge (有独立的网络networknameSpace )
host (使用宿主机的ip和端口,容器将不会去配置虚拟网卡等)
none(无网络,容器将不会与外界进行通讯) - 端口映射 :把容器的端口映射到宿主机,当想访问容器的端口时,可以访问宿主机的端口。
docker run -d -p 8080:80 nginx 把宿主机的8080 端口 映射到nginx 容器的80端口
- 制作自己的镜像
-
Dockerfile:
from tomcat //首先写的是这个自定义镜像继承的基础镜像的名字
MAINTAINER ZH //镜像的所有者可不写
COPY jpress.war /usr/local/tomcat/webapps //拷贝外部应用到容器的路径下 -
docker build:
docker build -t [自定义容器的tag] [dockerfile 的目录]
总结:
docker的思想 :
集装箱,标准化,隔离
核心 : 镜像 容器,仓库
命令: pull,build,run ,stop,restart ,exec。。