shuai
发布于 2024-01-11 / 39 阅读
0
0

docker 基础命令

1:运行容器

    docker run [options] 镜像名称 [command] 
  • [options]指定容器的相关参数(下面只列举常用)
    • --name 为容器指定名称,如: --name=nginx 或 --name nginx
    • -d 后台运行
    • -p 指定端口映射,宿主机端口:容器端口,如:-p=8080:8080 或 -p 8080:8080
    • --restart=always 是否自动重启容器,当重启 docker 时不用手动启动容器,有这个参数后会自动重启

2:容器生命周期

    docker restart/start/stop 容器名称/容器id

3:删除容器和镜像

    docker rm 容器名称/容器id
    # 当容器正在运行时,上面命令删除不掉,可以使用 -f 强制删除容器
    docker rm -f 容器名称/容器id
    # 指定删除指定前缀的容器
    docker rm -f $(docker ps -a |  grep "k8s*"  | awk '{print $1}')
    # 清除未被使用的镜像, -f 或--force 强制执行清理操作而不会询问确认
    docker image prune -f
    # 删除所有镜像,$(docker images -q)会生成一个包含所有镜像 ID 的列表,并将其传递给 docker rmi 命令
    docker rmi $(docker images -q)

4:进入容器

    # -i 以交互模式运行容器,-t 为容器分配一个伪输入终端
    # 单独使用 -i 执行的命令和结果混淆不容易区分,单独使用 -t 输入命令不会有响应(因为不会交互)
    docker exec -it 容器名称/容器id /bin/bash(或/bin/sh)

5:构建镜像

    docker build [options] path
  • [options]:镜像的可选参数,如:
    • docker build -t test:v1 指定要创建的目标镜像名
    • docker build -f /usr/local/Dockerfile 指定 Dockerfile 文件路径
  • path: 构建镜像的上下文路径, docker build 会将这个路径下所有的文件都打包上传给 Docker 引擎,引擎内将这些内容展开后,就能获取到所有指定上下文中的文件了,比如说 dockerfile 中的 COPY ./package.json /project,其实拷贝的并不是本机目录下的 package.json 文件,而是 docker 引擎中展开的构建上下文中的文件,所以如果拷贝的文件超出了构建上下文的范围,Docker 引擎是找不到那些文件的

6:查看容器启动命令

    docker exec 容器名称 ps

7:查询某个镜像是否存在

如果命令返回一个非空的镜像 id,则表示该镜像存在。如果返回空,则表示没有与该名称相符的镜像存在

    docker images -q image-name
  • -q: 只会返回容器的 id 而不是完整的容器信息
  • 常用 shell 判断镜像是否存在如下:
    #!/bin/bash
    result=$(docker images -q sonatype/nexus3:latest)

    # 判断命令执行结果是否不为空
    if [ -n "$result" ]; then
        echo "exist image: $result"
    else
        echo "not exist image"
    fi

8:查询某个容器是否存在

如果命令返回一个非空的容器 id,则表示该容器存在。如果返回空,则表示没有与该名称相符的容器存在

    docker ps -a -q -f name=container-name
  • -a: 表示查询的是所有容器,不带 -a 则表示查询正在运动的容器
  • -q: 只会返回容器的 id 而不是完整的容器信息
  • -f name=your-container-name: 用于过滤出与指定名称相符的容器
  • 常用 shell 判断容器是否存在如下:
    #!/bin/bash
    result=$(docker ps -a -q -f name=nexus)

    # 判断命令执行结果是否不为空
    if [ -n "$result" ]; then
        echo "exist container: $result"
    else
        echo "not exist container"
    fi

9:宿主机文件拷贝到容器中

    docker cp /path/to/host/file.txt <container_id>:/path/in/container/file.txt
  • /path/to/host/file.txt 是宿主机上的文件路径。
  • <container_id> 是 Docker 容器的 ID 或者名称。
  • /path/in/container/file.txt 是将文件复制到 Docker 容器中的路径

评论