您的当前位置:首页正文

Docker的常用命令总结

2021-03-04 来源:星星旅游
Docker的常⽤命令总结

⼀、普通指令启动 Docker

sudo systemctl start docker

停⽌ Docker

sudo systemctl stop docker

普通重启 Docker

sudo systemctl restart docker

修改配置后重启 Docker

sudo systemctl daemon-reloadsudo systemctl restart docker

查看版本

docker version

查看Docker 信息

docker info

Docker 帮助

docker --help

⼆、镜像命令

列出本机Docker上已经安装的镜像:

docker images

搜索Docker hub上⾯的镜像

# 普通搜索,以Tomcat为例docker search tomcat

# 搜索star⼤于50的镜像实例docker search -s 50 tomcat

从Docker Hub上⾯下载镜像

# 以下载tomcat为例

docker pull tomcat[:version]

删除本地的某⼀个镜像

# 以删除tomcat为例

docker rmi tomcat[:version]# 通过镜像ID删除docker rmi -f 镜像ID# 通过镜像ID删除多个

docker rmi -f 镜像名1:TAG 镜像名2:TAG # 删除全部

# docker images -qa : 获取所有镜像IDdocker rmi -f $(docker images -qa)

镜像打包与运⾏

#打包⼀个我们⾃⼰的 tomcat

docker commit -a jianghai -m=\"package my tomcat\" 要打包的镜像ID jianghai/tomcat:1.0# -a : 作者名称# -m : 打包信息

#启动我们⾃⼰打包⽣成的 tomcat

docker run -it -p 7700:8080 jianghai/tomcat:1.0

三、容器命令

启动容器

# 新建并进⼊容器,最后⼀个为本地容器的ID

docker run -it --name=\"rivercentos001\" 9f38484d220f # 为容器启⼀个名称 -name=\"新容器名称\"

# 后台运⾏容器,并返回容器ID,也就是启动守护⼠容器 -d

# 以交互模式运⾏容器,通常与-t同时使⽤. -i

# 为容器重新分配⼀个伪终端,通过与-i同时使⽤ -t

# 随机端⼝映射 [⼤写P] -P

# 端⼝映射 [⼩写P] -p

# 数据卷 加参数 ro:容器内的⽬录只读,不可写 -v /宿主机绝对路径⽬录:/容器内⽬录[:ro] 镜像名

查看当前正在运⾏的Docker 容器

docker ps# 参数

# 列出当前正在运⾏的以及历史上运⾏过的-a

# 显⽰最近创建的容器-l

# 显⽰最近创建的N个容器-n

# 静默模式,只显⽰容器编号-q

# 不截断输出--no-trunc

退出容器

# 退出并停⽌exit

# 容器不停⽌退出ctrl+P+Q

启动容器

docker start 容器ID或容器name

重启容器

docker restart 容器ID或容器name

停⽌

docker stop 容器ID或容器name

强制停⽌

docker kill 容器ID或容器name

删除容器

# 删除已经停⽌的容器

docker rm 容器ID或容器name

# 强制删除已经停⽌或正在运⾏的容器docker rm -f 容器ID或容器name ⼀次性删除所有正在运⾏的容器docker rm -f $(docker ps -qa)

重新进⼊容器

# 第⼀种⽅式

docker attach 容器ID或容器名称

# 第⼆种⽅式{隔⼭打⽜式,在宿主机向容器发送命令并获取结果}docker exec -t 容器ID或容器名称 ls# 列出⽂件列表# 交互

docker exec -it rivertomcat /bin/bash

从容器内拷贝⽂件到宿主机

docker cp 容器ID或容器名称:/⽂件路径与⽂件名 宿主机地址 # 例,拷贝容器river的aaa⽂件夹下的a.txt到宿主机的当前位置

docker cp river:/aaa/a.txt .

四、⽇志命令

docker logs -f -t --tail 10 容器ID或容器名称# 加⼊的时间戳-t

# 跟随最新的⽇志打印-f

# 输出最后⼏⾏的⽇志--tail ⾏数

# 启动⼀个centos,并且每两秒在Console输出⼀个Hello jianghai

docker run -d --name river centos /bin/sh -c \"while true;do echo hello jianghai;sleep 2;done\"# 查看最后10⾏的⽇志

docker logs -f -t --tail 10 river#查看容器内的进程

docker top 容器ID或容器名称

五、DockerFile解析

FROM 基础镜像,当前新镜像是基于哪个镜像的。MAINTAINER 镜像维护者的姓名和邮箱地址。RUN 容器构建时需要运⾏的命令。EXPOSE 当前容器对外暴露出的端⼝。

WORKDIR 指定在创建容器后,终端默认登陆的进来⼯作⽬录,也不是运⾏并登录进来的当前⽬录位置。ENV ⽤来构建镜像过程中设置环境变量。

ADD 将宿主机⽬录下的⽂件拷贝进镜像且ADD命令会⾃动处理URL和解压tar压缩包。COPY 类似ADD,但只是复制,不带解压压缩包的功能。VOLUME 容器数据卷,⽤于数据保存和持久化⼯作。

CMD 指定⼀个容器启动时要运⾏的命令,DockerFile中可以有多个CMD指令,但只有最后⼀个会⽣效执⾏。ENTRYPOINT

指定⼀个容器启动时要运⾏的命令

ENTRYPOINT的作⽤和CMD⼀样,都是在指定容器启动程序及参数

相当于CMD的升级版本,CMD只能执⾏⼀条命令,运⾏时如果加⼀些参数是不⾏的.但如果把CMD替换成ENTRYPOINT就可以在Run镜像的时候在尾部追回指令.

简单的说如果Run镜像的时候追回了命令,CMD会⽤追回的覆盖掉旧的,ENTRYPOINT会追回执⾏。ONBUILD 当构建⼀个被继承的DockerFile时运⾏命令,⽗镜像在被⼦继承后⽗镜像的onbuild被触发。

⼀、什么是Docker

Docker 是⼀个开源的应⽤容器引擎,基于 Go 语⾔ 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应⽤以及依赖包到⼀个轻量级、可移植的容器中,然后发布到任何流⾏的 Linux 机器上,也可以实现虚拟化。容器是完全使⽤沙箱机制,相互之间不会有任何接⼝(类似 iPhone 的 app),更重要的是容器性能开销极低。Docker 属于 Linux 容器的⼀种封装,提供简单易⽤的容器使⽤接⼝。它是⽬前最流⾏的 Linux 容器解决⽅案。Docker 将应⽤程序与该程序的依赖,打包在⼀个⽂件⾥⾯。运⾏这个⽂件,就会⽣成⼀个虚拟容器。程序在这个虚拟容器⾥运⾏,就好像在真实的物理机上运⾏⼀样。有了 Docker,就不⽤担⼼环境问题。⼆、Docker与虚拟机⽐较

作为⼀种轻量级的虚拟化⽅式,Docker在运⾏应⽤上跟传统的虚拟机⽅式相⽐具有显著优势:Docker容器很快,启动和停⽌可以在秒级实现,这相⽐传统的虚拟机⽅式要快得多。Docker容器对系统资源需求很少,⼀台主机上可以同时运⾏数千个Docker容器。

Docker通过类似Git的操作来⽅便⽤户获取、分发和更新应⽤镜像,指令简明,学习成本较低。Docker通过Dockerfile配置⽂件来⽀持灵活的⾃动化创建和部署机制,提⾼⼯作效率。

三、Docker 的架构

Docker 使⽤客户端-服务器 (C/S) 架构模式,使⽤远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于⾯向对象编程中的对象与类。Docker ⾯向对象容器 对象镜像 类

Docker 镜像(Images)

Docker 镜像是⽤于创建 Docker 容器的模板。Docker 容器(Container)

容器是独⽴运⾏的⼀个或⼀组应⽤。Docker 客户端(Client)Docker 主机(Host)

⼀个物理或者虚拟的机器⽤于执⾏ Docker 守护进程和容器。Docker 仓库(Registry)

Docker 仓库⽤来保存镜像,可以理解为代码控制中的代码仓库。

Docker Machine

Docker Machine是⼀个简化Docker安装的命令⾏⼯具,通过⼀个简单的命令⾏即可在相应的平台上安装Docker,⽐如VirtualBox、 DigitalOcean、Microsoft Azure。四、在Linux系统中安装Docker1、Ubuntu Docker 安装

Docker ⽀持以下的 Ubuntu 版本:

Ubuntu Precise 12.04 (LTS)Ubuntu Trusty 14.04 (LTS)Ubuntu Wily 15.10其他更新的版本……

前提条件

Docker 要求 Ubuntu 系统的内核版本⾼于 3.10 ,查看本页⾯的前提条件来验证你的 Ubuntu 版本是否⽀持 Docker。通过 uname -r 命令查看你当前的内核版本runoob@runoob:~$ uname -r

输⼊当前⽤户的密码后,就会下载脚本并且安装Docker及依赖包。

安装完成后有个提⽰:

If you would like to use Docker as a non-root user, you should now consider adding your user to the \"docker\" group with something like: sudo usermod -aG docker runoob

Remember that you will have to log out and back in for this to take effect!

当要以⾮root⽤户可以直接运⾏docker时,需要执⾏ sudo usermod -aG docker runoob 命令,然后重新登陆,否则会有如下报错

2、启动docker 后台服务

runoob@runoob:~$ sudo service docker start3、测试运⾏hello-world

新版的 Docker 使⽤ /etc/docker/daemon.json(Linux) 或者 %programdata%\\docker\\config\\daemon.json(Windows) 来配置 Daemon。请在该配置⽂件中加⼊(没有该⽂件的话,请先建⼀个):{

\"registry-mirrors\": [\"http://hub-mirror.c.163.com\"]}

2、CentOS Docker 安装Docker⽀持以下的CentOS版本:

CentOS 7 (64-bit)

CentOS 6.5 (64-bit) 或更⾼的版本前提条件

⽬前,CentOS 仅发⾏版本中的内核⽀持 Docker。

Docker 运⾏在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。

Docker 运⾏在 CentOS-6.5 或更⾼的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更⾼版本。使⽤ yum 安装(CentOS 7下)

Docker 要求 CentOS 系统的内核版本⾼于 3.10 ,查看本页⾯的前提条件来验证你的CentOS 版本是否⽀持 Docker 。通过 uname -r 命令查看你当前的内核版本[root@runoob ~]# uname -r 3.10.0-327.el7.x86_64

安装 Docker

从 2017 年 3 ⽉开始 docker 在原来的基础上分为两个分⽀版本: Docker CE 和 Docker EE。Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使⽤。本⽂介绍 Docker CE 的安装使⽤。移除旧的版本:

$ sudo yum remove docker \\docker-client \\

docker-client-latest \\docker-common \\docker-latest \\

docker-latest-logrotate \\docker-logrotate \\docker-selinux \\

docker-engine-selinux \\docker-engine

安装⼀些必要的系统⼯具:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2添加软件源信息:sudo yum makecache fast安装 Docker-ce:

sudo yum -y install docker-ce启动 Docker 后台服务sudo systemctl start docker测试运⾏ hello-world

[root@runoob ~]# docker run hello-world

由于本地没有hello-world这个镜像,所以会下载⼀个hello-world的镜像,并在容器内运⾏。使⽤脚本安装 Docker

1、使⽤ sudo 或 root 权限登录 Centos。2、确保 yum 包更新到最新。$ sudo yum update

3、执⾏ Docker 安装脚本。4、启动 Docker 进程。

sudo systemctl start docker

5、验证 docker 是否安装成功并在容器中执⾏⼀个测试的镜像。$ sudo docker run hello-worlddocker ps

到此,Docker 在 CentOS 系统的安装完成。

新版的 Docker 使⽤ /etc/docker/daemon.json(Linux) 或者 %programdata%\\docker\\config\\daemon.json(Windows) 来配置 Daemon。请在该配置⽂件中加⼊(没有该⽂件的话,请先建⼀个)五、Docker常⽤命令1、镜像操作1、搜索镜像

可使⽤docker search 命令搜索存放在Docker Hub中的镜像docker search java2、下载镜像docker pull java3、列出镜像docker images 4、删除本地镜像docker rm java2、容器操作1、新建并启动容器

docker run

它有很多选项,可使⽤docker run –help 查看选项常⽤的选项有:

-d选项:表⽰后台运⾏-P选项:随机端⼝映射

-p选项:指定端⼝映射,有以下四种格式。ip:hostPort:containerPortip::containerPort

hostPort:containerPortcontainerPort⽰例:2、列出容器docker ps 3、停⽌容器

docker stop 容器ID/容器名称 4、强制停⽌容器

docker kill 容器ID/容器名称5、启动已停⽌的容器

docker start 容器ID/容器名称6、进⼊容器

某场景下,可能需要进⼊运⾏中的容器。

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]⼀般进⼊容器的⽅式为:

docker exec -it 0f2f3885c9a0 /bin/bash

7、删除容器

使⽤docker rm命令即可删除指定容器。docker rm 容器ID/容器名称8、创建容器

有时候我们需要创建⼀个容器,但并不马上启动它,后⾯需要时,以start启动docker create -it nginx暂停容器

9、暂停⼀个容器,⽅便 commitdocker pause CONTAINER查看容器或者镜像的详细信息10、查看容器或者镜像的详细信息

docker inspect六、补充命令:

1、docker ps:查看当前运⾏的容器2、docker ps -a:查看全部 容器

3、docker images:查看所有拉取到的镜像

4、docker pull 镜像名:版本号 :拉取docker hub中的镜像,如果不指定镜像名则为最新版本的镜像5、docker rm 容器名:移除镜像

6、docker search 镜像名:搜索镜像7、docker rmi 镜像名:删除镜像

8、docker run 镜像名:版本号 :启动镜像作为容器,可以带有以下参数9、docker rename 旧镜像名 新镜像名:镜像命名

-p 主机端⼝:容器端⼝ ,将主机端⼝映射到容器的端⼝-P 随机端⼝映射-d 后台运⾏

--name 指定容器名-e 指定运⾏参数

10、docker exec -it 容器名 /bin/bash :进⼊容器内部

11、docker inspect 容器名:查看容器详细情况,包括主机内ip地址12、docker-compose up -d 运⾏docker-compose⽂件,启动编排好的服务七、使⽤Docker创建Redis容器1、拉取Redis镜像docker pull redis:3.22、后台启动Redis

因篇幅问题不能全部显示,请点此查看更多更全内容