docker系列 第二章 Docker常用命令

docker 系列文章目录

第一章 linux安装docker
第二章 Docker常用命令
第三章 安装
第四章 Dockerfile


常用命令

run

docker run :创建一个新的容器并运行一个命令

语法

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

  • -d: 后台运行容器,并返回容器ID
  • -i: 以交互模式运行容器,通常与 -t 同时使用
  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
  • –name=myDocker;设置容器别名
  • -v: 设置容器挂载卷

实例

使用镜像 nginx:latest,设置容器名称,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /myData 映射到容器的 /data。

docker run -name=myNginx -p 80:80 -v /myData:/data -d nginx:latest

start/stop/restart

  • docker start :启动容器
  • docker stop :停止运行中的容器
  • docker restart :重启容器

语法

docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]

实例

启动myNginx容器

docker start myNginx

停止stop容器

docker stop myNginx

重启restart容器

docker restart myNginx

rm

docker rm:删除一个或多个容器

语法

docker rm [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS说明:

  • -f: 强制移除正在运行的容器(使用SIGKILL)
  • -l: 删除指定的链接
  • -v: 删除与容器关联的匿名卷

实例

强制删除容器myNginx

docker rm -f myNginx

删除所有已经停止的容器:

docker rm $(docker ps -a -q)

exec

docker exec :在运行的容器中执行命令

语法

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS说明:

  • -d :分离模式:在后台运行命令
  • -i :即使没有附加也保持STDIN 打开
  • -t :分配一个伪终端

实例

docker exec -it myNginx bash

ps

docker ps:查看容器列表

语法

docker ps [OPTIONS]

OPTIONS说明:

  • -a :显示所有的容器,包括未运行的。
  • -f :根据条件过滤显示的内容。
  • –format :指定返回值的模板文件。
  • -l :显示最近创建的容器。
  • -n :列出最近创建的n个容器。
  • –no-trunc :不截断输出。
  • -q :静默模式,只显示容器编号。
  • -s :显示总的文件大小。

实例

[root@iZ2zeejpwuxj24b981t19nZ data]# docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED       STATUS       PORTS                                                  NAMES
178e51398529   redis:6.2.6   "docker-entrypoint.s…"   6 hours ago   Up 6 hours   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp, 6379/tcp    myredis
b909eca4e779   mysql:5.7     "docker-entrypoint.s…"   8 days ago    Up 8 days    33060/tcp, 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp   mysql01

inspect

docker inspect:查看容器/镜像的元数据

语法

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

OPTIONS说明:

  • -f :指定返回值的模板文件。
  • -s :显示总的文件大小。
  • –type :为指定类型返回JSON。

实例

[root@iZ2zeejpwuxj24b981t19nZ data]# docker inspect mysql01
[
    {
        "Id": "b909eca4e779b1f88a6ae9f3e0f3591aad5c1061b014ce8cbb0bbe152bb028a5",
        "Created": "2022-01-05T15:24:19.274165222Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "mysqld"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 3153457,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2022-01-05T15:58:00.156278756Z",
            "FinishedAt": "2022-01-05T15:57:59.907427998Z"
        },
        "Image": "sha256:c20987f18b130f9d144c9828df630417e2a9523148930dc3963e9d0dab302a76",
...

logs

docker logs:获取容器的日志

语法

docker logs [OPTIONS] CONTAINER

OPTIONS说明:

  • -f : 跟踪日志输出
  • –since :显示某个开始时间的所有日志
  • -t : 显示时间戳
  • –tail :仅列出最新N条容器日志

实例
跟踪查看容器myredis的日志输出。

[root@iZ2zeejpwuxj24b981t19nZ data]# docker logs -f myredis
1:C 14 Jan 2022 02:08:48.228 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 14 Jan 2022 02:08:48.228 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 14 Jan 2022 02:08:48.228 # Configuration loaded
1:M 14 Jan 2022 02:08:48.228 * monotonic clock: POSIX clock_gettime
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 6.2.6 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                  
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 1
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           https://redis.io       
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

1:M 14 Jan 2022 02:08:48.229 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

login/logout

  • docker login:登陆到Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
  • docker logout:退出Docker镜像仓库

语法

docker login [OPTIONS] [SERVER]
docker logout [SERVER]

OPTIONS说明:

  • -u :用户名
  • -p :密码

实例

docker login -u 用户名 -p 密码
docker logout

pull

docker pull:从镜像仓库中拉取或者更新指定镜像

语法

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

OPTIONS说明:

  • -a : 拉取所有 tag 镜像

实例

从远程仓库拉去最新nginx

docker pull nginx

push

docker push:将本地的镜像上传到镜像仓库,需要先登录镜像仓库

语法

docker push [OPTIONS] NAME[:TAG]

OPTIONS说明:

  • -a, --all-tags Push all tagged images in the repository
    –disable-content-trust Skip image signing (default true)
    -q, --quiet Suppress verbose output

实例

上传本地镜像mynginx:v1到镜像仓库中

docker push mynginx:v1

search

docker search: 查找镜像

语法

docker search [OPTIONS] TERM

OPTIONS说明:

  • –automated:弃用,只列出自动构建类型的镜像
  • –filter , -f:基于给定条件过滤输出
  • –format:使用模板格式化显示输出
  • –limit:Max number of search results ,默认值25
  • –no-trunc:禁止截断输出
  • –stars , -s:弃用,只显示收藏数不小于几颗星的镜像,移到–filter中使用

实例

查询nginx前10条数据

docker search --limit 10 nginx
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                             Official build of Nginx.                        16141     [OK]       
jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con…   2109                 [OK]
richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable of…   820                  [OK]
jlesage/nginx-proxy-manager       Docker container for Nginx Proxy Manager        150                  [OK]
nginxdemos/hello                  NGINX webserver that serves a simple page co…   82                   [OK]
privatebin/nginx-fpm-alpine       PrivateBin running on an Nginx, php-fpm & Al…   61                   [OK]
nginx/nginx-ingress               NGINX and  NGINX Plus Ingress Controllers fo…   59                   
nginxinc/nginx-unprivileged       Unprivileged NGINX Dockerfiles                  57                   
nginx/nginx-prometheus-exporter   NGINX Prometheus Exporter for NGINX and NGIN…   23                   
mailu/nginx                       Mailu nginx frontend                            10                   [OK]

commit

docker commit: 基于本地容器创建一个新的容器镜像

语法

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS说明:

  • -a :作者
  • -c :使用Dockerfile指令来创建镜像
  • -m : 提交说明
  • -p :在commit时,将容器暂停

实例

制作个人mysql镜像版本为v0.0.1

[root ~]# docker commit -a 'XXX@qq.com' -m '个人mysql版本' b909eca4e779 mymysql:v0.0.1
sha256:af1a82a92d5975a71fe3ce3354ca98306c4717aab80c554d3f3d49a28e7a66f7
[root ~]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED         SIZE
mymysql            v0.0.1    af1a82a92d59   7 seconds ago   448MB

images

docker images: 查看本地容器镜像

语法

docker images [OPTIONS] [REPOSITORY[:TAG]]

OPTIONS说明:

  • -a :列出本地所有的镜像
  • –digests :显示镜像的摘要信息
  • -f :显示满足条件的镜像
  • –format :指定返回值的模板文件
  • –no-trunc :显示完整的镜像信息
  • -q :显示镜像ID

实例

查看本地镜像列表

[root~]# docker images
REPOSITORY                                                   TAG       IMAGE ID       CREATED          SIZE
mymysql                                                      v0.0.1    af1a82a92d59   29 minutes ago   448MB
registry.cn-beijing.aliyuncs.com/haipaijiaoyu/haipaijiaoyu   v0.0.1    af1a82a92d59   29 minutes ago   448MB
gitlab/gitlab-ce                                             latest    46cd6954564a   12 days ago      2.36GB
redis                                                        6.2.6     7614ae9453d1   3 weeks ago      113MB
redis                                                        latest    7614ae9453d1   3 weeks ago      113MB
mysql                                                        5.7       c20987f18b13   3 weeks ago      448

rmi

docker rmi : 移除本地镜像

语法

docker rmi [OPTIONS] IMAGE [IMAGE...]

OPTIONS说明:

  • -f 强制删除

实例

删除46cd6954564a(image_id)容器

docker rmi -f 46cd6954564a

删除所有未被容器使用的镜像

docker image prune -a

tag

docker tag: 标记本地镜像,将其归入远程仓库

语法

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

实例

将镜像ID标记为mymysql:v0.0.1镜像

docker tag af1a82a92d59  mymysql:v0.0.1

build

docker build:使用 Dockerfile 创建镜像

语法

docker build [OPTIONS] PATH | URL | -

OPTIONS说明:

  • –build-arg: 设置构建时的变量
  • –no-cache: 默认false。设置该选项,将不使用Build Cache构建镜像
  • –pull: 默认false。设置该选项,总是尝试pull镜像的最新版本
  • –compress: 默认false。设置该选项,将使用gzip压缩构建的上下文
  • –disable-content-trust: 默认true。设置该选项,将对镜像进行验证
  • –file, -f: Dockerfile的完整路径,默认值为‘PATH/Dockerfile’
  • –isolation: 默认–isolation=“default”,即Linux命名空间;其他还有process或hyperv
  • –label: 为生成的镜像设置metadata
  • –squash: 默认false。设置该选项,将新构建出的多个层压缩为一个新层,但是将无法在多个镜像之间共享新层;设置该选项,实际上是创建了新image,同时保留原有image。
  • –tag, -t: 镜像的名字及tag,通常name:tag或者name格式;可以在一次构建中为一个镜像设置多个tag
  • –network: 默认default。设置该选项,Set the networking mode for the RUN instructions during build
  • –quiet, -q: 默认false。设置该选项,Suppress the build output and print image ID on success
  • –force-rm: 默认false。设置该选项,总是删除掉中间环节的容器
  • –rm: 默认–rm=true,即整个构建过程成功后删除中间环节的容器
  • -m: 设置内存最大值
  • –memory-swap:设置Swap的最大值为内存+swap,"-1"表示不限swap

实例

docker build -f /home/Dockerfile .

save

docker save:指定镜像保存成 tar 归档文件

语法

docker save [OPTIONS] IMAGE [IMAGE...]

OPTIONS说明:

  • -o :输出到的文件。

实例
将镜像 mysql:5.7 生成 mysql.tar 文档

docker save -o mysql.tar mysql:5.7

load

docker load:导入

语法

 docker load [OPTIONS]

OPTIONS说明:

  • -i : 指定导入的文件,代替 STDIN
  • -q : 精简输出信息

实例
导入镜像

docker load -i mysql.tar

import

docker import:导入

语法

 docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

OPTIONS说明:

  • -c :应用docker 指令创建镜像
  • -m :提交时的说明文字

实例
从镜像归档文件mysql.tar创建镜像,命名为mysql:v0.0.1

[root]# docker import mysql.tar mysql:v0.0.1
sha256:8fa8a506d425955f34180376c4b61f9dcd001dd270b1cb15c9aa2bdfd7e24fbf
[root]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED         SIZE
mysql              v0.0.1    8fa8a506d425   4 seconds ago   454MB

network

docker network: 网络管理

语法

 docker network COMMAND

OPTIONS说明:

  • connect 将容器连接到网络
  • create 创建网络
  • disconnect 断开容器与网络的连接
  • inspect 显示一个或多个网络上的详细信息
  • ls 容器列表
  • prune 删除所有未使用的网络
  • rm 删除一个或多个网络

实例

[root]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
758a225edc87dda784cad00cf6495d4319004ec2f8552bb0ddfce4e94281a9d2
[root]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "758a225edc87dda784cad00cf6495d4319004ec2f8552bb0ddfce4e94281a9d2",
        "Created": "2022-01-24T14:48:02.212383799+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.0.0/16",
                    "Gateway": "192.168.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]
[root]# docker network connect mynet mysql01
[
    {
        "Name": "mynet",
        "Id": "758a225edc87dda784cad00cf6495d4319004ec2f8552bb0ddfce4e94281a9d2",
        "Created": "2022-01-24T14:48:02.212383799+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.0.0/16",
                    "Gateway": "192.168.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "b909eca4e779b1f88a6ae9f3e0f3591aad5c1061b014ce8cbb0bbe152bb028a5": {
                "Name": "mysql01",
                "EndpointID": "ea1e4ab3682228abe4d57c01c785c6ddc01491ffb7e5ee180cee52cb2d4fca5d",
                "MacAddress": "02:42:c0:a8:00:02",
                "IPv4Address": "192.168.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

总结

以上就是今天要讲的内容,本文仅仅简单介绍了docker 命令的使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值