有镜像才能创建容器,这是根本前提。

我们下载一个CentOS镜像作为演示。

[root@192 ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
7a0437f04f83: Pull complete
Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest [root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 3 months ago 209MB

1、新建并启动容器

命令:docker run [OPTIONS] IMAGE(镜像名) [COMMAND] [ARG...(参数)]

常用OPTIONS说明:有些是一个减号,有些是两个减号。

  • --name="容器新名字":为容需指定一个名称,如tomcat1tomcat2用来区分容器。
  • -d:后台运行容器,并返回容器ID,即启动守护式容器。
  • -i:以交互模式运行容器,可进入容器查看内容,通常与-t同时使用。(常用)
  • -t:为容器重新分配一个伪输入终端,通常与-i同时使用。(常用)
  • -P:大写P表示,Docker会随机选择一个宿主机端口,映射到容器内部开放的网络端口上。
  • -p:小写p表示,Docker会选择一个具体的宿主机端口,映射到容器内部开放的网络端口上。

    有以下四种格式:

    • -p ip:主机端口(hostPort):容器端口(containerPort)
    • -p 主机端口:容器端口 (常用)
    • -p 容器端口
    • -p ip::容器端口(待确定)

启动镜像示例:

使用镜像centos:latest,以交互模式启动一个容器,在容器内执行/bin/bash命令。

# 查看本地镜像
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 3 months ago 209MB # 创建启动容器,并进入容器
[root@192 ~]# docker run -it 300e315adb2f /bin/bash
[root@5b6c5748a7b9 /]# # 以上说明以ID为300e315adb2f的这个镜像,生成了一个名称为5b6c5748a7b9的容器。
# 此时我们已经登陆在启动的CentOS容器中了。
# 我们可以正常使用Linux命令来进行操作了,如下:
[root@5b6c5748a7b9 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@5b6c5748a7b9 /]# pwd
/
[root@5b6c5748a7b9 /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 17:21 pts/0 00:00:00 /bin/bash

提示:因为Docker的CentOS镜像只有200M左右,所以是CentOS系统的基础版本,会有很多命令都是不完善。

2、列出当前所有正在运行的容器

命令:docker ps [OPTIONS]

我们从XShell中复制一个shell窗口,执行docker ps命令,如下:

说明:

  • 5b6c5748a7b9的STATUS选项是Up 状态,说明该容器是启动状态。
  • 如果启动容器的时候,没有指定--name属性,系统会自动分配一个名字给容器,如上图中的hopeful_goldberg

提示:我们可以看到有一个CONTAINER ID5b6c5748a7b9容器正在运行,这个5b6c5748a7b9和上边示例的Linux系统命令提示符[root@5b6c5748a7b9 /]中的名称相吻合。

常用OPTIONS说明:

  • -a:列出当前所有正在运行的容器+历史上运行过的容器。
  • -l:显示最近创建的容器。
  • -n:显示最近n个创建的容器,例如-n=3或者-n 3
  • -q:只显示容器编号。(常用)
  • --no-trunc:不截断输出,显示完整的镜像信息。

示例:

[root@192 ~]# docker ps -qa --no-trunc -n=3
f9444cf9f26f2f0e12aa309d1914a06553575fb00f6301ce541753fb92d00c0a
136475a80d92856c78c202b50edfff2e1cd61a4b832b5ed8fb767c546f355727
5b6c5748a7b9072ce246d546dbc4e4f7b69796fbeeb6884286e78cbbc94a7c0c
[root@192 ~]# docker ps -qa --no-trunc -n 3
f9444cf9f26f2f0e12aa309d1914a06553575fb00f6301ce541753fb92d00c0a
136475a80d92856c78c202b50edfff2e1cd61a4b832b5ed8fb767c546f355727
5b6c5748a7b9072ce246d546dbc4e4f7b69796fbeeb6884286e78cbbc94a7c0c

3、退出容器

在Docker中退出容器有两种方式。

  1. exit:容器停止退出。
  2. ctrl+P+Q:容器不停止退出,(注意是大写PQ)。

示例1:

# exit命令演示
# 1.查看本机docker镜像
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 3 months ago 209MB # 2.创建启动并进入centos容器
[root@192 ~]# docker run -it 300e315adb2f /bin/bash # 3.执行exit命令,停止并退出容器
[root@136475a80d92 /]# exit
exit # 查看当前宿主机上正在运行的容器,可以看到没有任何容器正在运行。
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@192 ~]#

示例2:

# ctrl+P+Q退出容器演示
# 1.查看本机docker镜像
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 3 months ago 209MB # 2.创建启动并进入centos容器,注意--name=mycentos 要卸载容器名前边
[root@192 ~]# docker run -it --name=mycentos 300e315adb2f /bin/bash
[root@14b077f2496b /]# # 3.ctrl+P+Q,不停止并退出容器
# 4.查看当前宿主机上正在运行的容器,可以看到14b077f2496b容器正在运行。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
14b077f2496b 300e315adb2f "/bin/bash" About a minute ago Up 59 seconds mycentos [root@192 ~]#

4、启动容器

就是启动之前被关闭的容器。

示例:

查看当前宿主机中的容器。

我们可以看到,此时宿主机上有2个容器正在运行Up,有2个容器是关闭状态Exited

我们可以通过命令:docker start 容器ID或者容器名,重新启动容器。

如下图:

执行启动容器命令后,会启动容器,并返回启动的容器ID。

可以看到上图中,第三个容器136475a80d92,已经被启动了。

5、重启容器

就是重新启动一个容器。

命令:docker restart 容器ID或者容器名

示例:

先查看当前宿主机的容器状态。

然后重启第一个容器,ID为14b077f2496b,名称为mycentos

这里我们一定要注意看STATUS 状态为Up 2 hours

我们重启该容器,并查看他的启动时间。

我们可以看到重启之后,mycentos容器的启动时间变为了4秒,说明该容器进行了重启。

6、停止容器

停止正在运行的容器。(正常关闭容器)

命令:docker stop 容器ID或者容器名

演示:

先查看当前宿主机的容器状态。

执行命令关闭第三个容器,如下图:

7、强制停止容器

停止正在运行的容器。(暴力关闭容器)

命令:docker kill 容器ID或者容器名

演示:

先查看当前宿主机的容器状态。

执行命令,强制关闭第二个容器,如下图:

8、删除已停止的容器

命令:docker rm 容器ID

(1)删除一个已停止的容器

先查看当前宿主机的容器状态。

删除第一个正在运行的容器,如下:

[root@192 ~]# docker rm 14b077f2496b
Error response from daemon: You cannot remove a running container 14b077f2496b3c11d041a8bb138f60b32538ddedebe88245dc805a25669d0d83. Stop the container before attempting removal or force remove

守护进程daemon会提示我们,您不能删除正在运行的容器,请先停止容器。

如果需要删除正在运行的容器,加-f参数,进行强制删除。

那我们接下来删除第二个容器,如下:

可以看到,第二个容器已经删除,现在宿主机上只有3个容器了。

(2)一次性删除多个已停止的容器

命令:docker rm 容器1ID 容器2ID 容器3ID ...

示例:

删除第二第三个容器,如下:

[root@192 ~]# docker rm 136475a80d92 5b6c5748a7b9
136475a80d92
5b6c5748a7b9
[root@192 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
14b077f2496b 300e315adb2f "/bin/bash" 3 hours ago Up 19 minutes mycentos

我们可以看到,此时宿主机上只有一个容器了。

(3)删除所有本机已停止的容器

  • 方式一:

    命令:docker rm -f $(docker ps -aq)

    说明:docker rm -f 删除所有docker ps -aq命令显示容器ID对应的容器。
  • 方式二:

    docker ps -aq| xargs docker rm

    说明:docker ps -aq命令执行的结果,通过管道符,传递给后边的xargs

    xargs是给命令传递参数的一个过滤器,以将管道或标准输入的数据转换成参数。

『现学现忘』Docker常用命令 — 19、容器常用命令(一)的更多相关文章

  1. Docker的镜像及容器常用操作(2)

    一.docker镜像 镜像(docker image) --- Docker 运行容器之前需要本地存在镜像,若本能地不存在,那么 Docker 会找默认镜像仓库( Docker Hub 公共注册服务器 ...

  2. 『现学现忘』Docker常用命令 — 20、容器常用命令(二)

    提示:接上一篇 目录 9.后台启动容器 10.查看容器日志 11.查看容器内运行的进程 12.查看容器内部细节 9.后台启动容器 后台启动容器也叫启动守护式容器. 命令:docker run -d 镜 ...

  3. 『现学现忘』Docker常用命令 — 21、容器常用命令(三)

    目录 13.进入正在运行的容器并以命令行交互 (1)方式一 (2)方式二 (3)attach和exec的区别 14.从容器内拷贝文件到主机上 15.Docker常用命令小结 (1)容器生命周期管理 ( ...

  4. 『现学现忘』Docker基础 — 22、使用Docker安装Nginx

    目录 步骤1:搜索镜像 步骤2:下载Nginx镜像 步骤3:运行Nginx镜像 步骤4:进行本机测试 步骤5:进入容器内操作 步骤6:测试外网访问容器 步骤1:搜索镜像 使用docker search ...

  5. 『现学现忘』Docker基础 — 28、Docker容器数据卷介绍

    目录 1.什么是Docker容器数据卷 2.数据卷的作用 3.数据卷的使用 1.什么是Docker容器数据卷 Docker容器数据卷,即Docker Volume(卷). 当Docker容器运行的时候 ...

  6. 『现学现忘』Docker基础 — 9、Docker简介

    目录 1.什么是Docker? 2.Docker的出现解决了什么问题? 3.Docker的特别之处 4.Docker相关网站 1.什么是Docker? 2010年dotCloud公司在旧金山成立,PA ...

  7. 『现学现忘』Docker基础 — 24、Docker图形化管理工具Portainer

    目录 1.Portainer介绍 2.Portainer安装启动 3.Portainer初始化配置 4.Portainer汉化 1.Portainer介绍 (1)Portainer 是一款轻量级的图形 ...

  8. 『现学现忘』Docker基础 — 27、Docker镜像的commit操作

    目录 1.commit命令作用 2.commit命令说明 3.示例演示 1.commit命令作用 在运行的容器中,并在镜像的基础上做了一些修改,我们希望保存起来,封装成一个新的镜像,方便我们以后使用, ...

  9. 『现学现忘』Docker基础 — 30、Docker中数据卷相关命令

    目录 1.Volume命令说明 2.Volume命令的使用 (1)创建数据卷 (2)查看本地数据卷列表 (3)打印myVolume数据卷的详细信息 (4)删除数据卷 (5)删除所有未使用的数据卷 3. ...

随机推荐

  1. IIS部署.net core 的程序后,如何查看控制台的日志?

    .net core 3.1 开发的web服务,本地开发的时候,双击运行 xxx.exe(.net core 3.1 发布后,文件夹里面有一个 .exe 文件,双击即可运行,会直接监听本地 xx端口测试 ...

  2. axios ajax fetch 区别以及优缺点

    将jQuery的ajax.axios和fetch做个简单的比较,所谓仁者见仁智者见智,最终使用哪个还是自行斟酌 1.jQuery ajax $.ajax({ type: 'POST', url: ur ...

  3. Netty入门使用教程

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11827026.html 本文介绍Netty的使用, 结合我本人的一些理解和操作来快速的让初学者 ...

  4. 用Java实现生成图片验证码

    通过代码实现生成一个随机验证码图片,且生成后自动打开: package day_12_17; import javax.imageio.ImageIO; import java.awt.*; impo ...

  5. Aselenium前言

    https://seleniumhq.github.io/docs/index.html https://www.seleniumhq.org/ THE SELENIUM BROWSER AUTOMA ...

  6. 配置多个ssh公钥,解决Key is already in use

    背景:我已经有一个ssh公钥和私钥了,绑定的是公司的码云 但是绑定github是不允许的 所以我需要在生成一个公钥和私钥 第一步执行下面的命令, 至于如果生成ssh公钥点击这里 ssh-keygen ...

  7. 2021美团安洵暗泉re部分复现

    typora-copy-images-to: ./ 安洵杯 sign_in 贪吃蛇 虽然没啥用 smc解密拿一下flag相关的部分 倒着看看sub_40105F 和sub_401055函数 写出解密算 ...

  8. HDFS源码解析系列一——HDFS通信协议

    通信架构 首先,看下hdfs的交互图: 可以看到通信方面是有几个角色的:客户端(client).NameNode.SecondaryNamenode.DataNode;其中SecondaryNamen ...

  9. mysql中generated always as的使用

    -- generated always as的使用 CREATE TABLE t1( c1 INT, c2 DOUBLE(20,19) , c3 INT GENERATED ALWAYS AS(c1* ...

  10. CentOS7搭建yum源仓库(阿里源)

    文章目录 注意:环境要求 1.配置服务器端yum 1.1.安装yum源工具 1.2.配置nginx 1.2.1.配置nginx页面目录 1.3.替换yum源文件 1.4.建立yum源仓库 2.配置客户 ...