docker 常用命令以及基本工作流

docker 常用命令

  • 登录 docker 仓库

    docker login [OPTIONS] [SERVER]
    # OPTIONS
    #  -p, --password 密码  / --password-stdin 通过控制台输密码
    #  -u, --username 用户名
    
  • 构建镜像

    docker build -t[格式为 名称[:版本号]] [DockerFile 存放 PATH|URL|-]
    
  • 查看本地已构建的镜像

    docker images
    
  • 添加容器

    docker run [OPTIONS] 镜像名称
    

    例如

    docker run -p 8080:80 --name hello -d example
    
    docker run -p 8080:80 --name hello -dit foobar /bin/bash
    
    • 启动 example 这个容器使用 0:0:0:0:8080 端口(当前主机), 映射到内部端口 80,指定容器名称为 hello, -d 保持容器在后台持续运行
    • 如果容器启动失败(比如 docker ps 是空的, 而且 ps -a 查看容器并未在运行 比如 Exit(1) 的状态),改成 docker run -dit /bin/bash 然后 exec 进入后台查看
  • 查看进程

    docker ps [-a]
    

    可以在列表中看到容器的 [name] (如果 docker run 参数没有提供 name, 默认会随机一个)

  • 启动和停止容器 (真正的启动)

    docker start | stop [name]
    
  • 查看容器的日志

    docker logs [name] [-f 启用日志的监听模式]
    
  • 进入容器内部 调用 bash

    docker exec -it [name] /bin/sh
    
  • 卸载容器

    docker rm [name]
    
  • 卸载镜像

    docker rmi [name]
    

推送镜像的基本流程

  1. 创建镜像仓库 (docker hub / 私有 docker 仓库) 得到一个仓库名如 foo/bar

    这一步你可能需要 docker login 登录一下你所需要推送的仓库

  2. 这个时候如果运行 docker push (推送) 会报错(因为本地镜像还没有和这个远程仓库关联)

  3. 使用命令 docker tag [本地镜像[tag]名] [远程镜像仓库地址][:tag]

  4. docker push [远程镜像仓库地址][:tag]

  5. Done! (尝试删掉本地的远程镜像再 pull 看 CI/CD 是否正常)

使用 docker-compose.yml 进行自动化构建

启动

比如我们当前的目录是 docker-test => 最终构建的镜像名称docker-test-[serviceName] …

  1. 创建 docker-compose.yml, 下面是一个示例

    version: '3'
    
    # 服务名称
    # 下面的每一个 service 最终都会被转换为镜像
    # 比如当前目录是 foo , 某个 service 名是 bar
    # 那么最终 docker-compose 会自动追加横线 构建一个 foo-bar 的镜像
    services:
      web:
        # 构建配置
        build:
          # 上下文路径
          context: .
          # dockerfile
          dockerfile: Dockerfile
        # 容器名称
        container_name: container_web
        # 配置端口 "宿主机端口:容器暴露端口"
        ports:
          - "8080:80"
        # 配置命令
        command:
          # ...
    
      nginx:
        # 构建镜像来源
        image: nginx:1.21.3
        container_name: nginx
        environment:
          # 时区
          TZ: Asia/Shanghai
        ports:
          - "80:80"
          - "443:443"
        # 容器映射 (来源)->(容器)
        volumes:
          # 证书映射
          - /docker/nginx/cert:/etc/nginx/cert
          # 配置文件映射
          - /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
          # 页面目录
          - /docker/nginx/html:/usr/share/nginx/html
          # 日志目录
          - /docker/nginx/log:/var/log/nginx
        command: "nginx -c /etc/nginx/nginx.conf"
    
      mongo:
        image: mongo:3.6.1
        container_name: db
        volumes:
          - mongodb:/data/db
          - mongodb_config:/data/db
        ports:
          - "27017:20717"
        command: mongod
    
    # 顶层的 volumes 用于容器间共享的存储 冒号后可以不配置
    volumes:
      mongodb:
      mongodb_config:
    
  2. 运行 docker-compose up 自动化构建镜像和容器

    # 默认寻找 docker-compose.yml 也可以 -f 指定名称
    # 加 -d 在后台运行(不然会占用控制台)
   docker-compose up [-f docker-compose.yml] -d

Additions:
如果已经将这个镜像上传仓库了
那么就可以在 docker-compose.yml 的原服务上加入 image 来源
例如 image: mirrors.foo.com/your_name/your_proj:1.0.0
这样就可以直接执行 up 命令就一并完成了 \
1.远程仓库拉取 2.构建镜像服务 3.启动容器 三大操作

停止

  1. 运行 down 命令 会一并结束进程和删除相应的容器
   docker-compose down [--rmi ]

其他说明

  docker-compose stop [serviceName]

  # 停止运行的service(可选)serviceName:表示停止某一个service

  docker-compose rm -f [serviceName]

  # 删除已停止的所有service (可选)serviceName:表示删除已停止某一个service(可以用docker-compose up重新构建service)
  # -f 强制删除

  docker-compose down -v
  #(相当于 stop + rm ):停止并移除整个project的所有services
  # -v :删除挂载卷和volume的链接

  docker-compose restart [serviceName]
  # 重启服务

  docker-compose config
  # 验证和查看compose文件

  docker-compose images
  # 列出所用的镜像

  docker-cpmpose scale
  # 设置服务个数 Eg:docker-compose scale web=2 worker=3

  docker-compose pause [serviceName]
  # 暂停服务

  docker-compose unpause [serviceName]
  # 恢复服务
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值