Docker学习笔记
当人们说“Docker”时,他们通常是指 Docker Engine,它是一个客户端 - 服务器应用程序,由 Docker守护进程、一个REST API指定与守护进程交互的接口、和一个命令行接口(CLI)与守护进程通信(通过封装REST API)。Docker Engine 从 CLI 中接受docker 命令,例如 docker run 、docker ps 来列出正在运行的容器、docker images 来列出镜像,等等。
docker 基本组成
docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
docker仓库(Registry):用来保存各种打包好的软件镜像;仓库分为公有仓库和私有仓库。(很类似maven)
docker镜像(Images):软件打包好的镜像;放在docker仓库中;
docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
docker 与操作系统比较
docker是一种轻量级的虚拟化方式
Docker常用命令
images命令
1 | docker images |
save命令
1 | mkdir -p /data |
inspect命令
- 通过 docker inspect 命令,我们可以获取镜像的详细信息,其中,包括创建者,各层的数字摘要等。
1 | docker inspect tomcat:9.0.20-jre8-alpine |
history命令
- 从前面的命令中,我们了解到,一个镜像是由多个层组成的,那么,我们要如何知道各个层的具体内容呢?
通过 docker history命令,可以列出各个层的创建信息,例如:查看 tomcat:9.0.20-jre8-alpine的各层信息
1 | docker history tomcat:9.0.20-jre8-alpine |
tag命令
- 标记本地镜像,将其归入某一仓库
1 | docker tag tomcat:9.0.20-jre8-alpine lagou/tomcat:9 |
rmi命令
常用参数
- -f, -force : 强制删除镜像,即便有容器引用该镜像;
- -no-prune : 不要删除未带标签的父镜像;
1 | docker rmi tomcat:9.0.20-jre8-alpine |
清理镜像
我们在使用 Docker 一段时间后,系统一般都会残存一些临时的、没有被使用的镜像文件,可以通过以下命令进行清理。执行完命令后,还是告诉我们释放了多少存储空间!
1 | docker image prune |
Docker容器(container)
容器是镜像的运行时实例
新建并启动容器
1 | docker run [OPTIONS] IMAGE [COMMAND] [ARG...] |
1 | docker run -it --rm -p 8080:8080 tomcat:9.0.20-jre8-alpine |
docker run命令常用参数比较多,这里仅仅列出开发岗常用参数,请小伙伴们自行查找资料获得更多参数信息
-d, –detach=false: 后台运行容器,并返回容器ID
-i, –interactive=false: 以交互模式运行容器,通常与 -t 同时使用
-P, –publish-all=false: 随机端口映射,容器内部端口随机映射到主机的端口。不推荐各位小伙伴使用该参数
-p, –publish=[]: 指定端口映射,格式为:主机(宿主)端口容器端口,推荐各位小伙伴们使用**
-t, –tty=false: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
–name=”nginx-lb”: 为容器指定一个名称
-h , –hostname=”laosiji”: 指定容器的hostname
-e , –env=[]: 设置环境变量,容器中可以使用该环境变量
–net=”bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型
–link=[]: 添加链接到另一个容器;不推荐各位小伙伴使用该参数
-v, –volume : 绑定一个卷
–privileged=false: 指定容器是否为特权容器,特权容器拥有所有的capabilities
–restart=no:指定容器停止后的重启策略
no:容器退出时不重启
on-failure:容器故障退出(返回值非零)时重启
always:容器退出时总是重启,推荐各位小伙伴们使用
–rm=false: 指定容器停止后自动删除容器,不能以docker run -d启动的容器
容器日志
1 | docker logs [OPTIONS] CONTAINER |
-f : 跟踪日志输出
–tail :仅列出最新N条容器日志
删除容器
docker rm :删除一个或多个容器。docker rm命令只能删除处于终止或退出状态的容器,并不能删除还处于运行状态容器
-f :通过 SIGKILL 信号强制删除一个运行中的容器。
-l :移除容器间的网络连接,而非容器本身。
-v :删除与容器关联的卷。
列出容器
docker ps [OPTIONS]
1 | docker run -itd --name tomcat9 -p 8080:8080 tomcat:9.0.20-jre8-alpine |
启动、重启、终止容器
docker start :启动一个或多个已经被停止的容器
docker stop :停止一个运行中的容器
docker restart :重启容器
进入容器
1 | docker exec [OPTIONS] CONTAINER COMMAND [ARG...] |
1 | 有bash命令的linux系统:例如centos |
查看容器
docker inspect : 获取容器/镜像的元数据。
语法
1 | docker inspect [OPTIONS] NAME|ID [NAME|ID...] |
1 | docker run -it --name tomcat9 -p 8081:8080 tomcat:9.0.20-jre8-alpine |
常用参数
-f :指定返回值的模板文件。
-s :显示总的文件大小。
–type :为指定类型返回JSON。