目录

  • 帮助命令
  • 镜像命令
    • docker images
    • docker search
    • docker pull
    • docker rmi
  • 容器命令
    • docker pull
    • docker run
    • docker ps
    • 退出容器:
    • 启动守护式容器
    • 查看容器日志
    • 进入正在运行的容器并以命令行交互
  • Docker镜像
    • UnionFS
    • Docker镜像加载原理:
    • Docker镜像commit操作
  • Docker常用命令汇总

帮助命令

docker version :查看Docker 的版本信息
docker info:查看Docker 的具体详细信息

[root@bigdata01 ~]# docker version
Client: Docker Engine - CommunityVersion:           19.03.12API version:       1.40Go version:        go1.13.10Git commit:        48a66213feBuilt:             Mon Jun 22 15:46:54 2020OS/Arch:           linux/amd64Experimental:      falseServer: Docker Engine - CommunityEngine:Version:          19.03.12API version:      1.40 (minimum version 1.12)Go version:       go1.13.10Git commit:       48a66213feBuilt:            Mon Jun 22 15:45:28 2020OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          1.2.13GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429runc:Version:          1.0.0-rc10GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dddocker-init:Version:          0.18.0GitCommit:        fec3683

镜像命令

docker images

docker images:列出本地主机上的镜像

[root@bigdata01 ~]# docker images --helpUsage:  docker images [OPTIONS] [REPOSITORY[:TAG]]List imagesOptions:-a, --all             Show all images (default hides intermediate images)--digests         Show digests-f, --filter filter   Filter output based on conditions provided--format string   Pretty-print images using a Go template--no-trunc        Don't truncate output-q, --quiet           Only show numeric IDs

OPTIONS说明:

  • -a :列出本地所有的镜像(含中间映像层)
  • -q :只显示镜像ID。
  • –digests :显示镜像的摘要信息
  • –no-trunc :显示完整的镜像信息
  • -qa:列出本地所有镜像只显示镜像ID

docker search

含义:从https://hub.docker.com找寻镜像,真正拉取的时候从配置的镜像仓库拉取
使用: docker search [OPTIONS] 镜像名字

OPTIONS说明:

  • –no-trunc : 显示完整的镜像描述
  • -s : 列出收藏数不小于指定值的镜像。
  • –automated : 只列出 automated build类型的镜像;

docker pull

docker pull 某个XXX镜像名字
docker pull 镜像名字[:TAG]


docker rmi

docker rmi 某个XXX镜像名字ID
删除单个:docker rmi -f 镜像ID
删除多个:docker rmi -f 镜像名1:TAG 镜像名2:TAG
删除全部:docker rmi -f $(docker images -qa)


容器命令

docker pull

有镜像才能创建容器,这是根本前提(下载一个CentOS镜像演示)
docker pull centos

docker run

新建并启动容器:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

 OPTIONS说明(常用):有些是一个减号,有些是两个减号--name="容器新名字": 为容器指定一个名称;
-d: 后台运行容器,并返回容器ID,也即启动守护式容器;
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P: 随机端口映射;
-p: 指定端口映射,有以下四种格式ip:hostPort:containerPortip::containerPorthostPort:containerPortcontainerPort
#使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
docker run -it centos /bin/bash

创建并运行一个容器,并且进入该容器里面

[root@bigdata01 ~]# docker run -it centos
[root@1e4dff5a3236 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@1e4dff5a3236 /]#

docker ps

docker ps [OPTIONS]:列出当前所有正在运行的容器

OPTIONS说明(常用):-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
--no-trunc :不截断输出。

退出容器:

  • exit 容器停止退出
  • ctrl+P+Q 容器不停止退出

启动容器:docker start 容器ID或者容器名

重启容器:docker restart 容器ID或者容器名

停止容器:docker stop 容器ID或者容器名

强制停止容器:docker kill 容器ID或者容器名

删除已停止的容器:docker rm 容器ID

一次性删除多个容器:docker rm -f $(docker ps -a -q)


启动守护式容器

启动守护式容器docker run -d 容器名

使用镜像centos:latest以后台模式启动一个容器

docker run -d centos

问题:然后docker ps -a 进行查看, 会发现容器已经退出,很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。

这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的service即可。例如service nginx start但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,这样的容器后台启动后,会立即自杀因为他觉得他没事可做了.所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行


查看容器日志

docker logs -f -t --tail 容器ID:查看容器日志

Optons:

  • -t 是加入时间戳
  • -f 跟随最新的日志打印
  • –tail 数字 显示最后多少条

docker top 容器ID :查看容器内运行的进程

[root@bigdata01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
1e4dff5a3236        centos              "/bin/bash"         7 minutes ago       Up 7 minutes                            silly_euclid
[root@bigdata01 ~]# docker top 1e4dff5a3236
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                5614                5598                0                   15:34               pts/0               00:00:00            /bin/bash

docker inspect 容器ID:查看容器内部细节(以Json串的形式显示出来)

[root@bigdata01 ~]# docker inspect 1e4dff5a3236
[{"Id": "1e4dff5a323662d920befbcc8fd4971ce071931cb760ac1ef3ab854ee259aec3","Created": "2020-08-09T07:34:25.94095475Z","Path": "/bin/bash","Args": [],"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 5614,"ExitCode": 0,"Error": "","StartedAt": "2020-08-09T07:34:26.245232765Z","FinishedAt": "0001-01-01T00:00:00Z"},。。。。。。。。。。。。

进入正在运行的容器并以命令行交互

docker exec -it 容器ID bashShell

重新进入docker attach 容器ID

[root@bigdata01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
1e4dff5a3236        centos              "/bin/bash"         12 minutes ago      Up 12 minutes                           silly_euclid
[root@bigdata01 ~]# docker exec -it 1e4dff5a3236 /bin/bash
[root@1e4dff5a3236 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@1e4dff5a3236 /]# exit
exit
[root@bigdata01 ~]# docker attach 1e4dff5a3236
[root@1e4dff5a3236 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

上述两个区别:

  • attach 直接进入容器启动命令的终端,不会启动新的进程
  • exec 是在容器中打开新的终端,并且可以启动新的进程

从容器内拷贝文件到主机上:docker cp 容器ID:容器内路径 目的主机路径

[root@bigdata01 ~]# docker exec -it 85b4cb80e68e /bin/bash
[root@85b4cb80e68e /]# cd /tmp/
[root@85b4cb80e68e tmp]# ls -al
total 8
drwxrwxrwt 7 root root  145 Jun 11 02:35 .
drwxr-xr-x 1 root root   18 Aug  9 07:48 ..
drwxrwxrwt 2 root root    6 Jun 11 02:35 .ICE-unix
drwxrwxrwt 2 root root    6 Jun 11 02:35 .Test-unix
drwxrwxrwt 2 root root    6 Jun 11 02:35 .X11-unix
drwxrwxrwt 2 root root    6 Jun 11 02:35 .XIM-unix
drwxrwxrwt 2 root root    6 Jun 11 02:35 .font-unix
-rwx------ 1 root root 1379 Jun 11 02:35 ks-script-585nin8f
-rwx------ 1 root root  671 Jun 11 02:35 ks-script-z6zw_bhq
[root@85b4cb80e68e tmp]# exit
exit
[root@bigdata01 ~]# docker cp 85b4cb80e68e:/tmp/ks-script-585nin8f /root
[root@bigdata01 ~]# cd /root/
[root@bigdata01 ~]# ls
app  change.sh  Could  data  ks-script-585nin8f  lib  logs  script  shell  software  sourcecode  tmp

Docker镜像

UnionFS

UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录

Docker镜像加载原理:

docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。
bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引导加载kernel, Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。

rootfs (root file system) ,在bootfs之上。包含的就是典型 Linux 系统中的 /dev, /proc, /bin, /etc 等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等。

平时我们安装进虚拟机的CentOS都是好几个G,为什么docker这里才200M??

对于一个精简的OS,rootfs可以很小,只需要包括最基本的命令、工具和程序库就可以了,因为底层直接用Host的kernel,自己只需要提供 rootfs 就行了。由此可见对于不同的linux发行版, bootfs基本是一致的, rootfs会有差别, 因此不同的发行版可以公用bootfs。

分层镜像:以我们的pull为例,在下载的过程中我们可以看到docker的镜像好像是在一层一层的在下载

特点:Docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。


Docker镜像commit操作

docker commit提交容器副本使之成为一个新的镜像
语法:docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
docker run -it -p 8080:8080 tomcat

Option:

  • -p 主机端口:docker容器端口(小写p)
  • -P 随机分配端口(大写P)
  • i:交互
  • t:终端

故意删除上一步镜像生产tomcat容器的文档

启动我们的新镜像并和原来的对比

# 查看docker进程
[root@bigdata01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
af1a3dbdb0bd        tomcat              "catalina.sh run"   36 minutes ago      Up 36 minutes       0.0.0.0:8088->8080/tcp   cranky_meninsky
# 进入docker交互式命令行
[root@bigdata01 ~]# docker exec -it af1a3dbdb0bd /bin/bash
root@af1a3dbdb0bd:/usr/local/tomcat# ls
BUILDING.txt     LICENSE  README.md      RUNNING.txt  conf  logs            temp     webapps.dist
CONTRIBUTING.md  NOTICE   RELEASE-NOTES  bin          lib   native-jni-lib  webapps  workroot@af1a3dbdb0bd:/usr/local/tomcat# cd webapps
# 移动docs文件夹
root@af1a3dbdb0bd:/usr/local/tomcat/webapps# mv docs/ docs.bak
[root@bigdata01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
af1a3dbdb0bd        tomcat              "catalina.sh run"   41 minutes ago      Up 41 minutes       0.0.0.0:8088->8080/tcp   cranky_meninsky
# 提交操作
[root@bigdata01 ~]# docker commit -a "nice" -m "mytomcat without docs" af1a3dbdb0bd nice/mytomcat
sha256:f183c09f98b7edcaa041394ae9348a4c9d6dcfcf3221c35769213324e1e7cbbf
# 查看镜像列表
[root@bigdata01 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nice/mytomcat       latest              f183c09f98b7        4 seconds ago       652MB
tomcat              latest              2ae23eb477aa        3 days ago          647MB
nginx               latest              08393e824c32        4 days ago          132MB
centos              latest              831691599b88        7 weeks ago         215MB
hello-world         latest              bf756fb1ae65        7 months ago        13.3kB
[root@bigdata01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
af1a3dbdb0bd        tomcat              "catalina.sh run"   42 minutes ago      Up 42 minutes       0.0.0.0:8088->8080/tcp   cranky_meninsky
# 停止原来的tomcat
[root@bigdata01 ~]# docker stop af1a3dbdb0bdaf1a3dbdb0bd
# 查看镜像
[root@bigdata01 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nice/mytomcat       latest              f183c09f98b7        58 seconds ago      652MB
tomcat              latest              2ae23eb477aa        3 days ago          647MB
nginx               latest              08393e824c32        4 days ago          132MB
centos              latest              831691599b88        7 weeks ago         215MB
hello-world         latest              bf756fb1ae65        7 months ago        13.3kB
# 运行新的镜像
[root@bigdata01 ~]# docker run -it -p 8080:8080 f183c09f98b7

Docker常用命令汇总

Command 释义 含义
attach Attach to a running container 当前 shell 下 attach 连接指定运行镜像
build Build an image from a Dockerfile 通过 Dockerfile 定制镜像
commit Create a new image from a container changes 提交当前容器为新的镜像
cp Copy files/folders from the containers filesystem to the host path 从容器中拷贝指定文件或者目录到宿主机中
create Create a new container 创建一个新的容器,同 run,但不启动容器
diff Inspect changes on a container’s filesystem 查看 docker 容器变化
events Get real time events from the server 从 docker 服务获取容器实时事件
exec Run a command in an existing container 在已存在的容器上运行命令
export Stream the contents of a container as a tar archive 导出容器的内容流作为一个 tar 归档文件[对应 import ]
history Show the history of an image 展示一个镜像形成历史
images List images 列出系统当前镜像
import Create a new filesystem image from the contents of a tarball 从tar包中的内容创建一个新的文件系统映像[对应export]
info Display system-wide information 显示系统相关信息
inspect Return low-level information on a container 查看容器详细信息
kill Kill a running container kill 指定 docker 容器
load Load an image from a tar archive 从一个 tar 包中加载一个镜像[对应 save]
login Register or Login to the docker registry server 注册或者登陆一个 docker 源服务器
logout Log out from a Docker registry server 从当前 Docker registry 退出
logs Fetch the logs of a container 输出当前容器日志信息
port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT 查看映射端口对应的容器内部源端口
pause Pause all processes within a container 暂停容器
ps List containers 列出容器列表
pull Pull an image or a repository from the docker registry server 从docker镜像源服务器拉取指定镜像或者库镜像
push Push an image or a repository to the docker registry server 推送指定镜像或者库镜像至docker源服务器
restart Restart a running container 重启运行的容器
rm Remove one or more containers 移除一个或者多个容器
rmi Remove one or more images 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
run Run a command in a new container 创建一个新的容器并运行一个命令
save Save an image to a tar archive 保存一个镜像为一个 tar 包[对应 load]
search Search for an image on the Docker Hub 在 docker hub 中搜索镜像
start Start a stopped containers 启动容器
stop Stop a running containers 停止容器
tag Tag an image into a repository 给源中镜像打标签
top Lookup the running processes of a container 查看容器中运行的进程信息
unpause Unpause a paused container 取消暂停容器
version Show the docker version information 查看 docker 版本号
wait Block until a container stops, then print its exit code 截取容器停止时的退出状态值

Docker 命令基础及进阶相关推荐

  1. Docker命令基础 简洁版本

    1 介绍 1.1 环境查看+安装 1.官方教程 2.确定为Centos7以上版本 # 系统内核是 3.10 以上的 [root@huawei ~]# uname -r 3.10.0-1160.45.1 ...

  2. 关于码云的一些基本知识_快速掌握Git命令基础知识 进阶必备哦

    最近在头条工作之余,遇到Git上面一些问题,趁这次的机会,补一补Git基础知识,纯属个人学习笔记,单纯简单,针对性强,如果对你有帮助那将是对我最大的鼓励,闲话不多说,立即进入正题,和我一起徜徉在Git ...

  3. Docker基础、进阶笔记,为k8s的学习预预热

    标题 Docker基础.进阶笔记,为k8s的学习预预热 笔记来源于视频: 狂神docker基础篇 狂神docker进阶篇 笔记中图片有些取自于:这位博主的两篇docker笔记中的一些图片 百度云笔记工 ...

  4. Docker镜像基础命令

    Docker镜像基础命令 给root用户设置密码 Sudo -s à passwd root à su 更新apt的镜像源地址:阿里云 https://opsx.alibaba.com/mirror ...

  5. 狂神 Docker学习笔记 从基础到进阶 一步到位

    Docker 学习笔记 感谢狂神的分享.附上B站视频链接. https://www.bilibili.com/video/BV1og4y1q7M4?from=search&seid=92256 ...

  6. docker镜像简介和docker常用基础命令

    docker镜像简介和docker常用基础命令 文章目录 docker镜像简介和docker常用基础命令 1:docker镜像概述 1.1:什么是docker镜像 1.2:docker镜像的获取方式 ...

  7. Docker基础与进阶梳理(干货满满)

    目录 一,简介 1.1 什么是虚拟化 1.2 什么是 Docker 1.3 为什么选择Docker? 1.4 容器与虚拟机的比较 二,Docker 组件 2.1 Docker 服务器与客户端 2.2 ...

  8. 什么是docker及docker的基础命令

    文章目录 1. 简介 1.1 特性 1.2 组件 1.3 版本 2. 安装部署 2.1 安装说明 2.2 centos7安装 2.3 Debian&Ubuntu 3. 运行docker 3. ...

  9. Docker 之 基础篇(安装、卸载、阿里云镜像加速、常用命令、发布、应用安装)

    前言 这一章开始,我们就开始记录Docker了,它也是开发中很实用的一项技术,希望通过学习能够有一个初步的了解和掌握,在后续的工作中,可以快速上手,熟练运用,熟能生巧. 一.简介 1.是什么 Dock ...

最新文章

  1. ISME:中国林科院亚林所袁志林组揭示盐碱地根系深色有隔内生真菌种群基因岛的正向选择机制...
  2. Algorithm Course Review(7.1)
  3. 【论文解读】DeepFM论文总结
  4. z最大子数组c语言,关于最大子数组问题
  5. 开发中最常使用到那些设计模式?
  6. 351E. Jeff and Permutation
  7. 【渝粤教育】国家开放大学2018年春季 0043-22T计算机文化 参考试题
  8. wpf listview 使用
  9. php网页表格样式,HTML5制作表格样式
  10. linux中的socket编程,linux中socket编程
  11. Python读写文件(附完整模块化代码)
  12. mysql:字符串拼接
  13. UVM糖果爱好者教程 - 22. Phasing
  14. 证书与签名(二):数字签名流程与签名认证流程
  15. cad2012打开后闪退_打开CAD2012出现闪退问题的解决方法
  16. C语言利用ASCII码表统计字符串每个字符出现的次数
  17. TensorRT 4 基本介绍及TensorFlow模型转化Uff格式导入(二)
  18. 面向对象程序设计实训——万年历
  19. 一种改进的进化模型和混沌优化的萤火虫算法-附代码
  20. 亿速云服务器 如何上传文件,使用MultipartFile怎么实现一个文件上传功能

热门文章

  1. 一键加速,华为云CDN加速满足多行业需要
  2. 南开大学张昊计算机,纽约南开校友会隆重举办纪念南开大学建校100周年庆典
  3. 别出心裁的Linux系统调用学习法
  4. [转载] 晓说——第14期:揭秘战争秘闻 朝鲜战争62年祭(上)
  5. 微信二维码无法下载APK解决方案
  6. python如何将图片分成不同颜色的区域——三通道彩色图片
  7. vue 、前端rsa加密遇到的问题,message too long for RSA
  8. 公司债务法人代表有义务还吗?
  9. spring上传文件
  10. 音视频系列2:ffmpeg将H.264解码为RGB