Docker系列教程05 容器常用命令
https://mp.weixin.qq.com/s?__biz=MzI4ODQ3NjE2OA==&mid=2247483890&idx=1&sn=2721f08624e6de33b3ae56be2b117006&chksm=ec3c9c95db4b1583529fc6542093367a97ffe6173c030d896f9ae9c5451db03ce879bdc6cfb1&scene=0&key=ce207f8008531ca887da8b19de76917f24b997afa14541abdaae289b68fb156f0d132c95d1d25ce4a58f522ee7362855474f6b981969896f05cdefaac47a05265af23cd619b2532ade2f615bc319096c&ascene=1&uin=MjgwMTEwNDQxNg%3D%3D&devicetype=Windows-QQBrowser&version=6103000b&lang=zh_CN&pass_ticket=MgvQRUu0nmoO%2BI9Uw2bH%2B4Wm%2Fkqz84N69GSIo%2F0hr5IfWaJBp8C9kN09S7gI99VP
本节我们来讨论Docker容器的常用命令。
新建并启动容器[重要]
使用以下 docker run
命令即可新建并启动一个容器。该命令是我们最常用的命令了,它有很多选项,下面笔者列举一些常用的选项。
① -d选项:表示后台运行
② -P选项:随机端口映射
③ -p选项:指定端口映射,有以下四种格式。
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
④ --network选项:指定网络模式,该选项有以下可选参数:
--network=bridge: 默认选项,表示连接到默认的网桥。
--network=host:容器使用宿主机的网络。
--network=container:NAMEorID:告诉Docker让新建的容器使用已有容器的网络配置。
--network=none:不配置该容器的网络,用户可自定义网络配置。
示例1:
docker run java /bin/echo 'Hello World'
这样终端会打印Hello World的字样,跟在本地直接执行 /bin/echo'Hello World'
一样。
示例2:
docker run -d -p 91:80 nginx
这样就能启动一个Nginx容器。在本例中,我们为docker run添加了两个参数,含义如下:
-d # 后台运行
-p 宿主机端口:容器端口 # 开放容器端口到宿主机端口
访问http://Docker宿主机IP:91/ ,将会看到如图12-3的界面:
图12-3 Nginx首页
TIPS
需要注意的是,使用docker run命令创建容器时,会先检查本地是否存在指定镜像。如果本地不存在该名称的镜像,Docker就会自动从Docker Hub下载镜像并启动一个Docker容器。
列出容器[重要]
使用 docker ps
命令即可列出运行中的容器。执行该命令后,可看到类似于如下的表格。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
784fd3b294d7 nginx "nginx -g 'daemon off" 20 minutes ago Up 2 seconds 443/tcp, 0.0.0.0:91->80/tcp backstabbing_archimedes
如需列出所有容器(包括已停止的容器),可使用-a参数。
该表格包含了七列,含义如下:
① CONTAINER_ID:表示容器ID。
② IMAGE:表示镜像名称。
③ COMMAND:表示启动容器时运行的命令。
④ CREATED:表示容器的创建时间。
⑤ STATUS:表示容器运行的状态。Up表示运行中,Exited表示已停止。
⑥ PORTS:表示容器对外的端口号。
⑦ NAMES:表示容器名称。该名称默认由Docker自动生成,也可使用docker run命令的--name选项自行指定。
命令格式:
docker ps [OPTIONS]
参数:
Name, shorthand | Default | Description |
---|---|---|
--all,-a |
false |
列出所有容器,包括未运行的容器,默认只展示运行的容器 |
--filter,-f |
根据条件过滤显示内容 | |
--format |
通过Go语言模板文件展示镜像 | |
--last,-n |
-1 |
显示最近创建n个容器(包含所有状态) |
--latest,-l |
false |
显示最近创建的容器(包含所有状态) |
--no-trunc |
false |
不截断输出 |
--quiet,-q |
false |
静默模式,只展示容器的编号 |
--size,-s |
false |
显示总文件大小 |
示例:
docker ps -n 5
docker ps -a -q
停止容器[重要]
使用 docker stop
命令,即可停止容器。
命令格式:
docker stop [OPTIONS] CONTAINER [CONTAINER...]
参数:
Name, shorthand | Default | Description |
---|---|---|
--time,-t |
10 |
强制杀死容器前等待的时间,单位是秒 |
示例:
docker stop 784fd3b294d7
其中 784fd3b294d7
是容器ID,当然也可使用 docker stop容器名称
来停止指定容器。
强制停止容器[重要]
可使用 docker kill
命令停止一个或更多运行着的容器。
命令格式:
docker kill [OPTIONS] CONTAINER [CONTAINER...]
参数:
Name, shorthand | Default | Description |
---|---|---|
--signal,-s |
KILL |
向容器发送一个信号 |
例如:
docker kill 784fd3b294d7
启动已停止的容器[重要]
使用 docker run
命令,即可新建并启动一个容器。对于已停止的容器,可使用 docker start
命令来启动。
命令格式:
docker start [OPTIONS] CONTAINER [CONTAINER...]
参数:
Name, shorthand | Default | Description |
---|---|---|
--attach,-a |
false |
连接STDOUT/STDERR并转发信号 |
--checkpoint |
从该检查点还原 | |
--checkpoint-dir |
使用自定义的检查点存储目录 | |
--detach-keys |
覆盖断开容器的关键顺序 | |
--interactive,-i |
false |
连接容器的STDIN |
例如:
docker start 784fd3b294d7
重启容器[重要]
可使用 docker restart
命令来重启容器。该命令实际上是先执行了 docker stop
命令,然后执行了 docker start
命令。
命令格式:
docker restart [OPTIONS] CONTAINER [CONTAINER...]
参数:
Name, shorthand | Default | Description |
---|---|---|
--time,-t |
10 |
关闭容器前等待的时间,单位是秒 |
进入容器[重要]
某场景下,我们可能需要进入运行中的容器。
① 使用 docker attach
命令进入容器。
例如:
docker attach 784fd3b294d7
很多场景下,使用 docker attach
命令并不方便。当多个窗口同时attach到同一个容器时,所有窗口都会同步显示。同理,如果某个窗口发生阻塞,其他窗口也无法执行操作。
② 使用 nsenter
进入容器
nsenter工具包含在util-linux 2.23或更高版本中。为了连接到容器,我们需要找到容器第一个进程的PID,可通过以下命令获取:
docker inspect --format "{{.State.Pid}}" $CONTAINER_ID
获得PID后,就可使用nsenter命令进入容器了:
nsenter --target "$PID" --mount --uts --ipc --net --pid
下面给出一个完整的例子:
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
784fd3b294d7 nginx "nginx -g 'daemon off" 55 minutes ago Up 3 minutes 443/tcp, 0.0.0.0:91->80/tcp backstabbing_archimedes
[root@localhost ~]# docker inspect --format "{{.State.Pid}}" 784fd3b294d7
95492
[root@localhost ~]# nsenter --target 95492 --mount --uts --ipc --net --pid
root@784fd3b294d7:/#
读者也可将以上两条命令封装成一个Shell,从而简化进入容器的过程。
③ docker exec
docker exec -it 容器id /bin/bash
删除容器[重要]
使用 docker rm
命令即可删除指定容器。
命令格式
docker rm [OPTIONS] CONTAINER [CONTAINER...]
参数:
Name, shorthand | Default | Description |
---|---|---|
--force,-f |
false |
通过SIGKILL信号强制删除正在运行中的容器 |
--link,-l |
false |
删除容器间的网络连接 |
--volumes,-v |
false |
删除与容器关联的卷 |
例1:删除指定容器。
docker rm 784fd3b294d7
该命令只能删除已停止的容器,如需删除正在运行的容器,可使用-f参数。
例2:删除所有的容器。
docker rm -f $(docker ps -a -q)
导出容器
将容器导出成一个压缩包文件。
命令格式:
docker export [OPTIONS] CONTAINER
参数:
Name, shorthand | Default | Description |
---|---|---|
--output,-o |
将内容写到文件而非STDOUT |
示例:
docker export red_panda > latest.tar
docker export --output="latest.tar" red_panda
导入容器
使用 dockerimport
命令即可从归档文件导入内容并创建镜像。
命令格式:
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
参数:
Name, shorthand | Default | Description |
---|---|---|
--change,-c |
将Dockerfile指令应用到创建的镜像 | |
--message,-m |
为导入的镜像设置提交信息 |
示例:
docker import nginx2.tar nginx
拓展阅读
Docker的网络:https://docs.docker.com/engine/userguide/networking/
Docker命令:https://docs.docker.com/engine/reference/commandline/docker/
Docker系列教程05 容器常用命令的更多相关文章
- Docker系列(7)- 常用命令(3) | 容器命令
容器命令 说明: 有了镜像才可以创建容器:下载一个centos镜像进行练习,相当于在Linux里面再见一个Linux虚拟机 [root@localhost ~]# docker pull centos ...
- docker(三) 镜像和容器常用命令
一.镜像操作 1.搜索镜像 可以直接在Docker Hub 直接搜索镜像,当然也可以使用命令来搜索. docker search 名称 docker search tomcat 2.拉取镜像 dock ...
- Docker系列(10)- 常用命令小结
#橙色前面笔记已记录,黑色后面笔记将完善#勤加练习!!!attach Attach to a running container # 当前 shell 下 attach 连接指定运行镜像 build ...
- Docker系列(5)- 常用命令(1) | 帮助命令
帮助命令 [root@localhost ~]# docker version #显示docker的版本信息 [root@localhost ~]# docker info #显示docker的系统信 ...
- Docker系列(6)- 常用命令(2) | 镜像命令
准备工作 知道查看官方文档,官方文档描述的很详细,并且每一种类型.每一个命令的选项都有例子 会使用docker --help查看 镜像命令 docker images 查看所有本地主机上的镜像 [ro ...
- Docker入门教程(二)命令
Docker入门教程(二)命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第二篇,介绍了Docker的基本命令以及命令的用法和功能. 在Docker ...
- Spring 系列教程之容器的功能
Spring 系列教程之容器的功能 经过前面几章的分析,相信大家已经对 Spring 中的容器功能有了简单的了解,在前面的章节中我们一直以 BeanFacotry 接口以及它的默认实现类 XmlBea ...
- docker学习笔记二:常用命令
docker学习笔记二:常用命令 查看docker常用命令 docker --help 返回结果如下: 其中常用的命令如下: 1.image相关操作 展示所有的image: 删除image: rmi ...
- docker-管理容器常用命令
1. docker-管理容器常用命令 2. docker管理容器常用命令 1) docker ps 显示当前正在运行的容器 [root@test-1 ~]# docker ps CONTAINER ...
随机推荐
- Vue2.0 子组件和父组件之间的传值
Vue是一个轻量级的渐进式框架,对于它的一些特性和优点在此就不做赘述,本篇文章主要来探讨一下Vue子父组件通信的问题 首先我们先搭好开发环境,我们首先得装好git和npm这两个工具(如果有不清楚的同学 ...
- 小程序获取当前页面URL
var pages = getCurrentPages() //获取加载的页面 var currentPage = pages[pages.length-1] //获取当前页面的对象 var url ...
- ajax获取值的两种方法
详细连接https://blog.csdn.net/a1102325298/article/details/80785143 ajax获得表单值的俩种方法 2018年06月23日 17:12:02 延 ...
- SSM+shiro,所有配置文件,详细注释版,自用
spring配置文件applicationContext.xml,放在resources下 <?xml version="1.0" encoding="UTF-8& ...
- springboot+jpa+mysql+redis+swagger整合步骤
springboot+jpa+MySQL+swagger框架搭建好之上再整合redis: 在电脑上先安装redis: 一.在pom.xml中引入redis 二.在application.yml里配置r ...
- Lodop打印控件不打印css背景图怎么办
background:url()这是css背景图,http协议会按异步方式下载背景图,所以很容易等不到下载完毕就开始打印了,故lodop不打印css背景图.Lodop不打印css背景图,但是有其他方法 ...
- linux固定IP
在新安装的Linux系统命令行下, 敲入:ifconfig,显示如下界面. 上面这张图显示网卡没有启动,那么我们敲入代码:ifup eth0启动网卡. 网卡启动后,我们可以看出,IP地址和网关等其他信 ...
- 洛谷-p2764(最小路径覆盖)(网络流24题)
#include<iostream> #include<algorithm> #include<queue> #include<cstring> #in ...
- UVA 12171 Sculpture
https://vjudge.net/problem/UVA-12171 题目 某人设计雕塑,用的是很扯的方法:把一堆长方体拼起来.给出长方体的坐标和长宽高,求外表面积.因为要将这雕塑进行酸洗,需要知 ...
- kubernetes job的原理
job例子: apiVersion: batch/v1 #job的apiVersion kind: Job #资源类型为job metadata: labels: name: busybox name ...