美文网首页
2.docker命令学习

2.docker命令学习

作者: 青风飞絮 | 来源:发表于2023-05-28 18:10 被阅读0次

1.帮助启动类命令

启动docker : systemctl start docker
停止docker : systemctl stop docker
重启docker : systemctl restart docker
查看docker状态 : systemctl status docker
开机启动 : systemctl enable docker
查看docker概要信息 : docker info
查看docker总体帮助文档 : docker --help
查看docker命令帮助文档 : docker 具体命令 --help

2.镜像命令

(1) docker images : 列举出本地主机上的镜像
    docker images -a : 列举出本地所有的镜像(含历史映像层)
    docker images -q : 只显示镜像ID
    REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
    tomcat                latest    c43980686364   7 days ago      475MB
    REPOSITORY : 表示镜像的仓库源
    TAG : 镜像的标签版本号
    IMAGE ID : 镜像ID
    CREATED : 镜像的创建时间
    SIZE : 镜像的大小
    同一仓库源可以有多个TAG版本,代表这个仓库源的不同的版本,我们使用REPOSITORY:TAG来定义不同的镜像。如果你不指定一个镜像的版本标签,例如你只使用ubuntu,docker将默认使用ubuntu:latest镜像。
(2)docker search 某个XXX镜像名字 : 搜索镜像
    docker search redis : 搜索redis镜像
    NAME                                DESCRIPTION                                     STARS       OFFICIAL   AUTOMATED
    redis                               Redis is an open source key-value store that…   12105     [OK]       
    bitnami/redis                       Bitnami Redis Docker Image                      257                  [OK]
    NAME : 镜像名称
    DESCRIPTION : 镜像说明
    STARS : 点赞数量
    OFFICIAL : 是否是官方的
    AUTOMATED : 是否是自动构建的
    docker search --limit 5 redis : 搜索点赞数量前5的redis镜像
(3)docker pull 某个XXX镜像名字 : 下载镜像
    docker pull mysql:5.6 : 下载版本号为5.6的mysql
    docker pull mysql : 下载最新版本号的mysql
(4)docker system df 查看镜像/容器/数据卷所占的空间
(5)docker rmi 某个XXX镜像名字ID : 删除镜像
    docker rmi mysql : 删除名字为mysql的镜像
    docker rmi dd3b2a5dcb48 : 删除镜像ID为dd3b2a5dcb48的镜像
    docker rmi -f mysql : 强制删除名字为mysql的镜像
    docker rmi -f $(docker images -qa) : 强制删除所有镜像

3.容器命令

(1)新建+启动容器 : docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    OPTIONS说明 : --name="容器新名字" : 为容器指定一个名称
                  -d : 后台运行容器并返回容器ID,也即启动守护式容器(后台运行)
                  -i : 以交互模式运行容器,通常与-t同时使用
                  -t : 为容器重新分配一个伪输入终端,通常与-i同时使用,也即启动交互式容器(前台有伪终端,等待交互)
                  -P : 随机端口映射,大写P
                  -p : 指定端口映射,小写p
     例如 : docker run -it centos /bin/bash
        参数说明 : -i : 交互式操作
                  -t : 终端
                  centos : centos镜像
                  /bin/bash : 放在镜像名后的是命令,这里我们是希望有个交互式shell,因此用的是/bin/bash。要退出终端,直接输入exit
(2)列出当前所有正在运行的容器 : docker ps [OPTIONS] 
    OPTIONS说明 : -a : 列出当前所有正在运行的容器 + 历史上运行过的
                 -l : 显示最近创建的容器
                 -n : 显示最近n个创建的容器
                 -q : 静默模式,只显示容器编号
(3)退出容器
    方式1 : exit -- run进去容器,exit退出,容器停止。
    方式2 : ctrl+p+q -- run进去容器,ctrl+p+q退出,容器不停止
(4)启动已停止运行的容器
    docker start 容器ID或者容器名
(5)重启容器
    docker restart 容器ID或者容器名
(6)停止容器
    docker stop 容器ID或者容器名
(7)强制停止容器
    docker kill 容器ID或者容器名
(8)删除已停止的容器
    docker rm 容器ID或者容器名 -- 只能删除已停止的容器
    docker rm -f 容器ID或者容器名 -- 强制删除容器,可以删除正在运行的容器
    一次性删除多个容器实例 : docker rm -f $(docker ps -a -q) 或者 docker ps -a -q | xargs docker rm  (慎用!!!)

4.启动守护式容器问题讲解

运行命令 docker run -d centos创建一个centos容器,然后使用命令docker ps -a进行查看,会发现容器已经退出的现象发生。发生该现象的原因是docker容器后台运行就必须要有一个前台进程,容器运行的命令如果不是那些一直挂起的命令(比如top,tail),容器就会自动退出的。这个是docker的机制问题,比如web容器以nginx为例,正常情况下,配置启动服务只需要启动相应的service即可。例如service nginx start,但是这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,这样的容器后台启动后会立即退出,因为它觉得它没事可做了。所以,最佳的解决方案是将要运行的程序以前台进程的形式运行,常见的就是命令行模式,表示还有操作交互。

5.重要命令组合应用(案例以redis 6.0.8镜像演示)

 有镜像才能创建容器,这是根本前提。
(1)redis前后台启动演示
前台交互式启动  
    docker run -it redis:6.0.8
    启动成功后按键按下ctrl+c退出交互式进程,容器也就直接退出了,一般不建议使用前台交互式启动redis。
后台守护式启动   
    docker run -d redis:6.0.8
    建议使用后台守护式启动redis,用命令docker exec -it redis容器的ID /bin/bash进行到redis容器的内部。
    进入到redis容器内部后,使用命令 redis-cli -p 6379进行redis方式的命令交互。
(2)查看容器日志
    docker logs 容器ID
(3)查看容器内运行的进程
    docker top 容器ID
(4)查看容器内部细节 
    docker inspect 容器ID
(5)进入正在运行的容器并以命令行交互 
    方式一 : docker exec -it 容器ID /bin/bash
    方式二 : docker attach 容器ID
    上述两者的区别,attach直接进入容器启动命令行终端,不会启动新的进程,用exit退出会导致容器停止。exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出不会导致容器停止。
    推荐使用docker exec命令进入容器,因为退出容器终端,不会导致容器的停止。
(6)从容器内拷贝文件到主机上
    docker cp 容器ID:容器内路径  目的主机路径
    docker cp ae95d8808d75:/tmp/a.txt ~/Desktop
(7)导入和导出容器
    export导出容器的内容流作为一个tar归档文件
      docker export 容器ID > 文件名.tar
      docker export ae95d8808d75 > ~/Desktop/abc.tar
    import从tar包中的内容创建一个新的文件系统再导入为镜像
      cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
      cat ~/Desktop/abc.tar | docker import - znptest/centos:3.0

6.小总结

attach : 当前shell下attach连接指定运行镜像 
build : 通过Dockerfile定制镜像
commit : 提交当前容器为新的镜像
cp : 从容器中拷贝指定文件或目录到宿主机中
create : 创建一个新的容器,同run,但不启动容器
diff : 查看docker容器变化
events : 从docker服务获取容器实时事件
exec : 在已存在的容器上运行命令
export : 导出容器的内容流作为一个tar归档文件
history : 展示一个镜像形成历史
images : 列出系统当前镜像
import : 从tar包中的内容创建一个新的文件系统镜像
info : 显示系统相关信息
inspect : 查看容器详细信息
kill : kill指定docker容器
load : 从一个tar包中加载一个镜像
login : 注册或者登录一个docker源服务器
logout : 从当前Docker registry退出
logs : 输出当前容器日志信息
port : 查看映射端口对应的容器内部源端口
pause : 暂停容器
ps : 列出容器列表
pull : 从docker镜像源服务器拉取指定镜像或者库镜像
push : 推送指定镜像或者库镜像至docker源服务器
restart : 重启运行的容器
rm : 移除一个或者多个容器
rmi : 移除一个或多个镜像【无容器使用该镜像才可删除,否则需删除相关容器才可继续或-f强制删除】
run : 创建一个新的容器并运行一个命令
save : 保存一个镜像为一个tar包
search : 在docker hub中搜索镜像
start : 启动容器
stop : 停止容器
tag : 给源中镜像打标签
top : 查看容器中运行的进程信息
unpause : 取消暂停容器
version : 查看docker 版本号
wait : 截取容器停止时的退出状态值

相关文章

网友评论

      本文标题:2.docker命令学习

      本文链接:https://www.haomeiwen.com/subject/inudedtx.html