常用Docker命令

本文详细介绍了Docker的基本操作,包括查看版本信息、显示系统信息、搜索和下载镜像、管理镜像、启动和停止容器、查看容器日志、进入和退出容器、拷贝文件等关键命令。通过实例演示,帮助读者掌握Docker的基础操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常用Docker命令

转载:https://www.bilibili.com/video/BV1og4y1q7M4?p=20&spm_id_from=pageDriver
注 : 狂神说,永远的神

docker version    #显示版本信息
docker info       #显示docker的系统信息,包括镜像和容器数量
docker 命令 --help #万能帮助命令

帮助文档地址

https://docs.docker.com/reference/

镜像命令

1、docker images【1】 查看所有本地的主机上的镜像

zzw@zzw-virtual-machine:~$ sudo docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    d1165f221234   7 weeks ago   13.3kB

#解释
REPOSITORY  #镜像的仓库源
TAG         #镜像的标签
IMAGE ID    #镜像的id
CREATE      #镜像的创建时间
SIZE        #镜像的大小

#--help
Options:				
  -a, --all             #列出所有的镜像
  -f, --filter filter   #过滤
  -q, --quiet           #只显示镜像的id

2、docker search 搜索镜像

zzw@zzw-virtual-machine:~$ sudo docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   10777     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   4058      [OK]       
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   793                  [OK]

3、docker pull 下载镜像

#下载镜像 docker pull 镜像名[:tag]
zzw@zzw-virtual-machine:~$ sudo docker pull mysql:8.0.23
8.0.23: Pulling from library/mysql
f7ec5a41d630: Pull complete  #分层下载,docker image的核心  联合文件系统
9444bb562699: Pull complete 
6a4207b96940: Pull complete 
181cefd361ce: Pull complete 
8a2090759d8a: Pull complete 
15f235e0d7ee: Pull complete 
d870539cd9db: Pull complete 
5726073179b6: Pull complete 
eadfac8b2520: Pull complete 
f5936a8c3f2b: Pull complete 
cca8ee89e625: Pull complete 
6c79df02586a: Pull complete 
Digest: sha256:6e0014cdd88092545557dee5e9eb7e1a3c84c9a14ad2418d5f2231e930967a38 #签名
Status: Downloaded newer image for mysql:8.0.23
docker.io/library/mysql:8.0.23  #真实地址

4、docker rmi 删除镜像

docker rmi -f 镜像id  #通过id删除或则名字
docker rmi -f 镜像id 镜像id 镜像id #删除多个镜像
docker rmi -f $(docker images -aq)   #通过id一个一个全部删除

容器命令

说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习

docker pull centos

zzw@zzw-virtual-machine:~$ sudo docker pull centos
Using default tag: latest
latest: Pulling from library/centos
7a0437f04f83: Pull complete 
Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest

zzw@zzw-virtual-machine:~$ sudo docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
mysql         8.0.23    cbe8815cbea8   2 weeks ago    546MB
hello-world   latest    d1165f221234   7 weeks ago    13.3kB
centos        latest    300e315adb2f   4 months ago   209MB

新建容器并启动

docker run [可选参数] image

#参数说明
--name="Name" #容器名字 tomcat01 tomcat02,用来区分容器
-d            #后台方式运行
-it           #使用交互方式运行,进入容器查看内容
-p            #指定容器的端口  -p  8080:8080
	-p  ip:主机端口:容器端口
	-p  主机端口:容器端口  #(常用)
	-p  容器端口
	容器端口
-P            #随机指定端口

#测试
zzw@zzw-virtual-machine:~$ sudo docker run -it centos /bin/bash   #启动并进入容器
[root@087969a830ab /]# exit 
exit
zzw@zzw-virtual-machine:~$ 

列出所有运行的容器

#docker ps 命令
	#列出当前正在运行的容器
	-a   #列出最近运行的容器
	-n=1 #显示n个最近运行的容器
	-q   #只显示容器的编号
#列出正在运行的容器
zzw@zzw-virtual-machine:~$ sudo docker ps 

#列出最近创建的容器
zzw@zzw-virtual-machine:~$ sudo docker ps -n

#列出最近运行的容器
zzw@zzw-virtual-machine:~$ sudo docker ps -a          
CONTAINER ID   IMAGE         COMMAND       CREATED              STATUS                          PORTS     NAMES
ccab3fc22f00   centos        "/bin/bash"   About a minute ago   Exited (127) 22 seconds ago               mystifying_moser
087969a830ab   centos        "/bin/bash"   4 minutes ago        Exited (0) About a minute ago             blissful_raman
43d14a2cbfc2   hello-world   "/hello"      3 hours ago          Exited (0) 3 hours ago                    modest_galois

退出容器

exit  #容器直接停止并退出
ctrl + p + q #容器不停止退出

删除容器

#删除指定容器,不能删除正在运行的容器
docker rm 容器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 centos
#问题docker ps,发现centos停止了
#是因为:docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
#nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就没有程序了
zzw@zzw-virtual-machine:~$ sudo docker run -d centos
ded49419cf541c40da48b66b326ef356caeea3d4ff19803a689700ea0ccd81d4
zzw@zzw-virtual-machine:~$ sudo docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

查看日志

#显示日志
-tf           #显示日志
--tail number #要显示的日志条数
docker logs -tf --tail 10 容器id

查看容器中的进程信息

#命令 docker top 容器id
zzw@zzw-virtual-machine:~$ sudo docker top lucid_almeida
UID                 PID                 PPID                C                   STIME 
root                3495                3469                0                   12:39 

查看镜像的元数据

#命令
docker inspect 容器id
#测试
zzw@zzw-virtual-machine:~$ sudo docker inspect lucid_almeida
[
    {
        "Id": "0189066a7054baac25317af8925619a8afdfb96ac8cf7d3ff4287d1d92aa56ca",
        "Created": "2021-04-26T04:39:47.095401984Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 3495,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-04-26T04:39:47.427667084Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",
        "ResolvConfPath": "/var/lib/docker/containers/0189066a7054baac25317af8925619a8afdfb96ac8cf7d3ff4287d1d92aa56ca/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/0189066a7054baac25317af8925619a8afdfb96ac8cf7d3ff4287d1d92aa56ca/hostname",
        "HostsPath": "/var/lib/docker/containers/0189066a7054baac25317af8925619a8afdfb96ac8cf7d3ff4287d1d92aa56ca/hosts",
        "LogPath": "/var/lib/docker/containers/0189066a7054baac25317af8925619a8afdfb96ac8cf7d3ff4287d1d92aa56ca/0189066a7054baac25317af8925619a8afdfb96ac8cf7d3ff4287d1d92aa56ca-json.log",

进入当前正在运行的容器

#我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置

#方式一:进入容器后开启一个新的终端,可以在里面操作(常用)
docker exec -it 容器id bashShell
zzw@zzw-virtual-machine:~$ sudo docker exec -it lucid_almeida /bin/bash
#方式二:进入容器正在执行的终端,不会启动新的进程
docker attach -it lucid_almeida

从容器内拷贝文件到主机上

docker cp 容器id:容器内路径 目的主机路径
#
docker cp 容器id:/home/test.java .


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用命令遇到的问题:

【1】、无法连接,权限不足,要么加上sudo,要么将用户添加到docker用户组中

zzw@zzw-virtual-machine:~$ docker images
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json: dial unix /var/run/docker.sock: connect: permission denied

通过将用户添加到docker用户组可以将sudo去掉,命令如下

sudo groupadd docker #添加docker用户组

sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中

newgrp docker #更新用户组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值