Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker基础命令
docker images 查看当前下载镜像列表
1 | [root@VM_175_142_centos ~]# docker images |
docker search {镜像名} (镜像仓库中的镜像)
docker pull {镜像名}:{版本号} (拉取指定版本镜像,如果不指定版本, 将默认使用 latest 镜像)
docker run -t -i {镜像名} (启动镜像,如果主机不存在,会自动下载镜像)
1 | -d, --detach=false, 设置容器上前台运行还是后台运行,默认为false后台运行 |
docker ps #查看正在运行的容器
docker ps -l #查看最后退出的容器的ID
docker ps -a #查看所有的容器,包括退出的。
docker logs {容器ID|容器名称} #查询某个容器的所有操作记录。
docker logs -f {容器ID|容器名称} #实时查看容易的操作记录。
1 | docker rm$(docker ps -a -q) #删除所有容器 |
docker stop {容器ID|容器名} #停止某个容器
docker start {容器ID|容器名} #启动某个容器
docker kill {容器ID|容器名} #杀掉某个容器
docker export {容器ID|容器名} -o /root/文件名.tar(或者docker export {容器ID|容器名} > /root/文件名.tar) #导出
docker import {容器文件} {镜像名}:{tag} #导入后生成的是镜像不是容器,docker load也可以导入,其中两者人区别如下:
1 | docker load 保留了容器的完整记录 |
docker container inspect {容器ID|容器名} #返回容器的ID、创建时间、路径、状态、镜像等信息
docker container stats {容器ID|容器名} #查看容器的CPU、内存、存储、网络等资源的使用情况可以使用
docker cp {宿主机目录} {容器ID}:{容器目录} #将宿主机内的指定目录文件传输至容器内部的指定目录
docker cp {容器ID}:{容器目录} {宿主机目录} #将容器内部的指定目录文件复制到宿主机指定目录
docker commit {容器ID} {镜像名}:{tag} #将容器重新打包成镜像
1
2
3
4
5
6
7-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
docker push {镜像名|镜像ID} #推送在镜像仓库
Dockerfile文件参数
FROM #指定基础镜像,必须为第一个命令
MAINTAINER #作者信息
RUN #构建镜像时执行的命令
ADD #复制文件到容器中
COPY #复制文本到容器中COPY <源路径>… <目标路径>
1
ADD和COPY的差别:ADD命令tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,COPY不会自动解压文件,也不能访问网络资源
CMD #容器启动时执行的命令。shell 格式: CMD <命令> exec 格式: CMD [“可执行文件”, “参数1”, “参数2”…]
ENTRYPOINT #配置容器
LABEL #为镜像添加元数据
ENV #设置环境变量
EXPOSE #指定外界交互的容器端口EXPOSE <端口1> [<端口2>…]
VOLUME #指定持久化目录VOLUME [“<路径1>”, “<路径2>”…]
WORKDIR #工作目录,自动cd到执行目录
示例:
1
2
3
4
5
6
7
8
9
10
11
12 # FROM代表此次构建的镜像的基础镜像基础,可在镜像名后带版本号,不带版本号默认latest
FROM python
# COPY是拷贝宿主机文件到镜像中
COPY ./spider /work
# RUN则是在镜像中执行命令,有时候可能需要安装依赖环境,也可以在run中执行
RUN ls /work
# 切换工作目录,相当于cd work
WORKDIR /work
#EXPOSE 外界交互的端口
EXPOSE 8080
# CMD是镜像启动后默认执行,CMD加中括号等同于exec执行命令,不加中括号等同于 sh -c 执行命令
CMD ["python","spider.py"]
docker build ocnfig #用于检查dockerfile文件是否有误
docker build . -t spider:v1.0 #构建镜像,构建好之后可以使用docker images命令进行查询
Docker-compose.yml文件配置
build:定义镜像生成,可以指定Dockerfile构建,在up 启动之时执行构建任务
image:指定镜像启动容器,如果镜像不存在会自动拉去最新镜像
environment:环境变量和配置
ports:端口映射,将容器端口映射在宿主机
depends_on:指定依赖关系。适用于需要按顺序启动的服务,会先启动所依赖的镜像
volumes:挂载宿主机目录或者数据容器卷
volumes_from: 从容器挂载
context:指定Dockerfile文件或者是远程网络文件
args:构建参数,这些参数只能在构建过程中访问
container_name:指定容器名称
links: 链接其他容器
command: 启动执行命令
示例:
1 | version: "3" |
执行docker-compose ps:
1 | [root@VM_175_142_centos ~]# docker-compose ps |
容器名:{目录名}{服务名}{容器序号} 从1开始
docker-compose up -d #构建并启动容器,首次运行会执行docker-compose build
1 | -d:后台进程 |
docker-compose exec {服务名称} bash #登录到某个容器中
docker-compose down #删除所有容器,镜像
docker-compose ps #显示所有容器
docker-compose restart {服务名称} #重新启动容器
docker-compose build {服务名称} #构建镜像 。
docker-compose build –no-cache {服务名称} #不带缓存的构建。
docker-compose logs {服务名称} #查看容器的日志
docker-compose logs -f {服务名称} #查看容器的实时日志
docker-compose rm {服务名称} #删除compose服务
docker-compose kill {服务名称} #kill compose服务
docker-compose stop {服务名称} #重启compose服务
docker-compose start {服务名称} #启动容器
docker-compose config -q #验证yml文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息
docker-compose run {服务名} {cmd} #在某个服务上运行shell命令