Docker是一种类似虚拟机的容器,但是更轻量级,更方便。
他可以创建一个独立的环境,减少环境配置的工作。
Docker Image
docker image映像文件包含所有app运行需要的文件,包括一个裁剪过的OS内核,第三方库,app的文件,环境变量等。container是执行image的环境,container是轻量级的虚拟机。
- 构建docker image
1 | docker build -t <TAG> |
build命令,相当于在一个全新的linux上,进行环境初始化工作,让自己的应用代码可以在一个非常干净的环境下运行。
- Docker File
build命令是根据Dockerfile进行构建。Dockerfile相当于是安装脚本,由若干命令组成,其中包括:
FROM
: 从哪个基础image开始构建
WORKDIR
: 设置工作目录
COPY
: 拷贝文件到image中
ENV
:设置环境变量,在build,和运行期间都有效
RUN
:build 期间执行的命令
VOLUME
:建立一个外部的逻辑目录,mount到container中,避免数据被删除
EXPOSE
:把内部端口映射到container的外部
CMD
:image在运行时执行的命令,可以被docker run
命令行覆盖。
ENTRYPOINT
:也是image运行时的命令,不会被覆盖,必须执行这个,CMD作为这个命令的参数。
- 查看image
1 | docker image ls |
- 删除docker image
docker image prune
:删除无用的image
docker image rm <TAG>
:删除指定的image
Docker Container
container是一种进程,通过linux内核的对container的特殊支持,实现环境隔离。一个image可以被多个container执行,container有自己的file system。
-
docker run
创建一个container-
-d :后台运行
-
–name:制定一个名字,方便其他命令行操作
-
-p:端口映射
-
-v :相当于指定外置的硬盘
-
-
docker ps
查看当前运行中的container -
docker logs
查看某个container的log- -f:持续更新log
- -t:打上timestamp
-
docker exec -it <container name> <command>
可以从对运行中的container执行命令,也能通过sh登录上去
-
docker container prune
删除没用的container -
docker [start|stop] <container name>
启动和停止某个container -
docker volumn create <name>
, 建立volume,相当于创建一块额外的硬盘 -
docker cp <container ID>:/path <local path>
docker和本地进行文件拷贝
Docker Compose
docker-compose就是把多个container一起执行起来,并且能够相互配合。通过docker-compose.yml文件配置相关服务。主要命令有:
-
docker-compose build
build image -
docker-compose up
启动服务 -
docker-compose down
关闭服务 -
docker-compose logs
这样其实相当于在开发时,有了一个集群一样方便。因为每个服务都是独立的,互不干扰,又能相互通信。配置文件的命令基本和Dockerfile的含义一致,如下所示:
1 | version: '3' |