帮助命令
Docker run 启动的东西
Docker version 显示docker的版本信息
Docker info 显示docker的系统信息 包括镜像和容器的数量
Docker --help 帮助命令
镜像命令
docker images 查看本地所有镜像
-a #列出所有镜像 -q #只显示镜像的id
docker search 搜索
--filter=搜索的列=搜索的条件
dockers pull 下载镜像
docker pull 下载的东西:版本号
docker rmi 删除镜像
docker rmi -f 容器id #删除指定容器 docker rmi -f 容器id 容器id #删除多个容器docker rmi -f $(docker images -aq) # 删除全部容器
容器命令
docker pull centos 下载一个基本镜像
docker run[可选参数] image
--name = "name" 容器名字 tomcat01 tomcat02 用来区分命令-d 后台方式运行-it 使用交互方式运行 ,进入容器查看内容-P 随机指定端口-p 指定容器端口 -p8080:8080
docker run 容器名称 /bin/bash
exit 从容器中退回到主机
dockers ps 查看容器
docker ps -a 查看正在运行的容器docker ps -n=?显示最近创建的容器
exit 直接退出容器并停止
docker rm 容器id
docker rm -f $(docker ps -aq) 删除所有容器
docker start 启动容器
docker restart 重启容器
docker stop 停止当前运行的容器
docker kill 强制停止当前容器
常用命令
后台启动
docker run -d centos
docker logs -ft 容器id 查看全部日志
docker logs -ft --tail 查看的日志数量 容器id 查看指定条数的日志
docker inspect 查看容器信息
docker exec -it 容器的id 进入正在运行的容器
docker attach 容器的id 进入正在运行的容器
exec 进入容器会开启一个新的终端可以在里面操作(常用) attach 进入容器正在执行的终端 不用启动新的进程
部署Nginx
docker search nginx 查询nginx
docker pull nginx 从docker上拉取nginx
docker run -d --name 设置的名字 -p设置的端口号:默认端口号 nginx
部署tomcat
#下载tomcat
docker pull tomcat
#启动运行
docker run -d -p 3355:8080 --name tomcat01 tomcat
#测试访问有没有问题
#进入容器
docker exec -it tomcat01 /bin/bash
容器数据卷
什么是容器数据卷
docker的理念回顾
将应用和环境打包为一个镜像!
数据?如果数据都在容器里卖弄,那么我们容器删除,数据就会丢失! 数据持久化
mysql,容器删了,删库跑路了!需求:MySql数据可以存储在本地!
容器之间可以一个数据共享的技术!Docker容器产生的数据,可以同步到本地!
这就是卷技术!目录挂载,将我们容器的内容,挂载到Linux上面!
总结一句话:容器的持久化和同步操作!容器间也可以使用数据卷
docker run -it -v 本机:容器
docker run -it -v /home/ceshi:/home centos /bin/bash
数据卷加了以后两边可以双向操作
具名和匿名挂载
#匿名挂载
-v 容器内路径
docker run -d -p --name nginx01 -v /etc/nginx nginx
#查看所有得 volume 的情况
docker volume
只写了容器内的路径,没有写容器外的路径!
#具名挂载
docker run -d -p --name nginx02 -v-nginx:/etc/nginx nginx
docker volume ls
所有的docker容器内的卷,没有指定目录的情况下都是在
/var/lib/docker/volumes/xxxx/_da
我们通过具名挂载可以方便的找到我们的一个卷,大多数都是使用具名挂载
#如何确定是具名挂载还是匿名挂载,还是指定路径挂载
-v 容器内路径 #匿名挂载
-v 卷名:容器内路径 #具名挂载
-v /宿主机路径:容器内路径 #指定路径挂载
拓展:
#通过 -v 容器内路径:ro rw 改变读写权限
ro readonly #只读
rw readwrite #可读可写
#一旦这个设置了容器权限 ,容器对我们挂载出来的内容就有了限定了!
docker run -d -p --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -p --name nginx02 -v juming-nginx:/etc/nginx:rw nginx
dockerFile
From XXX(基于什么镜像) WORKDIR(指定shell语句运行在那个路径下) COPY(将宿主机的文件拷贝到某路径下) RUN(运行shell语句,只要构建就会运行,如echo 321 >> 1.txt) CMD (指定镜像启动运行的脚本,只有容器真正运行的时候才会运行的脚本,执行后容器的生命周期即结束,且一般为阻塞式语句,如tail语句)
一般语句为:
FROM WORKDIR COPY-ADD RUN CMD-ENTRYPOINT ENTRYPOINT非json则以ENTRYPOT为准,如果ENTRYPOINT和CMD都是JSON则ENTRYPOINT+CMD拼接成shell
EXPOSE---暴露镜像的指定端口 VOLUME---指定映射文件 ENV---指定doker的环境变量,运行时一直生效 ARG---构建参数,运行时无效,可以构建时候临时修改变量 LABEL---指定元数据,便于找到docker ONBUILD---当前镜像构建的时候不会执行,基于当前镜像的镜像去构建的时候才会执行 STOPSIGNAL---指定容器使用什么信号,一般指定信号名 HEALTHCHECK---检查容易的健康状态 SHELL---指定linux为/bin/sh,windows为cmd