作者:@郑琰
本文转载请注明出处!:https://www.cnblogs.com/zhengyan6/p/16041327.html
docker常用相关命令
-
底层原理
docker是怎么工作的?
docker是一个client-server结构的系统,docker的守护进程运行在主机上。通过socket从客户端访问!
dockerserver接收到docker-client的指令,就会执行这个命令!
-
docker为什么比VM快?
1、docker有着比虚拟机更少的抽象层。由于docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。
2、docker利用的是宿主机的内核,而不需要GuestOS。因此,当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。仍而避免引寻、加载操作系统内核返个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载GuestOS,返个新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返个过程,因此新建一个docker容器只需要几秒钟。
帮助命令
镜像命令
镜像是什么
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含 运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
所有的应用,直接打包docker镜像,就可以直接跑起来!
docker images 查看所有本地主机上的镜像
| [root@docker ~] |
| REPOSITORY TAG IMAGE ID CREATED SIZE |
| my-hello latest 34b546e5329a 8 days ago 861kB |
| |
| |
| REPOSITORY 镜像的仓库源 |
| TAG 镜像的标签 |
| IMAGE ID 镜像的id |
| CREATED 镜像的创建时间 |
| SIZE 镜像的大小 |
| |
| -a,--all |
| -q,--quiet |
docker search 搜索镜像
| [root@docker ~] |
| NAME DESCRIPTION STARS OFFICIAL AUTOMATED |
| mysql MySQL is a widely used, open-source relation… 12253 [OK] |
| mariadb MariaDB Server is a high perfo |
| |
| |
| --filter=STARS=3000 |
| |
| [root@docker ~] |
| NAME DESCRIPTION STARS OFFICIAL AUTOMATED |
| mysql MySQL is a widely used, open-source relation… 12253 [OK] |
| mariadb MariaDB Server is a high performing open sou… 4710 [OK] |
docker pull 下载镜像
| |
| [root@docker /] |
| using default tag: latest |
| latest: Pulling from library/mysq1 |
| 5b54d594fba7: Pull complete |
| 07e7d6a8a868: Pull complete |
| abd946892310: Pull complete |
| dd8f4d07efa5 : Pull complete |
| 076d396a6205: Pull complete |
| cf6b2b93048f: Pull complete |
| 530904b4a8b7 : Pull complete |
| fb1e55059a95: Pull complete |
| 4bd29a0dcde8 : Pull complete |
| b94a001c6ec7: Pull complete |
| cb77cbeb422b: Pull complete |
| 2a35cdbd42cc: Pull complete |
| Digest:sha256:dc255ca50a42b3589197000b1f9bab2b4e010158d1a9f56c3db6ee145506f625 |
| Status : Downloaded newer image for mysq1 : latest |
| docker.io/library/mysql: latest |
| |
| |
| docker pull mysql |
| |
| docker pull docker.io/library/mysql : latest |
| |
| |
| [root@docker /] |
| 5.7 : Pulling from library/mysql |
| 5b54d594fba7 : Already exists |
| 07e7d6a8a868: Already exists |
| abd946892310: Already exists |
| dd8f4d07efa5 : A7ready exists |
| 076d396a6205: Already exists |
| cf6b2b93048f: Already exists |
| 530904b4a8b7: Already exists |
| a37958cbebcf: Pull complete |
| 04960017f638: Pull complete |
| e1285def0d2a: Pull complete |
| 670cb3a9678e: Pull complete |
| Digest:sha256:e4d39b85118358ffef6adc5e8c7d00e49d20b25597e6ffdc994696f10e3dc8e2 |
| Status : Downloaded newer image for mysql:5.7 |
| docker.io/library/mysql:5.7 |
docker rmi 删除镜像
| [root@docker /]# docker rmi -f 镜像id #删除指定的镜像 |
| [root@docker /]# docker rmi -f 镜像id 镜像id 镜像id #删除多个镜像 |
| [root@docker /]# docker rmi -f $(docker images -aq) #删除全部的镜像 |
容器命令
说明:我们有了镜像才可以创建容器,下载一个centos镜像来测试学习
docker pull centos #下载一个centos镜像
docker run 运行容器
docker run 运行流程

| |
| docker run [可选参数] image |
| |
| --name="Name" 容器名字 例:tomcato1 tomcat02 用来区分容器 |
| -d 后台方式运行 |
| -it 使用交互方式运行,进入容器查看内容 |
| -p 指定容器的端口-p 8080:8080 |
| -p ip:主机端口:容器端口 |
| -p 主机端口:容器端口(常用) |
| -p 容器端口 |
| 容器端口 |
| -P 随机指定端口 |
| |
| [root@docker /] |
| [root@e4eccc01b495/] |
| bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var |
| |
| [root@e4eccc01b495 /] |
| exit |
| [root@docker /] |
docker ps 列出所有的运行的容器
| docker ps命令 |
| -a |
| -n=? 例:-n=1 |
| -q |
| [root@docker /] |
| CONTAINER ID IMAGE COMMAND CREATED STATUS |
| PORTS NAMES |
| [root@docker /] |
| CONTAINER ID IMAGE COMMAND CREATED STATUS |
| PORTS NAMES |
| e4eccc01b495 centos "/bin/bash" 2 minutes ago Exited (0) About a |
| minute ago modest_hellman |
| 74bfa7d94103 bf756fb1ae65 " /hello" 50 minutes ago Exited (0) 50 minutes |
| ago optimistic_almeida |
exit 退出容器
exit #直接停止容器并退出 Ctrl+P+Q #容器不停止退出
docker rm 删除容器
| docker rm 容器id |
| docker rm 容器id 容器id 容器id |
| docker rm -f $(docker ps -aq) |
| docker ps -a -q | xargs docker rm |
启动和停止容器的操作
| docker start 容器id |
| docker restart 容器id |
| docker stop 容器id |
| docker kill 容器id |
常用其他命令
后台启动容器
| |
| docker run -d 容器名 |
| |
| docker run -d centos |
| |
| |
| |
| |
查看日志
| # 命令 |
| docker logs -f -t --tail 容器id |
| # 例子:我们启动 centos,并编写一段脚本来测试玩玩!最后查看日志 |
| |
| [root@docker ~]# docker run -d centos /bin/sh -c "while true;do echo z;sleep 1;done" |
| [root@docker ~]# docker ps |
| CONTAINER ID IMAGE |
| c8305dbde3b4 centos |
| |
| # -t 显示时间戳 |
| # -f 打印最新的日志 |
| # --tail number数字 显示多少条 |
| [root@docker ~]# docker logs -tf --tail 10 c8305dbde3b4 |
| 2022-03-21T17:17:17.656901941Z z |
| 2022-03-21T17:17:17.658765018Z z |
查看容器中运行的进程信息,支持 ps 命令参数
| |
| docker top 容器id |
| |
| |
| [root@docker ~] |
| UID PID PPID C STIME TTY TIME CMD |
| root 27437 27421 0 18.18 ? 00:00:00 /bin/sh -c .... |
查看容器/镜像的元数据
| # 命令 |
| docker inspect 容器id |
| |
| # 测试 |
| [root@docker ~]# docker inspect c8530dbbe3b4 |
| |
| # 完整的id,有意思啊,这里上面的容器id,就是截取的这个id前几位! |
| "Id": |
| "c8530dbbe3b44a0c873f2566442df6543ed653c1319753e34b400efa05f77cf8", |
| "Created": "2020-05-11T08:43:45.096892382Z", |
| "Path": "/bin/sh", |
| "Args": [ |
| "-c", |
| "while true;do echo docker;sleep 1;done" |
| ], |
| # 状态 |
| "State": { |
| "Status": "running", |
| "Running": true, |
| "Paused": false, |
| "Restarting": false, |
| "OOMKilled": false, |
| "Dead": false, |
| "Pid": 27437, |
| "ExitCode": 0, |
| "Error": "", |
| "StartedAt": "2022-03-21T17:17:40.324474622Z", |
| "FinishedAt": "0001-01-01T00:00:00Z" |
| }, |
| |
| ] |
进入当前正在运行的容器
| |
| |
| |
| docker exec -it 容器id bashShell |
| |
| |
| [root@docker ~] |
| CONTAINER ID IMAGE COMMAND CREATED |
| STATUS PORTS NAMES |
| c8530dbbe3b4 centos "/bin/sh -c 'while t…" 12 minutes |
| ago Up 12 minutes happy_chaum |
| [root@docker ~] |
| [root@c8530dbbe3b4 /] |
| UID PID PPID C STIME TTY TIME CMD |
| root 1 0 0 17.20 ? 00:00:00 /bin/sh -c while true;do |
| echo docker;sleep |
| root 751 0 0 17.20 pts/0 00:00:00 /bin/bash |
| root 769 1 0 17.20 ? 00:00:00 /usr/bin/coreutils -- |
| coreutils-prog-shebang=s |
| root 770 751 0 17.20 pts/0 00:00:00 ps -ef |
| |
| |
| docker attach 容器id |
| |
| |
| [root@docker ~] |
| [root@c8530dbbe3b4 /] |
| UID PID PPID C STIME TTY TIME CMD |
| root 1 0 0 17.20 ? 00:00:00 /bin/sh -c while true;do |
| echo docker;sleep |
| root 856 0 0 17.23 pts/0 00:00:00 /bin/bash |
| root 874 1 0 17.23 ? 00:00:00 /usr/bin/coreutils -- |
| coreutils-prog-shebang=s |
| root 875 856 0 17.23 pts/0 00:00:00 ps -ef |
| |
| |
| |
| |
从容器内拷贝文件到主机上
| |
| docker cp 容器id:容器内路径 目的主机路径 |
| |
| |
| |
| [root@c8530dbbe3b4 /] |
| [root@c8530dbbe3b4 home] |
| [root@c8530dbbe3b4 home] |
| f1 |
| [root@c8530dbbe3b4 home] |
| exit |
| |
| |
| [root@docker ~] |
| [root@docker ~] |
| [root@docker home] |
| f1 |
命令详解 docker
| attach |
| build |
| commit |
| cp |
| create |
| diff |
| events |
| exec |
| export |
| history |
| images |
| import |
| info |
| inspect |
| kill |
| load |
| login |
| logout |
| logs |
| port |
| pause |
| ps |
| pull |
| push |
| restart |
| rm |
| rmi |
| run |
| save |
| search |
| start |
| stop |
| tag |
| top |
| unpause |
| version |
| wait |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)