安装docker引擎
yum install -y docker
启动docker
systemctl start docker
设置docker自启动
systemctl enable docker
测试docker是否安装成功
docker run hello-world
镜像下载:
docker pull 镜像名字:[tag] 如果不指定tag,则下载docker hub 公共注册服务器中仓库的最新版本
查看镜像:
列出本地主机上已有的镜像
docker images
镜像搜索:
docker search [镜像名字]
删除镜像
docker rmi 源名字
docker rmi image id
创建容器
docker create -it 镜像名字
列出容器:
docker ps
新建并启动容器:
docker run 镜像名字 /bin/echo 'hello world'
下面命令启动一个bash端,运行用户交互
docker -run -t -i 镜像名称 /bin/bash
守护态运行:
docker run -d 镜像名字
终止容器:
docker stop 容器id
进入容器
在使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息。某些时候如果需要进入容器进行操作,有多种方法,包括使用docker attach命令、docker exec命令,以及nsenter工具等。
attach命令
语法格式:
docker attach 容器id
exec命令
Docker自1.3版本起,提供了一个更加方便的工具exec,可以直接在容器内运行命令。例如进入到刚创建的容器中,并启动一个bash:
docker exec -it 容器id /bin/bash
查看日志:
docker logs容器id
查看容器里面的进程
docker top 容器id
从容器拷贝到主机上
docker cp 容器id:容器内路径 目录路径
数据卷概念:
数据卷是宿主机中的一个目录或文件
当容器目录和数据卷目录绑定后,对方修改会立即同步
一个数据卷可以同时被多个容器同时挂载
一个容器也可以被挂载多个数据卷
一句话: 卷技术就是为了实现数据的持久化和同步操作,容器间也是数据共享。
命令
docker run -v 宿主机目录(文件):容器内目录(文件)
注意事项:
目录必须是绝对路径
如果目录中不存在则会自动创建
可以挂载多个数据卷
Volume基本使用
参数:
create # 创建数据卷
inspect #查看数据卷元数据
ls #查看数据卷列表
prune #删除所有未使用的卷
rm #删除数据卷
创建一个自定义容器
docker volume create dmeo
查看所有容器卷
docker volume ls
查看指定容器卷详情信息
docker volume inspect demo
删除数据卷
docker volume rm demo
dockerfile
dockerfile是一个文本格式的配置文件,用户可以使用其快速创建自定义的镜像
基本结构
Dockerfile由一行行命令语句组成,并且支持以#开头的注释行。一般而言,Dockerfile分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。
Dockerfile文件格式
bash
# 1、第一行必须指定 基础镜像信息
FROM java:8
# 2、维护者信息
MAINTAINER 123
# 3、镜像操作指令
RUN echo "wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.55/bin/apache-tomcat-9.0.55.tar.gz" run tar -zxvf apache-tomcat-9.0.55.tar.gz -C /usr/local
# 4、容器启动执行指令
CMD /usr/local/tomcat/bin/catalina.sh
dockerfile四部分说明:
一开始必须要指明所基于的镜像名称,关键字是from
接下俩是维护者信息关键字是maintainer,非必须
后面是镜像操作指令,如run,每执行一条run命令,镜像添加新的一层
最后是cmd指令,来指明运行容器时的操作命令
from 这个镜像的妈妈是谁 指定基础镜像
maintainer 谁负责养他 指定维护者信息
run 想让他干什莫 再命令前面加上run即可
add 给他点创业资金 copy文件会自动解压
workdir 设置当前工作目录
volume 给他一个存放行李的地方 设置卷,挂载主机目录
expose 他要打开
cmd 指定容器启动后要干的事情
run指令创建的中间镜像会被缓存,并会再下次构建中使用。如果不想使用这些缓存镜像,可以再构建时指定--no-cache参数,如:docker build --no-cache
add 将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
copy 功能类型add,但是是不会自动解压文件,也不能访问网络资源
cmd和entrypoint
cmd:设置容器启动后默认执行的命令和参数
entrypoint设置容器启动时运行的命令
区别:cmd指定这个容器启动的时候要运行的命令,可被替换
entrypoint指定这个容器启动的时候要运行的命令,可以追加命令
每启动一个docker容器,docker就会给容器分配一个ip,只要安装docker就会有一个dcoker0网卡
evth-pair技术
evth-pair 就是一对的虚拟设备接口,它们都是成对出现,一段彼此连接。 正是因为这个特性,evth-parit桥梁。 连接各种各样网络设备。
docker 使用linux的桥接, 宿主机中时一个docker容器的网桥。 docker0 docker中所有网络接口都是虚拟的。 虚拟转发效率高只要容器删除 对应的网桥就没有了。