Linux下docker的常用命令

我们来了解一下常用的docker命令


  • 其中docker container命令中的参数,有同于docker命令的参数的,其用法相同,效果一样。
  • docker container命令的参数和docker命令的参数不同的有prune,ls
  • 其中docker *命令中的参数,有同于docker命令的参数的,其含义相同。

 

1.docker version   #查看docker的版本
2.docker info   #查看docker的详细信息
3.docker images   #查看本地所有镜像
4.docker images nginx   #查看本地与nginx的相关的镜像
5.docker ps -a   #查看当前所有容器的状态(包括没有运行的)
6.docker ps   #查看当前正在运行的容器的状态
7.docker stop vm1   #停止容器vm1(容器vm1存在,并运行)
8.docker start vm1   #启动容器vm1(容器vm1存在,但没有运行)
9.docker kill vm1   #强制干掉容器vm1(容器vm1存在,并运行)
10.docker attach vm1   #连接容器vm1(当容器vm1正在运行,要再次连接时,使用该命令)
11.docker diff vm1   #查看容器vm1的修改(A – Add;D – Delete;C – Change)
12.docker top vm1   #查看容器vm1的进程
13.docker stats vm1   #查看容器vm1的资源使用率
14.docker pause/unpause vm1   #暂停/恢复容器vm1(但是docker ps中显示仍在运行状态)
15.docker cp index.html vm1:/usr/share/nginx/html   #同docker container cp index.html vm1:/usr/share/nginx/html。拷贝index.html文件到nginx创建的容器vm1的默认发布目录(/usr/share/nginx/html)下。在"Linux下docker应用初体验之nginx,ubuntu,rhel7镜像的使用"文章中使用过。
16.docker logs vm1   #查看容器vm1的日志(即在容器vm1中的所有操作)
17.docker port vm1   #查看容器vm1的端口映射情况(容器vm1正在运行)
18.docker network ls   #列出当前有哪些网络类型
19.docker volume ls   #列出当前有哪些数据卷
20.docker build -t rhel7:apache .   #使用当前目录下Dockerfile文件创建镜像rhel7:apache
21.docker tag rhel7:nginx4 localhost:5000/rhel7:nginx4   #相当于将rhel7:nginx4镜像复制一份出来,名字为localhost:5000/rhel7:nginx4
22.docker login xin.org   #登录xin.org
23.docker logout xin.org  #退出xin.org

______________________________________________________________________________
23.docker run -d --name vm1 ubuntu   #使用镜像ubuntu创建容器vm1,并运行。(-d表示后台运行容器,并返回容器ID)
24.docker run -it --name vm1 ubuntu   #使用镜像ubuntu创建容器vm1,并运行,并进入交互界面。
25.docker run -it --name vm1 rhel7 bash   #使用镜像rhel7创建容器vm1,并与其进行bash交互;(-i:以交互模式运行容器,通常与-t一起使用;-t:为容器重新分配一个伪输入终端)
26.docker run -d --name vm1 -v /tmp/docker:/usr/share/nginx/html nginx   #使用镜像nginx创建容器vm1,并运行,并将本地主机的/tmp/docker目录挂载到容器vm1内的/usr/share/nginx/html目录下。(即本地主机/tmp/docker目录下有什么内容,那容器vm1的/usr/share/nginx/html目录中就有什么内容)。在"Linux下docker应用初体验之nginx,ubuntu,rhel7镜像的使用"文章中使用过。
27.docker exec -it vm1 /bin/bash   #进入容器vm1的bash界面(此时容器vm1正在运行)

——————————————————————————————————————————————————————————————————————————————
28.docker run --rm busybox:v1   #用busybox:v1镜像创建容器,并运行,运行完成之后,立即删除
29.docker run -it --rm ubuntu   #用ubuntu镜像创建容器,并运行,运行完成之后,立即删除
——————————————————————————————————————————————————————————————————————————————
30.docker commit vm1 ubuntu:v1   #将容器vm1打包生成ubuntu:v1镜像
______________________________________________________________________________
31.docker inspect vm1   #查看容器vm1的详情
32.docker inspect nginx   #查看镜像vm1的详情
——————————————————————————————————————————————————————————————————————————————
33.docker rmi nginx   #删除nginx镜像
34.docker rm vm1   #删除容器vm1
#当容器正在运行时,使用该命令回报错。应该先docker stop vm1停止vm1容器,再docker rm vm1删除容器vm1。当然,也可以使用docker rm -f vm1强制删除正在运行的容器vm1。
#即docker rm -f vm1相当于docker stop vm1 + docker rm vm1。
——————————————————————————————————————————————————————————————————————————————
35.docker history nginx   #查看nginx镜像的历史
——————————————————————————————————————————————————————————————————————————————
36.docker load -i ubuntu.tar   #导入ubuntu.tar,以添加镜像ubuntu
37.docker import vm1.tar image   #导入容器vm1.tar为镜像image
——————————————————————————————————————————————————————————————————————————————
38.docker save ubuntu > ubuntu.tar   #导出镜像ubuntu
39.docker export vm1 > vm1.tar   #导出容器vm1
——————————————————————————————————————————————————————————————————————————————
40.docker search  镜像名的一部分   #查找镜像(如:docker search nginx  #查找与nginx相关的镜像)
41.docker pull 镜像名  #拉取镜像
42.docker push 镜像名  #推送镜像

______________________________________________________________________________
43.docker container ls   #同docker ps,查看正在运行的容器
44.docker container prune    #删除所有运行停止的容器
45.docker rm -f `docker ps -aq`   #删除所有容器(运行的和没运行的)

想要了解更多命令:     docker  --help

 

下面,我们来具体看一下docker commit命令,docker attach命令,docker exec命令,docker diff命令+docker logs命令,docker container prune命令,docker save命令的使用方法

 

1.docker commit命令

 

#使用ubuntu镜像,创建一个vm1容器,并进入交互界面。
[root@foundation83 kiosk]# docker run -it --name vm1 ubuntu   
root@06803b2e8e7d:/# touch file   #在容器vm1内创建一个文件
root@06803b2e8e7d:/# ls
bin  boot  dev  etc  file  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@06803b2e8e7d:/# exit   #退出容器


#使用docker commit命令,将容器vm1打包为ubuntu:v1镜像,并提交
[root@foundation83 kiosk]# docker commit vm1 ubuntu:v1  
sha256:ceda2a785c9707b9ba5a9c89bad0fa2c54393dcb484cdb844042635217834269


#使用ubuntu:v1镜像,创建一个vm2容器,并进入交互界面。
[root@foundation83 kiosk]# docker run -it --name vm2 ubuntu:v1
root@67327409e9a9:/# ls
bin  boot  dev  etc  file  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  

#结论:我们会发现,vm2容器中,看到的内容正是容器vm1中的内容。

 

2.docker attach命令

 

#使用镜像ubuntu,创建容器vm3,并进入交互模式
[root@foundation83 kiosk]# docker run -it --name vm3 ubuntu
root@08214d3577be:/#    #使用Crtl+p+q退出。如果使用的是Ctrl+d退出,那么是使用docker attach命令之前,要先使用docker start命令,开启相应的容器

#使用docker attach命令,再次连接容器vm1
[root@foundation83 kiosk]# docker attach vm3  
root@08214d3577be:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

 

3.docker exec命令

 

#使用nginx镜像后台运行容器vm4
[root@foundation83 kiosk]# docker run -d --name vm4 nginx
a9cacd1ca7cf9687d62d186427b78471fc37aa58f63c7b652b329eb0919dd5e5

#使用docker exec命令,进入容器vm4的交互界面,查看一些内容
[root@foundation83 kiosk]# docker exec -it vm4 /bin/bash
root@a9cacd1ca7cf:/# cd /usr/share/nginx/html/
root@a9cacd1ca7cf:/usr/share/nginx/html# ls
50x.html  index.html

 

4.docker diff命令+docker logs命令

 

#使用ubuntu镜像,运行容器vm5,并进入交互模式
[root@foundation83 kiosk]# docker run -it --name vm5 ubuntu
root@9fbf03633bf3:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
root@9fbf03633bf3:/#      #使用Ctrl+p+q退出

#将本地主机的/etc/passwd文件,拷贝到容器vm1的/tmp目录中
[root@foundation83 kiosk]# docker container cp /etc/passwd vm5:/tmp


#使用docker diff命令查看容器vm5的修改信息
[root@foundation83 kiosk]# docker diff vm5
C /tmp    #C表示改变(Change)
A /tmp/passwd   #A表示添加(Add)

#使用docker logs查看容器vm5的日志信息(在容器vm5中的所有操作)
[root@foundation83 kiosk]# docker logs vm5
root@9fbf03633bf3:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

 

5.docker  container prune命令

 

停止容器后不会自动删除这个容器,除非在启动容器的时候指定了 --rm 标志。使用 docker ps -a 命令查看 Docker 主机上包含停止的容器在内的所有容器。你可能会对存在这么多容器感到惊讶,尤其是在开发环境。停止状态的容器的可写层仍然占用磁盘空间。要清理掉这些,可以使用 docker container prune 命令:

[root@foundation83 kiosk]# docker container prune 
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y

默认情况下,系统会提示是否继续。要绕过提示,请使用 -f--force 标志。

默认情况下,所有停止状态的容器会被删除。可以使用 --filter 标志来限制范围。例如,下面的命令只会删除 24 小时之前创建的停止状态的容器:

[root@foundation83 kiosk]# docker container prune --filter "until=24h"

 

4.docker save命令

 

[root@foundation83 docker]# docker save ubuntu > ubuntu.tar
[root@foundation83 docker]# ls ubuntu.tar 
ubuntu.tar

 

下面,我们来总结一下docker常用命令中作用类似的命令的区别

 

总结一下docker save和docker export的区别:

  1. docker save保存的是镜像(image)
  2. docker export保存的是容器(container);

总结一下docker load和docker import的区别:

  1. docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;
  2. docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。

总结一下docker run和docker exec的区别:

  1. “docker run”通常是在新创建的容器中所使用的命令。 它适用于在没有其他容器运行的情况下,您想要创建一个容器,并且要启动它,然后在其上运行一个进程。
  2. “docker exec”适用于在现有容器中运行命令的情况。如果您已经拥有了一个正在运行的容器,并希望更改该容器或从中获取某些内容,那么使用“docker exec”命令就非常合适了。

总结一下docker exec和docker attach的区别:

  1. attach 直接进入容器启动命令的终端,不会启动新的进程;exec 则是在容器中打开新的终端,并且可以启动新的进程。
  2. docker attach可以attach到一个已经在运行的容器的stdin,然后进行命令执行的动作。但是需要注意的是,如果直接从这个stdin中exit(ctrl+d),会导致容器的停止;docker exec同时使用 -it 选项时,会打开一个跟我们平时使用的TTY一样的终端。也不会像attach方式因为退出终端,导致整个容器退出。
  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以为您介绍一些在Linux下使用Docker时常用的命令。以下是一些常见的Docker命令: 1. `docker run`: 运行一个容器。 - 示例:`docker run -it ubuntu:latest /bin/bash`,这将在一个新的Ubuntu容器中启动一个交互式的bash会话。 2. `docker ps`: 列出正在运行的容器。 - 示例:`docker ps`,这将显示当前正在运行的所有容器的列表。 3. `docker images`: 列出本地存在的镜像。 - 示例:`docker images`,这将显示本地存储的所有镜像的列表。 4. `docker pull`: 从Docker仓库中拉取镜像。 - 示例:`docker pull nginx`,这将从Docker Hub上拉取最新版本的Nginx镜像。 5. `docker build`: 根据Dockerfile构建镜像。 - 示例:`docker build -t myimage:tag .`,这将在当前目录下的Dockerfile中构建一个名为myimage的镜像。 6. `docker stop`: 停止一个正在运行的容器。 - 示例:`docker stop container_id`,这将停止指定ID的容器。 7. `docker rm`: 删除一个已停止的容器。 - 示例:`docker rm container_id`,这将删除指定ID的容器。 8. `docker rmi`: 删除一个本地存在的镜像。 - 示例:`docker rmi image_id`,这将删除指定ID的镜像。 9. `docker exec`: 在正在运行的容器中执行命令。 - 示例:`docker exec -it container_id /bin/bash`,这将在指定ID的容器中启动一个交互式的bash会话。 10. `docker-compose`: 使用Docker Compose来管理多个容器的应用程序。 - 示例:`docker-compose up`,这将根据docker-compose.yml文件启动所有定义的服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值