GVKun编程网logo

精华!Docker 常用命令大全(docker常用命令大全简书)

6

如果您想了解精华!Docker常用命令大全和docker常用命令大全简书的知识,那么本篇文章将是您的不二之选。我们将深入剖析精华!Docker常用命令大全的各个方面,并为您解答docker常用命令大全

如果您想了解精华!Docker 常用命令大全docker常用命令大全简书的知识,那么本篇文章将是您的不二之选。我们将深入剖析精华!Docker 常用命令大全的各个方面,并为您解答docker常用命令大全简书的疑在这篇文章中,我们将为您介绍精华!Docker 常用命令大全的相关知识,同时也会详细的解释docker常用命令大全简书的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

精华!Docker 常用命令大全(docker常用命令大全简书)

精华!Docker 常用命令大全(docker常用命令大全简书)

本文包括容器生命周期管理命令、容器操作命令、容器rootfs命令、镜像仓库命令、本地镜像管理命令和基础版本信息命令。

容器生命周期管理命令

run
创建一个新的容器。

# 使用docker镜像nginx:latest以后台模式启动一个容器,
# 并将容器命名为mynginx。  
docker run --name mynginx -d nginx:latest  

# 使用镜像 nginx:latest,以后台模式启动一个容器,
# 将容器的 80 端口映射到主机的 80 端口,
# 主机的目录 /data 映射到容器的 /data。  
docker run -p 80:80 -v /data:/data -d nginx:latest  

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

start/stop/restart
docker start : 启动一个或多个已经被停止的容器。
docker stop : 停止一个运行中的容器。
docker restart : 重启容器。

# 启动已被停止的容器mynginx  
docker start mynginx  

# 停止运行中的容器mynginx  
docker stop mynginx  

# 重启容器mynginx  
docker restart mynginx

kill
杀掉一个运行中的容器。可选参数:

-s : 发送什么信号到容器,默认 KILL

# 根据容器名字杀掉容器  
docker kill tomcat7  

# 根据容器ID杀掉容器  
docker kill 65d4a94f7a39

rm
删除一个或多个容器。

# 强制删除容器 db01、db02:  
docker rm -f db01 db02  

# 删除容器 nginx01, 并删除容器挂载的数据卷:  
docker rm -v nginx01  

# 删除所有已经停止的容器:  
docker rm $(docker ps -a -q)

create
创建一个新的容器但不启动它。

# 使用docker镜像nginx:latest创建一个容器,并将容器命名为mynginx  
docker create --name mynginx nginx:latest  

exec
在运行的容器中执行命令。可选参数:

-d : 分离模式: 在后台运行
-i : 即使没有附加也保持STDIN 打开
-t : 分配一个伪终端

# 在容器 mynginx 中以交互模式执行容器内 /root/nginx.sh 脚本  
docker exec -it mynginx /bin/sh /root/nginx.sh  

# 在容器 mynginx 中开启一个交互模式的终端  
docker exec -i -t  mynginx /bin/bash  

# 也可以通过 docker ps -a 命令查看已经在运行的容器,然后使用容器 ID 进入容器。  
docker ps -a   
docker exec -it 9df70f9a0714 /bin/bash

pause/unpause
docker pause :暂停容器中所有的进程。
docker unpause :恢复容器中所有的进程。

# 暂停数据库容器db01提供服务。  
docker pause db01  

# 恢复数据库容器 db01 提供服务  
docker unpause db0

容器操作命令

ps
列出容器。可选参数:

-a : 显示所有的容器,包括未运行的。
-f : 根据条件过滤显示的内容。
–format : 指定返回值的模板文件。
-l : 显示最近创建的容器。
-n : 列出最近创建的n个容器。
–no-trunc : 不截断输出。
-q : 静默模式,只显示容器编号。
-s : 显示总的文件大小。

# 列出所有在运行的容器信息。  
docker ps  

# 列出最近创建的5个容器信息。  
docker ps -n 5  

# 列出所有创建的容器ID。  
docker ps -a -q

补充说明:

容器的7种状态:created(已创建)、restarting(重启中)、running(运行中)、removing(迁移中)、paused(暂停)、exited(停止)、dead(死亡)。

inspect
获取容器/镜像的元数据。可选参数:

-f : 指定返回值的模板文件。
-s : 显示总的文件大小。
–type : 为指定类型返回JSON。

# 获取镜像mysql:5.7的元信息。  
docker inspect mysql:5.7  

# 获取正在运行的容器mymysql的 IP。  
docker inspect --format=''{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'' mymysql 

top
查看容器中运行的进程信息,支持 ps 命令参数。

# 查看容器mymysql的进程信息。  
docker top mymysql  

# 查看所有运行容器的进程信息。  
for i in  `docker ps |grep Up|awk ''{print $1}''`;do echo \ &&docker top $i; done

events
获取实时事件。参数说明:

-f : 根据条件过滤事件;
–since : 从指定的时间戳后显示所有事件;
–until : 流水时间显示到指定的时间为止;

# 显示docker 2016年7月1日后的所有事件。  
docker events  --since="1467302400"  

# 显示docker 镜像为mysql:5.6 2016年7月1日后的相关事件。  
docker events -f "image"="mysql:5.6" --since="1467302400"

说明:如果指定的时间是到秒级的,需要将时间转成时间戳。如果时间为日期的话,可以直接使用,如–since=“2016-07-01”。

logs
获取容器的日志。参数说明:

-f : 跟踪日志输出
–since : 显示某个开始时间的所有日志
-t : 显示时间戳
–tail : 仅列出最新N条容器日志

# 跟踪查看容器mynginx的日志输出。  
docker logs -f mynginx  

# 查看容器mynginx从2016年7月1日后的最新10条日志。  
docker logs --since="2016-07-01" --tail=10 mynginx

export
将文件系统作为一个tar归档文件导出到STDOUT。参数说明:

-o : 将输入内容写到文件。

# 将id为a404c6c174a2的容器按日期保存为tar文件。  
docker export -o mysql-`date +%Y%m%d`.tar a404c6c174a2  

ls mysql-`date +%Y%m%d`.tar

port
列出指定的容器的端口映射。

# 查看容器mynginx的端口映射情况。  
docker port mymysql

容器rootfs命令

commit
从容器创建一个新的镜像。参数说明:

-a : 提交的镜像作者;
-c : 使用Dockerfile指令来创建镜像;
-m : 提交时的说明文字;
-p : 在commit时,将容器暂停。

# 将容器a404c6c174a2 保存为新的镜像,
# 并添加提交人信息和说明信息。  
docker commit -a "guodong" -m "my db" a404c6c174a2  mymysql:v1

cp
用于容器与主机之间的数据拷贝。参数说明:

-L : 保持源目标中的链接

# 将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。  
docker cp /www/runoob 96f7f14e99ab:/www/  

# 将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。  
docker cp /www/runoob 96f7f14e99ab:/www  

# 将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。  
docker cp  96f7f14e99ab:/www /tmp/

diff
检查容器里文件结构的更改。

# 查看容器mymysql的文件结构更改。  
docker diff mymysql

镜像仓库命令

login/logout
docker login : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hubdocker logout :登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub参数说明:

-u : 登陆的用户名
-p : 登陆的密码

# 登陆到Docker Hub  
docker login -u 用户名 -p 密码  

# 登出Docker Hub  
docker logout

pull
从镜像仓库中拉取或者更新指定镜像。参数说明:

-a : 拉取所有 tagged 镜像
–disable-content-trust : 忽略镜像的校验,默认开启

# 从Docker Hub下载java最新版镜像。  
docker pull java  

# 从Docker Hub下载REPOSITORY为java的所有镜像。  
docker pull -a java 

push
将本地的镜像上传到镜像仓库,要先登陆到镜像仓库。参数说明:

–disable-content-trust : 忽略镜像的校验,默认开启

# 上传本地镜像myapache:v1到镜像仓库中。  
docker push myapache:v1

search
从Docker Hub查找镜像。参数说明:

–automated : 只列出 automated build类型的镜像;
–no-trunc : 显示完整的镜像描述;
-f \<过滤条件>: 列出指定条件的镜像。

# 从 Docker Hub 查找所有镜像名包含 java,并且收藏数大于 10 的镜像  
docker search -f stars=10 java  

NAME                  DESCRIPTION                           STARS   OFFICIAL   AUTOMATED  
java                  Java is a concurrent, class-based...   1037    [OK]         
anapsix/alpine-java   Oracle Java 8 (and 7) with GLIBC ...   115                [OK]  
develar/java                                                 46                 [OK]

每列参数说明:

NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似 Github 里面的 star,表示点赞、喜欢的意思
AUTOMATED: 自动构建

本地镜像管理命令

images
列出本地镜像。参数说明:

-a : 列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
–digests : 显示镜像的摘要信息;
-f : 显示满足条件的镜像;
–format : 指定返回值的模板文件;
–no-trunc : 显示完整的镜像信息;
-q : 只显示镜像ID。

# 查看本地镜像列表。  
docker images  

# 列出本地镜像中REPOSITORY为ubuntu的镜像列表。  
docker images  ubuntu

rmi
删除本地一个或多个镜像。参数说明:

-f : 强制删除;
–no-prune : 不移除该镜像的过程镜像,默认移除;

# 强制删除本地镜像 guodong/ubuntu:v4。  
docker rmi -f guodong/ubuntu:v4

tag
标记本地镜像,将其归入某一仓库。

# 将镜像ubuntu:15.10标记为 runoob/ubuntu:v3 镜像。  
docker tag ubuntu:15.10 runoob/ubuntu:v3

build
用于使用 Dockerfile 创建镜像。参数说明:

–build-arg=[] : 设置镜像创建时的变量;
–cpu-shares : 设置 cpu 使用权重;
–cpu-period : 限制 CPU CFS周期;
–cpu-quota : 限制 CPU CFS配额;
–cpuset-cpus : 指定使用的CPU id;
–cpuset-mems : 指定使用的内存 id;
–disable-content-trust : 忽略校验,默认开启;
-f : 指定要使用的Dockerfile路径;
–force-rm : 设置镜像过程中删除中间容器;
–isolation : 使用容器隔离技术;
–label=[] : 设置镜像使用的元数据;
-m : 设置内存最大值;
–memory-swap : 设置Swap的最大值为内存+swap,"-1"表示不限swap;
–no-cache : 创建镜像的过程不使用缓存;
–pull : 尝试去更新镜像的新版本;
–quiet, -q : 安静模式,成功后只输出镜像 ID;
–rm : 设置镜像成功后删除中间容器;
–shm-size : 设置/dev/shm的大小,默认值是64M;
–ulimit : Ulimit配置。
–squash : 将 Dockerfile 中所有的操作压缩为一层。
–tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
–network: 默认 default。在构建期间设置RUN指令的网络模式

# 使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1  
docker build -t runoob/ubuntu:v1 .   

# 使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像  
docker build github.com/creack/docker-firefox  

# 通过 -f Dockerfile文件的位置 创建镜像  
docker build -f /path/to/a/Dockerfile .

history
查看指定镜像的创建历史。参数说明:

-H : 以可读的格式打印镜像大小和日期,默认为true;
–no-trunc : 显示完整的提交记录;
-q : 仅列出提交记录ID。

# 查看本地镜像 guodong/ubuntu:v3 的创建历史。  
docker history guodong/ubuntu:v3

save
将指定镜像保存成 tar 归档文件。参数说明:

-o : 输出到的文件。

# 将镜像 runoob/ubuntu:v3 生成 my_ubuntu_v3.tar 文档  
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3

load

导入使用 docker save 命令导出的镜像。参数说明:

–input , -i : 指定导入的文件,代替 STDIN。
–quiet , -q : 精简输出信息。

# 导入镜像
docker load --input fedora.tar `

import

从归档文件中创建镜像。参数说明:

-c : 应用docker 指令创建镜像;
-m : 提交时的说明文字;

# 从镜像归档文件my_ubuntu_v3.tar创建镜像,命名为runoob/ubuntu:v4  
docker import  my_ubuntu_v3.tar runoob/ubuntu:v4

基础版本信息命令

info
显示 Docker 系统信息,包括镜像和容器数。

# 查看docker系统信息。
docker info

version

显示 Docker 版本信息。

docker version

Docker for Windows(三)Docker镜像与容器的区别&常用命令

Docker for Windows(三)Docker镜像与容器的区别&常用命令

Docker镜像(Image)是一堆只读文件(read-only layer),容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
容器 = 镜像 + 读写层。

Docker常用命令:

docker version显示 Docker 版本信息
docker info显示 Docker 系统信息,包括镜像和容器数
docker pull <image-id>拉取或者更新指定镜像
docker create <image-id>创建镜像
docker create 命令为指定的镜像(image)添加了一个可读写层,构成了一个新的容器。注意,这个容器并没有运行。


docker start <container-id>启动容器
docker start命令为容器文件系统创建了一个进程隔离空间。注意,每一个容器只能够有一个进程隔离空间。


docker run <image-id>启动镜像
看到这个命令,读者通常会有一个疑问:docker start 和 docker run命令有什么区别。


实际上,docker run 命令先是利用镜像创建了一个容器,然后运行这个容器。这个命令非常的方便,并且隐藏了两个命令的细节,但从另一方面来看,这容易让用户产生误解。


docker ps 查看所有运行中的容器。
这隐藏了非运行态容器的存在,如果想要找出这些容器,我们需要使用docker ps –a这个命令。


docker images 命令会列出所有顶层镜像。
实际上,在这里我们没有办法区分一个镜像和一个只读层,所以我们提出了top-level镜像。只有创建容器时使用的镜像或者是直接pull下来的镜像能被称为顶层(top-level)镜像,并且每一个顶层镜像下面都隐藏了多个镜像层。


docker images –a命令列出了所有的镜像,也可以说是列出了所有的可读层。如果你想要查看某一个image-id下的所有层,可以使用docker history来查看。


docker stop <container-id>停止所有的进程docker stop命令会向运行中的容器发送一个SIGTERM的信号,然后停止所有的进程。


docker kill <container-id>杀死进程,docker kill 命令向所有运行在容器中的进程发送了一个不友好的SIGKILL信号。


docker rm <container-id>命令会移除构成容器的可读写层。注意,这个命令只能对非运行态容器执行。


docker rmi <image-id>命令会移除构成镜像的一个只读层。你只能够使用docker rmi来移除最顶层(top level layer)(也可以说是镜像),你也可以使用-f参数来强制删除中间的只读层。


docker commit <container-id>命令将容器的可读写层转换为一个只读层,这样就把一个容器转换成了不可变的镜像。


docker build我们从上图可以看到,build命令根据Dockerfile文件中的FROM指令获取到镜像,然后重复地1)run(create和start)、2)修改、3)commit。在循环中的每一步都会生成一个新的层,因此许多新的层会被创建。


docker exec <running-container-id>docker exec 命令会在运行中的容器执行一个新进程。


docker inspect <container-id>查看这个容器的详细信息,例如查看运行的数据库服务的连接信息。


docker save <image-id>docker save命令会创建一个镜像的压缩文件,这个文件能够在另外一个主机的Docker上使用。和export命令不同,这个命令为每一个层都保存了它们的元数据。这个命令只能对镜像生效。


docker export <container-id>docker export命令创建一个tar文件,并且移除了元数据和不必要的层,将多个层整合成了一个层,只保存了当前统一视角看到的内容(译者注:expoxt后的容器再import到Docker中,通过docker images –tree命令只能看到一个镜像;而save后的镜像则不同,它能够看到这个镜像的历史镜像)。


docker history <image-id>docker history命令递归地输出指定镜像的历史镜像。


firewall-cmd --add-port=3306/tcp开放端口
systemctl stop firewalld关闭防火墙

 

docker 入门到实战(三)docker常用命令

docker 入门到实战(三)docker常用命令

本篇来自于尚硅谷周阳老师
上一篇:docker 入门到实战(二)docker安装与卸载

三:docker常用命令

3.1 帮助命令

docker version
docker info
docker --help

3.2 镜像命令

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

可以在后面添加参数[OPTIONS]

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

image.png

3.2.2 搜索镜像

前提
配置国内镜像加速器
目前国内访问 Docker HUB 官方的相关镜像下载比较慢,可以使用国内的一些镜像加速器,镜像保持和官方一致,关键是速度块,推荐使用。

配置阿里云个人专属的加速

image.png

重新加载

systemctl daemon-reload
systemctl restart docker

搜索镜像

docker search [OPTIONS] 镜像名字

可以在后面添加参数[OPTIONS]

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

image.png

3.2.3 下载镜像

没有标注版本号默认最新版本:latest

docker pull 镜像名字[:TAG]

image.png

3.2.4 删除镜像
docker rmi 某个XXX镜像名字/ID

-f 强制删除

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

image.png

3.3 容器命令

3.3.1 新建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
 OPTIONS说明(常用):有些是一个减号,有些是两个减号
 
--name="容器新名字": 为容器指定一个名称;
-d: 后台运行容器,并返回容器ID,也即启动守护式容器;
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P 大小: 随机端口映射;
-p 小写: 指定端口映射,有以下四种格式
      ip:hostPort:containerPort
      ip::containerPort
      hostPort:containerPort
      containerPort

创建交互式容器 进入容器里面
exit 退出之后 容器停止
image.png
创建守护式容器 返回外面虚拟机
容器不停止
image.png

3.3.2 查看容器
docker ps [OPTIONS]
OPTIONS说明(常用):
 
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
--no-trunc :不截断输出。
3.3.3 退出容器
容器停止退出 : exit
容器不停止退出:ctrl+P+Q

以ctrl+P+Q形式退出
image.png

3.3.4 启动容器
docker start 容器ID或者容器名
3.3.5 停止容器
docker stop 容器ID或者容器名
3.3.6 停止容器
docker kill 容器ID或者容器名
3.3.7 删除已停止的容器
docker rm 容器ID

image.png

删除全部容器 返回容器id

docker rm -f $(docker ps -aq)

image.png

删除全部容器 返回容器id

docker ps -aq | xargs docker rm

image.png

3.3.8 查看容器日志
-t 是加入时间戳
-f 跟随最新的日志打印
--tail 数字 显示最后多少条
docker logs -f -t --tail 容器ID

image.png

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

image.png

3.3.10 查看容器内部细节
docker inspect 容器ID

image.png

3.3.11 进入正在运行的容器并以命令行交互
docker exec -it 容器ID /bin/bash

image.png

docker attach 容器ID /bin/bash

image.png

区别

  • exec 是在容器中打开新的终端,并且可以启动新的进程 在输入exit时不会关闭容器
  • attach 直接进入容器启动命令的终端,不会启动新的进程 在输入exit时会关闭容器
3.3.12 从主机拷贝文件到容器内上 主机路径 在前
docker cp 主机路径 容器ID:容器内路径

image.png

反过来也是一样 容器内拷贝到主机 容器ID:容器内路径 在前

docker cp 容器ID:容器内路径 主机路径 
3.3.13 其他命令

下载2.png

下一篇:
docker 入门到实战(四)docker镜像

Docker 共有 13 个管理命令和 41 个通用命令,以下是常用 Docker 命令列表

Docker 共有 13 个管理命令和 41 个通用命令,以下是常用 Docker 命令列表

开发人员一直在努力提高 Docker 的使用率和性能,命令也在不停变化。Docker 命令经常被弃用,或被替换为更新且更有效的命令,本文总结了近年来资深专家最常用的命令列表并给出部分使用方法。

目前,Docker 共有 13 个管理命令和 41 个通用命令,以下是常用 Docker 命令列表:

  • docker help—检查最新 Docker 可用命令;
  • docker attach—将本地输入、输出、错误流附加到正在运行的容器;
  • docker commit—从当前更改的容器状态创建新镜像;
  • docker exec—在活动或正在运行的容器中运行命令;
  • docker history—显示镜像历史记录;
  • docker info—显示系统范围信息;
  • docker inspect—查找有关 docker 容器和镜像的系统级信息;
  • docker login—登录到本地注册表或 Docker Hub;
  • docker pull—从本地注册表或 Docker Hub 中提取镜像或存储库;
  • docker ps—列出容器的各种属性;
  • docker restart—停止并启动容器;
  • docker rm—移除容器;
  • docker rmi—删除镜像;
  • docker run—在隔离容器中运行命令;
  • docker search—在 Docker Hub 中搜索镜像;
  • docker start—启动已停止的容器;
  • docker stop—停止运行容器;
  • docker version—提供 docker 版本信息。

查找 Docker 版本和系统信息

无论是在本地还是云端,我们都需要检查 Docker 版本和系统信息,可以使用以下命令找到 Docker 版本:

$ docker version

Client:

Version: 18.03.0-ce

API version: 1.37

Go version: go1.9.4

 

Git commit: 0520e24

 

Built: Wed Mar 21 23:06:22 2018

 

OS/Arch: darwin/amd64

 

Experimental: false

 

Orchestrator: swarm

 

Server:

 

Engine:

 

Version: 18.03.0-ce

 

API version: 1.37 (minimum version 1.12)

 

Go version: go1.9.4

 

Git commit: 0520e24

 

Built: Wed Mar 21 23:14:32 2018

 

OS/Arch: linux/amd64

 

Experimental: true

另一个重要命令是 docker info:

复制代码

 

$ docker info

Containers: 0

Running: 0

Paused: 0

Stopped: 0

Images: 0

Server Version: 18.03.0-ce

Storage Driver: overlay2

Backing Filesystem: extfs

Supports d_type: true

Native Overlay Diff: true

Logging Driver: json-file

Cgroup Driver: cgroupfs

Plugins:

Volume: local

Network: bridge host ipvlan macvlan null overlay

Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog


该命令将显示部分设备信息,比如服务器版本、存储驱动程序、内核版本、操作系统、总内存等。当尝试为当前 Docker 安装启动新资源或尝试找出系统级资源分配问题时,这些信息非常有用,这也是检查运行、停止容器数量及下载镜像数量的快速方法。

搜索下载 Docker 镜像

可以使用 docker search 命令在 Docker Hub 搜索已有镜像:

复制代码

 

$ docker search ubuntu

 

NAME DESCRIPTION STARS OFFICIAL AUTOMATED

 

ubuntu Ubuntu is a Debian-based Linux operating sys… 7861 [OK]

 

dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVNC 190 [OK]

 

rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 156 [OK]

 

ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 93 [OK]

 

ubuntu-upstart Upstart is an event-based replacement for th… 87 [OK]

 

neurodebian NeuroDebian provides neuroscience research s… 50 [OK]

 

以上对 ubuntu 的搜索显示可用镜像、描述和官方状态等信息。如果要下载 ubuntu 镜像,可以使用 docker pull 命令:

复制代码

 

$ docker pull ubuntu

 

Using default tag: latest

 

latest: Pulling from library/ubuntu

 

6b98dfc16071: Pull complete

 

4001a1209541: Pull complete

 

6319fc68c576: Pull complete

 

b24603670dc3: Pull complete

 

97f170c87c6f: Pull complete

 

Digest: sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d

 

Status: Downloaded newer image for ubuntu:latest

 

$

Docker 镜像

使用 docker info 命令查找拥有镜像数量:

复制代码

 

$ docker info

 

Containers: 0

 

Running: 0

 

Paused: 0

 

Stopped: 0

 

Images: 1

 

docker images 命令可详细列出拥有镜像:

复制代码

 

$ docker images

 

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

 

ubuntu              latest              113a43faa138        2 weeks ago         81.2MB

假设下载 NGINX 镜像,可以运行 docker pull 命令:

复制代码

 

$ docker pull nginx

如果检查 Docker 镜像,会看到如下内容:

复制代码

 

$ docker images

 

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

 

ubuntu              latest              113a43faa138        2 weeks ago         81.2MB

 

nginx               latest              cd5239a0906a        2 weeks ago         109MB

如果寻找 Ubuntu 16.04 版本,可使用 16.04 标签下载特定版本:

复制代码

 

$ docker pull ubuntu:16.04

随后,将出现两个 Ubuntu 映像版本:

复制代码

 

$ docker images

 

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

 

ubuntu              16.04               5e8b97a2a082        2 weeks ago         114MB

 

ubuntu              latest              113a43faa138        2 weeks ago         81.2MB

 

nginx               latest              cd5239a0906a        2 weeks ago         109MB

注意:无需注册 Docker Hub 即可提取镜像。如果想将镜像推送到 Docker Hub,需要注册然后使用 docker login 命令登录:

复制代码

 

$ docker login --username=yourhubusername --email=youremail@company.com

运行镜像的 Docker 容器

假设想在 docker 上运行 NGINX 服务器,可运行以下命令:

复制代码

 

$ docker run -p 8080:80 nginx

如果已用 run 命令从 Docker Hub 提取 nginx 映像创建 NGINX 容器。 -p 8080:80 会告诉 Docker 将 localhost 端口 8080 映射到 Docker 容器端口 80,应该能够从 http:// localhost:8080 访问 NGINX 服务器。

NGINX 容器已附加到命令行。如果退出命令行,容器将会停止,可使用 detach(’-  d)启动 NGINX 容器,这样即使退出命令行也可继续运行。

复制代码

 

$ docker run -p 8080:80 -d nginx

以上命令将以分离模式启动容器并返回命令行。

使用 docker ps 命令列出 Docker 容器

docker ps 命令允许查找正在运行的所有容器:

复制代码

 

$ docker ps

 

CONTAINER ID         IMAGE         COMMAND         CREATED           STATUS          PORTS             NAMES

 

6162daed25da         nginx  "nginx -g ''daemon of…" 7 minutes ago   Up 7 minutes  0.0.0.0:8080->80/tcp  hardcore_torvalds

如上显示容器的各种属性,可以看到是从 nginx 镜像创建并显示端口转发信息。CONTAINER ID 和 NAMES 属性需要特别提及,可以使用上述两大属性唯一标识容器。二者都可自动生成,但也可在容器创建过程中为容器命名。
创建一个名为 my_nginx 的 NGINX 容器:

复制代码

 

$ docker run --name my_nginx -p 8888:80 -d nginx

再次列出所有 Docker 容器:

复制代码

 

$ docker ps

 

CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                  NAMES

 

e7b19b6ad778        nginx               "nginx -g ''daemon of…"   About a minute ago   Up About a minute   0.0.0.0:8888->80/tcp   my_nginx

 

6162daed25da        nginx               "nginx -g ''daemon of…"   15 minutes ago       Up 16 minutes       0.0.0.0:8080->80/tcp   hardcore_torvalds

请注意,新容器的名称为“my_nginx”。 处理大量容器时,可以使用命名约定,这可以更好得组织容器。
docker ps 命令仅显示正在运行的容器。如果对上述情况使用 docker info 命令:

复制代码

 

$ docker info

 

Containers: 2

 

Running: 2

 

Paused: 0

 

Stopped: 0

 

Images: 3

可以看到有两个容器正在运行,如果一个暂停或已停止,则不会仅使用 docker ps 命令查看这些容器,必须使用 all( -  a)选项:

复制代码

 

$ docker ps -a

启动,停止,重启和杀死容器

假设要停止’my_nginx’容器,可使用 CONTAINER ID 或 NAME。

复制代码

 

$ docker stop my_nginx

 

my_nginx

列出 Docker 容器:

复制代码

 

$ docker ps

 

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES

 

6162daed25da        nginx               "nginx -g ''daemon of…"   27 minutes ago      Up 27 minutes       0.0.0.0:8080->80/tcp   hardcore_torvalds

 

$ docker ps -a

 

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                          PORTS                  NAMES

 

e7b19b6ad778        nginx               "nginx -g ''daemon of…"   12 minutes ago      Exited (0) About a minute ago                          my_nginx

 

6162daed25da        nginx               "nginx -g ''daemon of…"   27 minutes ago      Up 27 minutes                   0.0.0.0:8080->80/tcp   hardcore_torvalds

如果在没有 -a 选项的情况下运行 docker ps,只显示正在运行的容器。在第二种情况下,可以看到’my_nginx’容器处于退出状态。

让我们 docker start  容器:

复制代码

 

$ docker start my_nginx

 

my_nginx

检查 Docker 容器列表:

复制代码

 

$ docker ps

 

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES

 

e7b19b6ad778        nginx               "nginx -g ''daemon of…"   16 minutes ago      Up 29 seconds       0.0.0.0:8888->80/tcp   my_nginx

 

6162daed25da        nginx               "nginx -g ''daemon of…"   30 minutes ago      Up 30 minutes       0.0.0.0:8080->80/tcp   hardcore_torvalds

可以看到 STATUS 显示容器’my_nginx’再次被启动。
如果由于某些问题而需重启容器,则可使用 restart 命令,这比单独停止和启动容器速度更快:

复制代码

 

$ docker restart my_nginx

可以像进程一样终止 docker 容器,比如终止 my_nginx 容器:

复制代码

 

$ docker kill my_nginx

再次列出 Docker 容器:

复制代码

 

$ docker ps -a

 

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS                  NAMES

 

e7b19b6ad778        nginx               "nginx -g ''daemon of…"   22 minutes ago      Exited (137) 7 seconds ago                          my_nginx

 

6162daed25da        nginx               "nginx -g ''daemon of…"   36 minutes ago      Up 36 minutes                0.0.0.0:8080->80/tcp   hardcore_torvalds

容器 my_nginx 未运行。此外,可在信息中看到一个正在运行的容器和一个已停止容器:

复制代码

 

$ docker info

 

Containers: 2

 

Running: 1

 

Paused: 0

 

Stopped: 1

 

Images: 3

 

Docker Exec Bash 和 Docker SSH

如果需要与 shell 进行交互以创建服务或解决问题,可以使用 docker exec 命令创建交互式 shell。比如,用 bash shell 从 ubuntu 映像启动一个容器:

复制代码

 

$ docker run --name my_ubuntu -it ubuntu:latest bash

 

root@a19c770b8621:/#

root @haracle#表示位于 Docker 容器的 bash shell 中,可以运行 shell 命令:

复制代码

 

root@a19c770b8621:/# ls

 

bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

 

root@a19c770b8621:/# pwd

 

/

列出 Docker 容器:

复制代码

 

$ docker ps

 

CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                  NAMES

 

a19c770b8621        ubuntu:latest       "bash"                   About a minute ago   Up About a minute                          my_ubuntu

 

6162daed25da        nginx               "nginx -g ''daemon of…"   About an hour ago    Up About an hour    0.0.0.0:8080->80/tcp   hardcore_torvalds

如上,my_ubuntu 正在运行。假设想将 Docker ssh 放入’my_ubuntu’容器中,可以使用 docker exec bash:

复制代码

 

$ docker exec -it my_ubuntu bash

 

root@a19c770b8621:/#

使用 docker exec 向容器发出命令。例如,可以直接用命令提示符在 my_ubuntu 容器上运行 ls 命令:

复制代码

 

$ docker exec -it my_ubuntu ls

 

bin dev home lib64 mnt proc run srv tmp var

 

boot etc lib media opt root sbin sys usr

以分离模式启动容器并使用 docker attach

以上示例用附加模式启动 ubuntu 容器,我们也可在分离模式下启动:

复制代码

 

$ docker run -it -d --name my_ubuntu_2 ubuntu:latest bash

 

75b28b7208359137b3e1dc2843387918e28b4c6c4860ef0cdeac79c205f5cbc4

验证容器是否正在运行:

复制代码

 

$ docker ps

 

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES

 

75b28b720835        ubuntu:latest       "bash"                   3 minutes ago       Up 3 minutes                               my_ubuntu_2

 

a19c770b8621        ubuntu:latest       "bash"                   15 minutes ago      Up 15 minutes                              my_ubuntu

 

6162daed25da        nginx               "nginx -g ''daemon of…"   2 hours ago         Up 2 hours          0.0.0.0:8080->80/tcp   hardcore_torvalds

使用 docker attach 命令获取 docker exec bash-like 效果:

复制代码

 

$ docker attach my_ubuntu_2

 

root@75b28b720835:/#

检查 Docker 镜像历史

Docker 社区镜像是分层创建的,可使用 Docker history 命令查看镜像创建方式。先看看有哪些镜像:

复制代码

 

$ docker images

 

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

 

ubuntu              16.04               5e8b97a2a082        2 weeks ago         114MB

 

ubuntu              latest              113a43faa138        2 weeks ago         81.2MB

 

nginx               latest              cd5239a0906a        2 weeks ago         109MB

查看 nginx 镜像历史:

复制代码

 

$ docker history nginx

 

IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT

 

cd5239a0906a        2 weeks ago         /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon…   0B                 

 

<missing>           2 weeks ago         /bin/sh -c #(nop)  STOPSIGNAL [SIGTERM]         0B                 

 

<missing>           2 weeks ago         /bin/sh -c #(nop)  EXPOSE 80/tcp                0B                 

 

<missing>           2 weeks ago         /bin/sh -c ln -sf /dev/stdout /var/log/nginx…   22B                

 

<missing>           2 weeks ago         /bin/sh -c set -x  && apt-get update  && apt…   53.7MB             

 

<missing>           2 weeks ago         /bin/sh -c #(nop)  ENV NJS_VERSION=1.15.0.0.…   0B                 

 

<missing>           2 weeks ago         /bin/sh -c #(nop)  ENV NGINX_VERSION=1.15.0-…   0B                 

 

<missing>           7 weeks ago         /bin/sh -c #(nop)  LABEL maintainer=NGINX Do…   0B                 

 

<missing>           8 weeks ago         /bin/sh -c #(nop)  CMD ["bash"]                 0B                 

 

<missing>           8 weeks ago         /bin/sh -c #(nop) ADD file:ec5be7eec56a74975…   55.3MB

使用镜像历史命令查找最近更改,如果在新版本镜像中发现问题,则此命令可帮助找到原因,也可用以下命令:

复制代码

 

$ docker image history nginx

Docker 检查容器

可以使用 docker inspect 命令查找有关系统的信息,运行 docker ps 命令列出 Docker 容器:

复制代码

 

$ docker ps

 

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES

 

6162daed25da        nginx               "nginx -g ''daemon of…"   2 hours ago         Up 2 hours          0.0.0.0:8080->80/tcp   hardcore_torvalds

使用 CONTAINER ID 检查容器(也可使用容器名称):

复制代码

 

$ docker inspect 6162daed25da

 

[

 

{

 

"Id": "6162daed25da50b98afca5f7ed8caca2289bf309b2547d87ae8674b899d604a4",

 

"Created": "2018-06-25T05:46:37.902211302Z",

 

"Path": "nginx",

 

"Args": [

 

 

 

 

"DriverOpts": null

 

}

 

}

 

}

 

}

 

]

该命令将以 JSON 格式提供大量信息,以下是查找容器 IP 地址的技巧:

复制代码

 

$ docker inspect 6162daed25da | grep "IPAddress"

 

            "SecondaryIPAddresses": null,

 

            "IPAddress": "172.17.0.2",

 

                    "IPAddress": "172.17.0.2",

使用 docker cp 将文件从本地复制到容器

再次列出 Docker 容器:

复制代码

 

$ docker ps

 

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES

 

6162daed25da        nginx               "nginx -g ''daemon of…"   3 hours ago         Up 3 hours          0.0.0.0:8080->80/tcp   hardcore_torvalds

NGINX 容器在端口 8080 上运行。因此,如果转到 http:// localhost:8080,将看到以下内容:

复制代码

 

"Welcome to nginx!"

如果看到此页面,则 nginx Web 服务器已成功安装并正常运行,需要进一步配置。
首先,在本地目录中创建 index.html:

复制代码

 

<html>

 

<Header><title>My Website</title></header>

 

<body>

 

Hello world

 

</body>

 

</html>

使用带有 ls 的 docker exec 命令检查 NGINX 容器中具有 index.html 的文件夹:

复制代码

 

$ docker exec -it hardcore_torvalds ls /usr/share/nginx/html

 

50x.html index.html

使用创建的本地文件覆盖容器 index.html 文件:

复制代码

 

$ docker cp index.html hardcore_torvalds:usr/share/nginx/html/

如果再次检查http://localhost:8080,应该可以看到问候语“Hello world”。
可使用 docker cp 命令在本地计算机和创建容器间移动文件,此方法可用于覆盖配置文件。

创建 Docker 镜像

如果想复制更多“Hello World”容器,必须将当前容器保存为镜像。
首先,停止容器:

复制代码

 

$ docker stop hardcore_torvalds

列出所有 Docker 容器:

复制代码

 

$ docker ps -a

 

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS               NAMES

 

75b28b720835        ubuntu:latest       "bash"                   About an hour ago   Exited (0) About an hour ago                       my_ubuntu_2

 

a19c770b8621        ubuntu:latest       "bash"                   2 hours ago         Exited (0) About an hour ago                       my_ubuntu

 

6162daed25da        nginx               "nginx -g ''daemon of…"   3 hours ago         Exited (0) 27 seconds ago                          hardcore_torvalds

从 STATUS 中,可以看到 NGINX’corecore_torvalds’容器已停止。使用 docker commit 命令创建新镜像:

复制代码

 

$ docker commit 6162daed25da nginx_hello_world_template

 

sha256:117d060587a316035ed5a776e613d9cfbeee9fbfe202c6edc9203820c7da987b

如果现在检查,将看到新镜像:

复制代码

 

$ docker images

 

REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE

 

nginx_hello_world_template   latest              117d060587a3        40 seconds ago      109MB

 

ubuntu                       16.04               5e8b97a2a082        2 weeks ago         114MB

 

ubuntu                       latest              113a43faa138        2 weeks ago         81.2MB

 

nginx                        latest              cd5239a0906a        2 weeks ago         109MB

可以使用此镜像并启动新 Docker 容器,新创建容器将具有“Hello world”页面,而不是“Welcome NGINX”页面。示例如下:

复制代码

 

$ docker run -it -d -p 8886:80 nginx_hello_world_template

 

4e042d76c39125471951626ba42cd609a65c73f041943298f74f4fc43dc5596a

 

$

删除 Docker 容器和镜像

Docker 容器和镜像会占用硬盘空间,因此最好定期清理。首先停止所有容器,然后列出所有容器,使用以下 Docker 命令执行操作:

复制代码

 

$ docker ps -a

 

CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS                         PORTS               NAMES

 

4e042d76c391        nginx_hello_world_template   "nginx -g ''daemon of…"   2 minutes ago       Exited (0) 8 seconds ago                           boring_keldysh

 

75b28b720835        ubuntu:latest                "bash"                   2 hours ago         Exited (0) About an hour ago                       my_ubuntu_2

 

a19c770b8621        ubuntu:latest                "bash"                   2 hours ago         Exited (0) About an hour ago                       my_ubuntu

 

6162daed25da        nginx                        "nginx -g ''daemon of…"   3 hours ago         Exited (0) 11 minutes ago                          hardcore_torvalds

如上,有 4 个处于停止状态的容器,可使用 docker rm 命令删除容器:

复制代码

 

$ docker rm 4e042d76c391 75b28b720835 a19c770b8621 6162daed25da

 

4e042d76c391

 

75b28b720835

 

a19c770b8621

 

6162daed25da

可使用 NAMES 代替 CONTAINER ID,容器列表现在应该是干净的:

复制代码

 

$ docker ps -a

 

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

列出 Docker 镜像:

复制代码

 

$ docker images

 

REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE

 

nginx_hello_world_template   latest              117d060587a3        11 minutes ago      109MB

 

ubuntu                       16.04               5e8b97a2a082        2 weeks ago         114MB

 

ubuntu                       latest              113a43faa138        2 weeks ago         81.2MB

 

nginx                        latest              cd5239a0906a        2 weeks ago         109MB

可使用 docker rmi 命令和 IMAGE ID 删除 docker 镜像:

复制代码

 

$ docker rmi 117d060587a3 5e8b97a2a082 113a43faa138 cd5239a0906a

最后,Docker 镜像列表应该是干净的:

复制代码

 

$ docker images

 

REPOSITORY TAG IMAGE ID CREATED SIZE

原文链接:https://dzone.com/articles/top-docker-commands-itsyndicate

docker 启动各种容器命令大全

docker 启动各种容器命令大全

安装步骤梳理

  1. 搜索镜像
  2. 拉取镜像
  3. 查看镜像
  4. 启动镜像
  5. 停止容器
  6. 移除容器

 

安装 tomcat

docker hub 好查找 tomcat 镜像  docker search tomcat

 

从 docker hub 上拉取 tomcat 镜像到本地  docker pull tomcat

 

使用 docker images 查看是否有拉取到 tomcat

使用 tomcat 镜像运行镜像成为容器  

    docker run -it -p 8080:8080 tomcat 

                -p 主机端口:容器端口

                -P 随机分配端口

                -i  交互

                -t 终端  

 

安装 mysql

docker hub 上查找 mysql 镜像  docker search mysql

 

 

 

docker hub 上拉取 mysql 镜像到本地  docker pull mysql:5.7

 

 

 

使用 mysql5.7 镜像创建容器运行存在问题

 

这是因为 mysql 镜像一启动中在加设置用户名和密码

修改成下面的命令

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

 

发现启动起来了









今天关于精华!Docker 常用命令大全docker常用命令大全简书的介绍到此结束,谢谢您的阅读,有关Docker for Windows(三)Docker镜像与容器的区别&常用命令、docker 入门到实战(三)docker常用命令、Docker 共有 13 个管理命令和 41 个通用命令,以下是常用 Docker 命令列表、docker 启动各种容器命令大全等更多相关知识的信息可以在本站进行查询。

本文标签: