【Docker】镜像 | 容器 | docker compose | 常用命令

参考教程:Docker——从入门到实践
官方文档;命令行详解

镜像 image

  • 拉取/下载镜像:docker pull 镜像名:docker pull ubuntu:18.04
  • 列出所有下载镜像:docker image ls
  • 删除镜像:docker image rm 镜像短ID/镜像名
    • 当有容器在使用该镜像时,镜像是无法删除的
  • 根据Dockerfile构建镜像:docker build -t nginx:v3 .
    • 指定最终镜像名称为 -t nginx:v3
    • .表示镜像构建上下文,Docker引擎会收到该路径下的所有文件,所以不需要的文件最好写在.dockerignore里,不然会一起打包发给Docker引擎
    • -f ../Dockerfile.php:指定Dockerfile的位置和名字,不写的话默认是将上下文目录下的名为 Dockerfile 的文件作为 Dockerfile。

容器 container 操作命令

镜像运行之后就成了容器

  • 显示所有状态的容器:docker ps -a
    • created|restarting|running|removing|paused|exited|dead
  • 显示正在运行的容器:docker ps
  • 基于一个镜像新建一个容器:docker run -it 镜像名 docker run -it python:3.8.5 bash
    • 放在镜像名后的是命令,-之后的是参数
    • -it bash表示希望有个交互式Shell:-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开。
    • --rm:这个参数是说容器退出后随之将其删除。
    • -h:设置hostname
    • -v:设置数据卷。通过-v参数可进行目录挂载。冒号前为宿主机目录,冒号后为镜像容器内挂载的路径,两者必须为绝对路径。如果没有指定宿主机的目录,则容器会在/var/lib/docker/volumes/随机配置一个目录。
    • --name:设置容器名
  • 启动已终止容器:docker container start 容器名
  • 守护态运行
    • -d:此时容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面,即容器启动后会进入后台
    • docker container logs [container ID or NAMES]:获取容器输出信息
  • 终止容器:docker container stop
    • 或者在终端运行时exit或者Ctrl+d
  • 进入容器操作:
    • docker attach 容器id:eixt时,容器会停止
    • docker exec -it 容器id bash:exit时,容器不会停止
  • 删除容器:docker container rm 容器id 只能删除终止状态的容器
    • -f:删除运行中的容器

docker compose

docker-compose.yml所在文件目录运行

  • docker-compose up:启动所有需要的容器,当之前已经启动过,再使用启动的也是启动之前已经用dockerfile创建好的image镜像,通过CTRL+C停止所有容器,停止命令。
    • 若运行该命令前,所有容器都已在运行中,该命令可以进入打印所有容器状态的模式中,且不会暂停再重启容器(猜想)
    • docker-compose up启动时,如果docker-compose.yml文件有变动,它会针对这个文件的变动形成不同的构建(猜想)。但如果对某一镜像的dockerfile进行改变,该命令使用的还是老的dockerfile构建的镜像。如果重新构建镜像,使用docker-compose build命令
    • 生产环境下使用-d在后台运行所有容器,不然都在前台启动并打印容器信息

docker-compose run
在指定服务上执行一个命令,比如用up命令开启一个项目后,需要迁移数据库的,就另开一个cmd用这个命令makemigrations。那我的理解就是,这时候并不会新开一个容器,而是相当于在原来已经启动的容器里操作。docker-compose run后跟的是docker-compose.yml文件中服务的名字,并不是容器名。docker exec后跟的是容器名

  • docker-compose run web python manage.py syncdbdjango示例里面的示范
  • docker-compose run --rm app python manage.py migrate
  • docker exec -it docker_nginx_uwsgi_web_1 /bin/bash start.sh:在指定容器里执行内容。比如这句就是为了django项目使用migrate命令用的

docker-compose down:停止所有容器并移除网络。这个操作和ctrl+c不太一样,这个操作会remove所有容器,但ctrl+c应该只是暂停容器,下次再up,开始的还是之前使用过的容器,里面的数据也不会消失。
docker-compose logs [SERVICE...]:查看容器输出

文件命令
  web:
    build: .
    ports:	#绑定容器的端口到主机的端口,(猜测:相当于暴露吗)
     - "5000:5000"
     # (host:container) 
    depends_on: 	#解决容器依赖、启动先后的问题
      - db
      - redis
    expose:	#暴露本容器的端口给项目中连接本容器的容器
      - "5000"
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值