docker常用命令详解

一、基础命令

1
2
docker info  #docker的详细信息,包括容器和镜像
docker version #docker版本信息

二、镜像相关命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
docker images #查看当前docker下的所有镜像信息信息
#列含义:
REPOSITORY#镜像仓库源
TAG#镜像的标签
IMAGE ID#镜像id
CREATED#创建时间
SIZE#大小

docker images -a #本地所有镜像
docker images -q #只打印镜像ID
docker images --no-trunc #打印镜像详细信息

docker search nginx #在dockerhub中搜索镜像
docker pull ngxin:latest #从hub仓库中拉去ngxin最新版本镜像

docker rmi ngxin #删除镜像,可以是镜像ID
docker rmi -f ngxin #强制删除,容器在运行有也可以
docker rmi -f ngxin tomcat #可删除多个镜像,空格隔开即可
docker rmi -f $(docker images -q) #删除本地所有镜像

三、容器相关命令

1
2
3
4
5
6
7
8
9
#启动容器 -i 交互运行 -t 分配一个终端 -d 后台运行 --name 指定容器名称 -p 宿主机端口:容器端口 nginx 从指定镜像运行容器
docker run -itd --name ngxin-test -p 80:80 ngxin

docker start ngixn-test #启动容器 可以是容器名称或容器ID
docker stop ngxin-test #停止容器 可以是容器名称或容器ID
docker restart ngxin-test #重启容器 可以是容器名称或容器ID
docker kill ngxin-test #强制关闭容器 可以是容器名称或容器ID

docker ps [-a] #显示当前正在运行的容器,-a 显示所有创建的容器
1
2
3
4
5
docker logs -f 容器ID/容器名称  #查看日志 -f 不间断打印日志
docker logs --since="2022-05-10" --tail 10 容器ID/容器名称 #指定时间开始的日志

docker exec -it 容器ID bash #进入容器内的终端
docker cp 容器id:容器内路径 宿主机路径 #从容器拷贝文件到宿主机

四、Dockerfile文件

以下是文件模板

1
2
3
4
5
6
7
8
9
10
11
12
13
FROM moxm/java:1.8-full

RUN mkdir -p /meetroom

WORKDIR /meetroom

COPY cloud-bus-meetroom8055-0.0.1-SNAPSHOT.jar app.jar

EXPOSE 8055

ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom"

CMD java $JAVA_OPTS -jar app.jar
1
2
3
4
5
6
7
8
9
指令详情
FROM 指定基础镜像
MAINTAINER 维护者的信息
RUN 需要运行的命令
WORKDIR 指定工作目录
COPY 复制本地主机(dockerfile文件的相对路径)到容器中
EXPOSE 容器需要暴露出的端口
ENV 指定一些环境变量
CMD 要执行的命令 每个容器只能执行一条命令
  • 构建Dockerfile文件
1
docker build -t ngxin . #当前目录下需要dockerfile文件,可直接构建
  • 修改容器为总是重启

    1
    2
    #当dcoker restart重启时,如果有容器创建时有always参数,则容器自动启动
    docker container update --restart=always 容器名字

五、docker-compose命令

  • docker-compose.yml 模板

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    version : '1'
    services:
    zh-meetroom:
    container_name: zh-meetroom
    build: ./meetroom
    ports:
    - "8055:8055"
    zh-member:
    container_name: zh-member
    build: ./member
    ports:
    - "8050:8050"
    1
    2
    3
    4
    5
    version 版本号
    services 将要启动额服务
    container_name 指定容器名称
    build 指定Dockerfile文件所在路径
    ports 映射端口,宿主机端口:容器端口
  • docker-compose 常用命令

    build命令

    1
    2
    3
    4
    5
    6
    7
    8
    #构建(重新构建)项目中的服务容器
    docker-compose build [options] [SERVICE...]

    #服务容器一旦构建后,将会带上一个标记名,例如对于 web 项目中的一个 db 容器,可能是 web_db 可以随时在项目目录下运行 docker-compose build 来重新构建服务

    --force-rm 删除构建过程中的临时容器。
    --no-cache 构建镜像过程中不使用 cache(这将加长构建过程)。
    --pull 始终尝试通过 pull 来获取更新版本的镜像。

    up命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # 该命令会自动构建文件中的所有服务,并创建(重新)容器,且启动容器
    # -d 默认时前台运行,-d是后台运行
    docker-compose up

    # --no-recreate 不会重新创建已存在的服务,只会启动已停止的服务
    docker-compose up --no-recreate

    #指定启动某服务
    docker-compose up --no-deps -d <SERVICE_NAME>


    -d 在后台运行服务容器。
    --no-color 不使用颜色来区分不同的服务的控制台输出。
    --no-deps 不启动服务所链接的容器。
    --force-recreate 强制重新创建容器,不能与 --no-recreate 同时使用。
    --no-recreate 如果容器已经存在了,则不重新创建,不能与 --force-recreate 同时使用。
    --no-build 不自动构建缺失的服务镜像。
    -t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)

    start命令

1
2
#启动已经存在的服务容器
docker-compose start [SERVICE...]

stop命令

1
2
3
4
#停止已经处于运行状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器
docker-compose stop [options] [SERVICE...]

-t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)。

restart命令

1
2
3
4
#重启项目中的服务。
docker-compose restart [options] [SERVICE...]

-t, --timeout TIMEOUT 指定重启前停止容器的超时(默认为 10 秒)

top命令

1
2
#查看各个服务容器内运行的进程
docker-compose top

pull命令

1
2
3
4
#拉取服务依赖的镜像
docker-compose pull [options] [SERVICE...]

--ignore-pull-failures 忽略拉取镜像过程中的错误。

rm命令

1
2
3
4
5
#删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop 命令来停止容器。
docker-compose rm [options] [SERVICE...]

-f, --force 强制直接删除,包括非停止状态的容器。一般尽量不要使用该选项。
-v 删除容器所挂载的数据卷。

logs命令

1
2
#查看服务容器的输出。默认情况下,docker-compose 将对不同的服务输出使用不同的颜色来区分。可以通过 --no-color 来关闭颜色。
docker-compose logs [options] [SERVICE...]

kill命令

1
2
#通过发送 SIGKILL 信号来强制停止服务容器
docker-compose kill [options] [SERVICE...]

down命令

1
2
#此命令将会停止 up 命令所启动的容器,并移除网络
docker-compose down

exec命令

1
2
#进入指定的容器
docker-compose exec