与容器交互的方式
docker -i -t image /bin/bash
-i 始终打开标准的输入输出
-t 提供一个ttl的伪终端
查看容器
docker ps -a -i
-a 查看所有
-i 查看最新的容器,进程 comment 命令 creates 创建
不给ps指定参数,返回的是正在运行的容器
查看容器的详细信息
docker inspeck 容器id或者容器的names
给容器起名字:docker run --name=XXXX 。。。。。在启动容器的时候给它命名,就好了
启动一个已经停止的容器 docker start -i XXX -i表示以交互的方式启动
当然了也可以删除一个已经停止的容器 docker rm XXX 这个只能删除已经停止的容器
当然了也可以用docker stop命令的停止容器
命令结束后不会停止,上面的是交互式容器,会话一结束,就停止了】
方式一:运行docker后进入交互界面后的退出方式为ctrl+q或者ctrl+p退出,线程不会断 用docker attach id或者名字进入退出的容器 attach:依附,系上
方式二:docker run -d XXXX也是一种后台运行的方式
查看运行状态用 docker logs -ft --tail n 名字或者id -f实时,-t显示时间 --tail 10显示最新的10条,tail 0显示最新的
当然了也可以查看容器的进程:docker top 容器名
当然了虽说一个容器一个单元,但有时候一个容器中多个进程还是必须要的
exec:执行实行
docker exec -d -i -t 容器名 XXXX类似run
停止运行中的容器
docker stop 容器名:发送一个信号,等待停止 停止后返回容器的名字
docker kill 容器名 直接杀死
-P大写的p会映射容器的所有端口,小写的p能指定哪些端口
删除容器
查看镜像 docker images latest
删除容器 docker rm
删除镜像 docker rmi -f强制删除 --no-prune保留被打标签的父镜像
获取推送镜像
docker search XXXXX
-automated = false 自动化部署镜像
--no-trunc=false不断开
-s表示星级 一次最多25个
service docker restart /stystemctl docker 重新启动docker 的守护进程,就是重启docker
推送镜像:docker push XXX dockerhub上
docker的C/S模式:
remate api可以用来跟docker的守护进程通信
docker的客户端和docker的连接的方式是sock
分别提供了三种连接方式:unix:///var/run/docker.socket 默认
tcp://host:port
fd://socketfd
remote api的使用
nc -u /var/run/docker.sock nc是liunx命令 -U表示用的是socket
GET /info HTTP/1.1
查看docker的运行状况
status docker 或者 ps -ef |grep docker
停止service docker stop
service docker start启动docker
status docker 查看docker守护进程的状态
如果docker有多个配置项可以通过docker -d ddockerocker的配置项选择配置
docker的远程访问
第二台安装docker服务器
修改docker的守护进程启动选项,区别服务器
保证client api与server api版本一致
DOCKER_OPTS ="-H tcp://0.0.0.0:2375";在启动配置文件中配置,想远程访问dockerserver需要配置为tcp协议
docker的端口一般为2375
在docker客户端使用DOCKER_HOST export DOCKER_HOST=“tcp://xxxxx:2375”就可以像本机一样了
可以用export命令添加例:export DOCKER_HOST=“http://xxxxx:2375
如果把export DOCKER_HOST置空会自动的默认访问本机
docker 的-h指令是可以设置多个值的,一般加一个本地的
dockerfile构建镜像;
dockerfile的指令有两种 #Comment 注释
以大写的命令开头,后面跟着命令参数
from image 必须是开始的第一条非注释的 例:
#First Dockerfile
FROM ubuntu:14.04 //表示本地的镜像
MALNTALNER dormancypress “[email protected]” //malntalner:指定镜像的作者信息,包含镜像的所有者和联系信息
RUN apt-get update //当前镜像中的命令 run命令都会在当前的镜像上创建一个新的镜像执行命令 可以用&&合并为一条哦
RUN apt-get install -y nginx
EXPOSE 80 //指定运行该镜像的容器的使用端口 但是默认不会打开,需要在run -p的方式打开
CMD:容器运行时的执行命令,但是run命令如果写明了则会覆盖这个 ENTRYPOINT 与CMD非常相似,但是他不会被覆盖
docker用docker build -t="镜像名 " .//表示当前位置
AND与COPY非常相似,都是把dockerfile使用的目录复制到镜像中。单纯文件用copy,解压用add(自带解压功能)
本地默认html替换成本地html
VALUME:基于镜像创建的容器添加卷 提供共享数据并持久化的功能
WORKDIR 作用是在镜像创建容器时在容器内部创建工作目录用绝对路径,相对路径会一直传递下去
ENV用来设置环境变量
USER指明镜像以什么样的用户去运行 USER nginx 表明运行容器的用户以nginx的身份来运行 默认root用户
ONBUILD:指令为容器添加触发器 当一个镜像被当做其他镜像作为基础镜像时会被执行 当被构建时会插入触发器指令
dockerfile的构建过程
从基础镜像运行一个容器
执行一条指令,对容器做修改
执行类似docker commit的操作,提交一个新的镜像层
在基于刚提交的镜像运行一个新容器
执行dockerfile中的下一条指令,直至执行完毕
虽说会删除容器但是不会删除镜像,可以通过docker run it 对应你想找的id 运行相对应的指令
导致可以通过中间层镜像进行调试,查找错误。
构建缓存:不一定每次提交浪费时间,会将前面的镜像看成缓存让构建非常快
想跳过缓存,用docker build --no-cache或者在dockerfile文件中加入环境变量ENV REFRESH_DATA date
docker 提供了docker history imagename 来查看构建过程。