目录
Docker基础概念
Docker 是一个开源的应用容器引擎,基于GO语言并遵从 Apache2.0 协议开源,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 包括三个基本概念:
镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。镜像是一种轻量级, 可执行的独立软件包, 用来打包软件运行环境和基于运行环境开发的软件, 它包含运行某个软件所需的所有内容, 包括代码, 运行式, 库, 环境变量和配置文件。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
Docker常用指令
docker version
查看docker版本
docker search
查找镜像
docker pull
拉取镜像
docker image
查看下载的镜像
docker run
运行镜像创建容器
docker stop
停止容器
docker rm
删除容器
docker rmi
删除镜像
docker tag
给镜像自定义tagname
docker ps
查看正在运行的容器
docker ps –a
查看全部容器
docker inspect 容器ID | grep IPAddress
查看容器IP
docker exec -it 容器ID /bin/bash
进入容器
docker exec -it 容器ID -u root /bin/bash
以root权限进入容器
docker save –o
保存镜像为.tar 文档
docker load –i
读取.tar文档为镜像
docker logs
查看容器日志
docker logs -f --tail=10 容器ID
查看最近10条日志并实时刷新
docker image inspect redis:latest | grep -i version
查看latest版本镜像的具体版本号
docker run启动容器指令
docker run --name wpsiis_mysql
–p 3306:3306
–e MYSQL_ROOT_PASSWORD=123456
–v /home/wpsiis/mysql:/var/lib/mysql
–d mysql:latest
–name 自定义容器名
-p 端口映射,如8080:80,从主机8080端口映射到容器内部80端口
-e 配置预设
-v 挂载,将主机地址挂载到容器内部,实现数据持久化
-d 守护进程(daemon),后台启动
dockerfile
在Docker中创建镜像最常用的方式,就是使用Dockerfile。Dockerfile是一个Docker镜像的描述文件,我们可以理解成火箭发射的A、B、C、D…的步骤。Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
dockerfile文件示例
程序打成jar包,写dockerfile文件使用java基础镜像制作成镜像。
FROM java:8
VOLUME /tmp
ADD ./wpsiis-web-0.0.1-SNAPSHOT.jar www.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/www.jar"]
docker build –t 镜像名:版本号 .
在当前路径下,使用dockerfile文件进行镜像构建
docker-compose
使用docker-compose.yml配置文件来启动容器。
docker-compose up (-d)
创建容器并(后台)启动
docker-compose down
停止并删除容器
docker-compose.yml文件示例
version : '2'
services:
mysql:
restart: always
image: mysql:latest
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: 123456
valumes:
- /home/wpsiis/mysql/data:/var/lib/mysql