菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
76
0

Docker的常用命令总结

原创
05/13 14:22
阅读数 39803

一、普通指令

启动 Docker

sudo systemctl start docker

停止 Docker

sudo systemctl stop docker

普通重启 Docker

sudo systemctl restart docker

修改配置后重启 Docker

sudo systemctl daemon-reload
sudo 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 : 获取所有镜像ID
docker 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 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。

Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker 仓库(Registry)

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

Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

 

Docker Machine

Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

四、在Linux系统中安装Docker
1、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
1、获取最新版本的 Docker 安装包
runoob@runoob:~$ wget -qO- https://get.docker.com/ | sh


输入当前用户的密码后,就会下载脚本并且安装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 start


3、测试运行hello-world

runoob@runoob:~$ docker run hello-world
镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。

新版的 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-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 缓存:

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 安装脚本。

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
执行这个脚本会添加 docker.repo 源并安装 Docker。

4、启动 Docker 进程。

sudo systemctl start docker
5、验证 docker 是否安装成功并在容器中执行一个测试的镜像。

$ sudo docker run hello-world
docker ps
到此,Docker 在 CentOS 系统的安装完成。

镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。

新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。

请在该配置文件中加入(没有该文件的话,请先建一个)

五、Docker常用命令
1、镜像操作

1、搜索镜像

可使用docker search 命令搜索存放在Docker Hub中的镜像

docker search java
2、下载镜像

docker pull java
3、列出镜像

docker images
4、删除本地镜像

docker rm java
2、容器操作

1、新建并启动容器

docker run
它有很多选项,可使用docker run –help 查看选项

常用的选项有:

-d选项:表示后台运行
-P选项:随机端口映射
-p选项:指定端口映射,有以下四种格式。
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
示例:

docker run -d -p 91:80 nginx
-d #后台运行
-p 宿主机端口:容器端口 #开放容器端口到宿主机端口
访问http://Docker 宿主机 IP:91/,将会看到nginx的欢迎页面。

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、暂停一个容器,方便 commit

docker 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.2

2、后台启动Redis

docker run -p 6378:6379 -v $PWD/data:/data -d redis:3.2 redis-server --appendonly yes
八、参考资料
1、官网:https://www.docker.com/
2、Docker入门教程 http://dockone.io/article/111
3、Docker_百度百科 http://baike.baidu.com/view/11854949.htm
4、史上最全Docker资料集粹 http://special.csdncms.csdn.net/BeDocker/
5、Docker - 话题精华 - 知乎 http://www.zhihu.com/topic/19950993/top-answers
6、docker 简明教程 | 简果网 http://www.simapple.com/docker-tutorial
7、如何使用Dockerfile构建镜像 http://blog.csdn.net/qinyushuang/article/details/43342553
8、Dockerfile reference - Docker https://docs.docker.com/engine/reference/builder/
9、菜鸟教程-Docker教学 http://www.runoob.com/docker/docker-tutorial.html
10、 灰寨小学–python小陈的博客 https://blog.csdn.net/xiaochendefendoushi/article/details/80979905

原文链接:https://blog.csdn.net/pbrlovejava/article/details/80357744

发表评论

0/200
76 点赞
0 评论
收藏