这就是你日日夜夜想要的docker!!!---------三分钟带你玩转docker命令

时间:2022-07-25
本文章向大家介绍这就是你日日夜夜想要的docker!!!---------三分钟带你玩转docker命令,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

docker version 查看版本信息

[root@localhost ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:03:45 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.13
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       4484c46d9d
  Built:            Wed Sep 16 17:02:21 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.3.7
  GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

docker inspect 查看镜像全部信息

 [root@localhost ~]# docker inspect 7e4d58f0e5f3 
 [root@localhost ~]# docker inspect nginx

docker search 搜索镜像

查看tomcat的镜像文件

[root@localhost ~]# docker search tomcat
NAME'名称'                          DESCRIPTION'镜像描述'                                     STARS'下载次数'               OFFICIAL'官方源'            AUTOMATED'自动'
tomcat                        Apache Tomcat is an open source implementati…   2831                [OK]                
tomee                         Apache TomEE is an all-Apache Java EE certif…   83                  [OK]   
NAME           # 镜像仓库
DESCRIPTION    # 镜像描述信息
STARS          # 镜像收藏数
OFFICIAL       # 是否为docker官方发布的镜像
AUTOMATED      # 是否为自动化构建的镜像,关于自动化构建,可以查看官方文档:https://docs.docker.com/docker-hub/builds/#how-automated-builds-work           

docker pull 下载镜像

从镜像仓库内下载nginx

[root@localhost ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
d121f8d1c412: Pull complete 
ebd81fc8c071: Pull complete 
655316c160af: Pull complete 
d15953c0e0f8: Pull complete 
2ee525c5c3cc: Pull complete 
Digest: sha256:c628b67d21744fce822d22fdcc0389f6bd763daac23a6b77147d0712ea7102d0
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

docker push docker push name[:tag “o”>] docker push laozhu/nginx:latest

将镜像推送至远程仓库,默认为 Docker Hub 。

docker images 查看镜像

-a 列出所有镜像(含过程镜像); -f 过滤镜像,如: -f [‘dangling=true’] 只列出满足 dangling=true 条件的镜像; –no-trunc 可显示完整的镜像ID; -q 仅列出镜像ID。 –tree 以树状结构列出镜像的所有提交历史。

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              7e4d58f0e5f3        8 days ago          133MB

REPOSITORY     名称
TAG            标记 后期要进行镜像上传的时候要用到
IMAGE ID       镜像ID
CREATED        镜像创建日期
[root@localhost ~]# docker images -q
7e4d58f0e5f3
7e6257c9f8d8

docker ps 列出所有运行中容器

-a 列出所有容器(含沉睡镜像);

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS               NAMES
c1b2ef7c2386        centos:7            "/bin/bash -c 'while…"   10 hours ago        Up 10 hours                                   trusting_grothendieck
e342d2c1784b        nginx:latest        "/docker-entrypoint.…"   10 hours ago        Up 10 hours               80/tcp              clever_jang
49dc91b17af6        nginx               "/docker-entrypoint.…"   15 hours ago        Exited (0) 15 hours ago                       nginx-test

–before=“nginx” 列出在某一容器之前创建的容器,接受容器名称和ID作为参数;

–since=“nginx” 列出在某一容器之后创建的容器,接受容器名称和ID作为参数;

-f [exited=] 列出满足 exited= 条件的容器;

-l 仅列出最新创建的一个容器;

[root@localhost ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
c1b2ef7c2386        centos:7            "/bin/bash -c 'while…"   10 hours ago        Up 10 hours                             trusting_grothendieck

–no-trunc 显示完整的容器ID;

[root@localhost ~]# docker ps --no-trunc
CONTAINER ID                                                       IMAGE               COMMAND                                          CREATED             STATUS              PORTS               NAMES
c1b2ef7c23869261a2ef15be13dcfef37108c3020107eda2260a2c81117cfc3d   centos:7            "/bin/bash -c 'while true;do echo hello;done'"   10 hours ago        Up 10 hours                             trusting_grothendieck
e342d2c1784b1ed13738344f4e82cdf8f77170a7fe30827cd55921b401385b36   nginx:latest        "/docker-entrypoint.sh /bin/bash"                10 hours ago        Up 10 hours         80/tcp              clever_jang

-n=4 列出最近创建的4个容器;

[root@localhost ~]# docker ps -n 2
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
c1b2ef7c2386        centos:7            "/bin/bash -c 'while…"   10 hours ago        Up 10 hours                             trusting_grothendieck
e342d2c1784b        nginx:latest        "/docker-entrypoint.…"   10 hours ago        Up 10 hours         80/tcp              clever_jang

-q 仅列出容器ID;

[root@localhost ~]# docker ps -q
c1b2ef7c2386
e342d2c1784b

-s 显示容器大小。

[root@localhost ~]# docker ps -s
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES                   SIZE
c1b2ef7c2386        centos:7            "/bin/bash -c 'while…"   10 hours ago        Up 10 hours                             trusting_grothendieck   0B (virtual 203MB)
e342d2c1784b        nginx:latest        "/docker-entrypoint.…"   10 hours ago        Up 10 hours         80/tcp              clever_jang             17B (virtual 133MB)

docker tag 打标签

-f 覆盖已有标记。

 相当于增加一个标签(硬链接)  不是修改,  后期上传到仓库  要进行更改成指定的标签格式
[root@localhost ~]# docker tag nginx:latest nginx:web
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              7e4d58f0e5f3        8 days ago          133MB
nginx               web                 7e4d58f0e5f3        8 days ago    

docker rmi 删除标签

从本地移除一个或多个指定的镜像。

-f 强行移除该镜像,即使其正被使用;

–no-prune 不移除该镜像的过程镜像,默认移除。

-l : 移除容器间的网络连接,而非容器本身

-v : 删除与容器关联的卷

删除标签的两种方式以及区别 docker rmi + id 当存在两个相同id的时候不能使用id号来删除 docker rmi + 镜像名称:标签 删除指定标签的镜像 可以是多个id相同的标签 如下所示

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              7e4d58f0e5f3        8 days ago          133MB
nginx               web                 7e4d58f0e5f3        8 days ago          133MB
[root@localhost ~]# docker rmi 7e4d58f0e5f3 
Error response from daemon: conflict: unable to delete 7e4d58f0e5f3 (cannot be forced) - image is being used by running container 49dc91b17af6
[root@localhost ~]# docker rmi nginx:web
Untagged: nginx:web
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              7e4d58f0e5f3        8 days ago    

此时报错的原因是我之前已经将容器的nginx服务跑起来了 此处想要删除必须加-f

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              7e4d58f0e5f3        8 days ago          133MB

[root@localhost ~]# docker rmi 7e4d58f0e5f3
Error response from daemon: conflict: unable to delete 7e4d58f0e5f3 (cannot be forced) - image is being used by running container 49dc91b17af6

docker history 查看指定镜像的创建历史

–no-trunc 显示完整的提交记录;

[root@localhost ~]# docker history 7e4d58f0e5f3 
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
7e4d58f0e5f3        9 days ago          /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon…   0B                  
<missing>           9 days ago          /bin/sh -c #(nop)  STOPSIGNAL SIGTERM           0B                  
<missing>           9 days ago          /bin/sh -c #(nop)  EXPOSE 80                    0B                  
<missing>           9 days ago          /bin/sh -c #(nop)  ENTRYPOINT ["/docker-entr…   0B                  
<missing>           9 days ago          /bin/sh -c #(nop) COPY file:0fd5fca330dcd6a7…   1.04kB              
<missing>           9 days ago          /bin/sh -c #(nop) COPY file:1d0a4127e78a26c1…   1.96kB              
<missing>           9 days ago          /bin/sh -c #(nop) COPY file:e7e183879c35719c…   1.2kB               
<missing>           9 days ago          /bin/sh -c set -x     && addgroup --system -…   63.4MB              
<missing>           9 days ago          /bin/sh -c #(nop)  ENV PKG_RELEASE=1~buster     0B                  
<missing>           9 days ago          /bin/sh -c #(nop)  ENV NJS_VERSION=0.4.3        0B                  
<missing>           9 days ago          /bin/sh -c #(nop)  ENV NGINX_VERSION=1.19.2     0B                  
<missing>           9 days ago          /bin/sh -c #(nop)  LABEL maintainer=NGINX Do…   0B                  
<missing>           10 days ago         /bin/sh -c #(nop)  CMD ["bash"]                 0B                  
<missing>           10 days ago         /bin/sh -c #(nop) ADD file:e7407f2294ad23634…   69.2MB   

-q 仅列出提交记录ID。

[root@localhost ~]# docker history 7e4d58f0e5f3 -q
7e4d58f0e5f3
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>

docker create

//-i:让容器的标准输入保持打开
//-t:让docker分配一个伪终端
[root@localhost opt]# docker create -it nginx:latest
4e697390f6d1e4711e69e2bdfa3771331ba99e598b89badf7e6319c0e497d11b

docker save 备份

 [root@localhost opt]# docker save -o /opt/nginx01 nginx:latest
[root@localhost opt]# ls /opt
containerd  docker.sh  nginx01  rh

docker load 还原

[root@localhost opt]# docker load < /opt/nginx01 
Loaded image: nginx:latest
[root@localhost opt]# docker load --input /opt/nginx01 
Loaded image: nginx:latest

将指定镜像保存成 tar 归档文件, docker load 的逆操作。保存后再加载(saved-loaded)的镜像不会丢失提交历史和层,可以回滚。

-o “debian.tar” 指定保存的镜像归档。

docker pause 暂停某一容器的所有进程。

docker unpause docker unpause 恢复某一容器的所有进程。

docker start|stop|restart

docker start|stop “p”>|restart [options “o”>] “o”>[container…]

启动、停止和重启一个或多个指定容器。

[root@localhost opt]# docker start 4e697390f6d1

-a 待完成

-i 启动一个容器并进入交互模式;

-t 10 停止或者重启容器的超时时间(秒),超时后系统将杀死进程。

docker run

启动一个容器,在其中运行指定命令。

-a stdin 指定标准输入输出内容类型,可选 STDIN/ STDOUT / STDERR 三项;

-d 后台运行容器,并返回容器ID;

-i 以交互模式运行容器,通常与 -t 同时使用;

-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

–name=“nginx-lb” 为容器指定一个名称;

–dns 8.8.8.8 指定容器使用的DNS服务器,默认和宿主一致;

–dns-search example.com 指定容器DNS搜索域名,默认和宿主一致;

-h “mars” 指定容器的hostname;

-e username=“ritchie” 设置环境变量;

–env-file=[] 从指定文件读入环境变量;

–cpuset=“0-2” or --cpuset=“0,1,2” 绑定容器到指定CPU运行;

-c 待完成

-m 待完成

–net=“bridge” 指定容器的网络连接类型,支持 bridge / host / none container:<name|id> 四种类型;

–link=[] 待完成

–expose=[] 待完成

使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。

docker run --name mynginx -d nginx:latest



使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。

docker run -P -d nginx:latest



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

docker run -p 80:80 -v /data:/data -d nginx:latest



绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。

$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash



使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。

runoob@runoob:~$ docker run -it nginx:latest /bin/bash
root@b8573233d675:/# 
                 '-d 后台运行   -p端口映射  前面那的是真机的端口  绑定到docker的82端口'
[root@localhost opt]# docker run -d -p 82:80 nginx

docker rm 删容器

删除容器(先停止容器在删除):docker rm 容器id

[root@docker ~]# docker rm 4aeeecce12fd 
4aeeecce12fd
[root@docker ~]# docker ps -a

docker exec 进入容器

'//-i:让容器的标准输入保持打开'
'//-t:让docker分配一个伪终端'
[root@localhost opt]# docker exec -it 4e697390f6d1 /bin/bash  '进入容器 创建新的终端'
root@4e697390f6d1:/# ls
bin   docker-entrypoint.d   home   media  proc	sbin  tmp
boot  docker-entrypoint.sh  lib    mnt	  root	srv   usr
dev   etc		    lib64  opt	  run	sys   var
root@4e697390f6d1:/etc# exit
exit


[root@localhost opt]# docker attach 4e   '直接进入当前运行的容器  不创建新的终端'


ls

docker commit 创建一个复制镜像

[root@localhost opt]# docker commit 35 web2
sha256:2051861483e6dd430987444df96a16100e3f5b071f797a0b03311dd7939ce167
[root@localhost opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
web2                latest              2051861483e6        42 seconds ago      133MB
nginx               latest              7e4d58f0e5f3        9 days ago          133MB

批量删除容器

docker ps -a |awk '{print "docker rm "$1}'