阿泉的博客

记录生活点滴

docker的一些命令


视频教程:

【狂神说Java】Docker最新超详细版教程通俗易懂

帮助命令

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

帮助文档的地址:https://docs.docker.com/engine/reference/commandline/

(以下图片均使用kali系统)

1、镜像命令

docker images 查看所有本地的主机上的镜像

┌──(root㉿kali)-[~]└─# docker imagesREPOSITORY         TAG         IMAGE ID       CREATED         SIZEhello-world        latest      feb5d9fea6a5   12 months ago   13.3kB# 解释REPOSITORY  镜像的仓库源TAG         版本标签信息IMAGE ID    镜像的idCREATED     镜像的创建时间SIZE        镜像的大小# 可选项-a, --all             # 列出所有镜像-q, --quiet           # 只列出镜像的id

docker search 搜索镜像

┌──(root㉿kali)-[~]└─# docker search mysqlNAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATEDmysql                           MySQL is a widely used, open-source relation…   13234     [OK]mariadb                         MariaDB Server is a high performing open sou…   5062      [OK]phpmyadmin                      phpMyAdmin - A web interface for MySQL and M…   640       [OK]percona                         Percona Server is a fork of the MySQL relati…   588       [OK]...# 可选项,通过收藏来过滤--filter=STARS=5000     #搜索出来的镜像就是STARS大于3000的┌──(root㉿kali)-[~]└─# docker search mysql --filter=STARS=5000NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATEDmysql     MySQL is a widely used, open-source relation…   13234     [OK]mariadb   MariaDB Server is a high performing open sou…   5062      [OK]

docker pull 下载镜像

# 下载镜像 docker pull 镜像名[:tag]

不是很想下,截一下老师的图哈哈哈

image-20221017212936550

docker rmi 删除镜像

┌──(root㉿kali)-[~]└─# docker rmi -f  镜像id                 #1.删除指定的镜像id┌──(root㉿kali)-[~]└─# docker rmi -f  镜像id 镜像id 镜像id    #2.删除多个镜像id┌──(root㉿kali)-[~]└─# docker rmi -f  $(docker images -aq)  #3.删除全部的镜像id

2、容器命令

说明:我们有了镜像才可以创建容器,linux

下载一个centos镜像来测试学习

docker pull centos

新建容器并启动

docker run [可选参数] image#参数说明--name="Name"   容器名字   tomcat01,tomcat02,用来区分容器--d             后台方式运行-it            使用交互方式运行,进入容器查看内容-p              指定容器的端口   -p 8080:8080	-p ip:主机端口:容器端口-p 主机端口:容器端口(常用)-p 容器端口容器端口-P              随机指定端口# 测试,启动并进入容器┌──(root㉿kali)-[~]└─# docker run -it centos /bin/bash[root@93c15a60f187 /]# ls     #查看容器内的centos,基础版本,很多命令不完善bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var# 从容器中退回主机[root@93c15a60f187 /]# exitexit┌──(root㉿kali)-[~]└─#

image-20221017235421425

列出所有的运行的容器


# docker ps 命令

  # 列出当前正在运行的容器

-a # 列出当前正在运行的容器+带出历史运行过的容器

-n=?  # 显示最近创建的容器

-q # 只显示容器的编号



┌──(root㉿kali)-[~]

└─# docker ps

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

┌──(root㉿kali)-[~]

└─# docker ps -a

CONTAINER ID   IMAGE                        COMMAND                  CREATED         STATUS                       PORTS     NAMES

93c15a60f187   centos                       "/bin/bash"              7 minutes ago   Exited (130) 3 minutes ago             funny_jackson

c60fa97d9284   feb5d9fea6a5                 "/hello"                 4 hours ago     Exited (0) 4 hours ago                 quizzical_pasteur

5ab8620c78f5   medicean/vulapps:s_shiro_1   "/usr/local/tomcat/b…"   2 months ago    Exited (143) 2 months ago              trusting_mestorf



┌──(root㉿kali)-[~]

└─# docker ps -n=1

CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                        PORTS     NAMES

93c15a60f187   centos    "/bin/bash"   14 minutes ago   Exited (130) 10 minutes ago             funny_jackson



┌──(root㉿kali)-[~]

└─# docker ps -aq

93c15a60f187

c60fa97d9284

5ab8620c78f5

退出容器

exit  # 直接容器停止并退出Ctrl + P + Q # 容器不停止退出

删除容器

docker rm 容器id               # 删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -fdocker rm -f $(docker ps -aq)  # 删除所有的容器docker ps -a -q|xargs docker rm # 删除所有的容器

启动和停止容器的操作

docker start 容器id      # 启动容器docker restart 容器id    # 重启容器docker stop 容器id       # 停止当前正在运行的容器docker kill 容器id       # 强制停止当前容器

测试收尾工作(可有可无)

?遇到的问题

1、如何进入正在运行的容器

因为正在运行的容器无法通过容器id删除,所以衍生出了这个问题

解决方法1:使用docker exec

docker exec 相当于进入容器并开启一个新的终端,可以在里面操作。

如果使用exit退出,容器也不会停止。

帮助信息:

注意:因为exec是开始一个新终端,所以COMMAND是必填项,不能省略。

常用命令(其中容器id是你docker中正在运行的容器id):

docker exec -it 容器id /bin/bash

解决方法2:使用docker attach

docker attach 进入容器正在执行的终端,不会启动新的进程。

如果使用exit退出,容器会停止运行!

如果想退出容器但不想容器停止,则按住Ctrl+P+Q退出

帮助信息:

注意:可以很清楚得看到attach命令后面可以直接接容器id即可

常用命令(其中容器id是你docker中正在运行的容器id):

docker attach 容器id

结果:





使用docker import直接导入并重命名

操作步骤

  1. 导入镜像并重命名
    适用于从容器文件系统(如.tar文件)导入镜像,并指定新名称。

    bash复制docker import <文件路径或URL> <新镜像名>:<标签>

    示例

    bash复制# 从本地文件导入并重命名为myapp:v1docker import /path/to/container.tar myapp:v1# 从URL导入并重命名docker import http://example.com/container.tar myapp:latest
  2. 验证结果

    bash复制docker images | grep myapp

    输出示例

    REPOSITORY  TAG       IMAGE ID       CREATED         SIZE
    myapp       v1        abc123456789   2 minutes ago   100MB

docker loaddocker tag重命名

操作步骤

  1. 加载镜像文件
    适用于从docker save导出的镜像文件(包含完整镜像历史)导入后重命名。

    bash复制docker load -i <镜像文件.tar>

    示例

    bash复制docker load -i ubuntu_latest.tar

    输出示例

    Loaded image: ubuntu:latest
  2. 查看已加载的镜像

    bash复制docker images

    输出示例

    REPOSITORY  TAG       IMAGE ID       CREATED         SIZE
    ubuntu      latest    def567890123   3 weeks ago     72.9MB
  3. 重命名镜像

    bash复制docker tag <原镜像名>:<标签> <新镜像名>:<标签>

    示例

    bash复制docker tag ubuntu:latest myubuntu:v1
  4. 验证结果

    bash复制docker images | grep myubuntu

    输出示例

    REPOSITORY  TAG       IMAGE ID       CREATED         SIZE
    myubuntu    v1        def567890123   3 weeks ago     72.9MB

关键区别与注意事项

docker import vs docker load

特性docker importdocker load
数据来源容器文件系统(.tardocker save导出的镜像文件
历史层保留不保留历史层保留完整历史层
适用场景单次导入镜像迁移或备份

重命名原理

docker tag实际是创建新标签指向同一镜像ID,原镜像仍存在(需手动删除)

2
3


清理旧镜像

重命名后,可通过以下命令删除原镜像:

bash复制docker rmi ubuntu:latest

完整操作流程示例

bash复制# 导出镜像(示例:从另一台机器导出)docker save ubuntu:latest > ubuntu_latest.tar# 传输文件到目标机器后加载docker load -i ubuntu_latest.tar# 重命名为新名称docker tag ubuntu:latest myrepo/ubuntu:v1# 验证并清理docker images | grep myrepodocker rmi ubuntu:latest  # 可选:删除原镜像


Powered By Z-BlogPHP 1.7.4