内容纲要
上一篇我们主要讲述了docker是什么以及安装,那么这一篇中,我们将讲述一下docker基本命令。
docker命令主要可以分为以下几类
- 镜像管理
- 容器管理
- 网络管理
- 存储管理
- 镜像构建
首先是镜像管理,每一个镜像都是一个运行容器的模板,在讲述docker镜像类命令之前,我们需要先做一些简单的了解。
之前我们说过,构建一个容器需要模板,基于这个模板构建环境,我们将这个模板称为镜像。每个服务都有自己的模板,同时,同一服务不同版本也应该有自己模板,因此我们需要构建一个仓库,用来存放这些的镜像。这个仓库就叫做镜像仓库。当然镜像仓库不可能只有一个,官方的,第三方的,自己私人构建的。。。这些仓库可能存放有同一个服务的镜像。
因此为了解决上述情况,一个镜像文件的命名通常是:
仓库地址/项目名称/服务:标签
HOST/NAMESPACE/NAME:TAG
如果使用的是官方源,第一项会省略,如果是官方项目,那么第二项也会被省略
- nginx
- jwilder/nginx-proxy
- registry.aliyuncs.com/google_containers/etcd
TAG是镜像最重要的一个组成,意味标签,通常来说,标签对应的是版本,latest意味最新
我们可以使用docker image ls 来查看镜像的TAG
常用的镜像管理命令有以下
docker save IMAGE -o /PATH/TO/FILE #将指定镜像打包为一个tar文件
load -i /PATH/TO/FILE #从指定文件内加载镜像
search [OPTIONS] TEAM #搜索镜像
pull [OPTIONS] NAME[:TAG |@DIGEST] #下载镜像
镜像下载保存路径:/var/lib/docker/overlay2/镜像ID
images [OPTIONS] [REPOSITORY[:TAG]] #查看镜像,与下面的命令相同
image ls [OPTIONS] [REPOSITORY[]:TAG]
inspect #IMAGE 显示镜像的详细信息
rmi IMAGE... #删除镜像
tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] #更改指定镜像的标签
#TARGET_IMAGE[:TAG]格式一般形式
#仓库主机FQDN或IP[:端口]/项目名(或用户名)/image名字:版本
#通常遵循规则才可以上传到指定的仓库
常用的镜像命令之后就是常用的容器命令
docker run [OPTIONS] [IMAGE] [shell] [参数]
选项:
-i #通常与-t一起使用,-t分配一个终端,-i进入容器
-d #后台运行,默认前台
-p list #暴露容器的端口到主机
-h string #容器主机名
-v --volume=[host-src]container-dest[:<options>]
ro
rw
--rm #容器退出时自动删除
#从容器退出时,容器将自动停止
#同时按ctrl+p+q,可以让容器不退出
--env list #设定环境变量
--env-file list #设定环境变量文件
--expose list #设定暴露端口
--name string #设定容器名称
--network string #设定使用的网络类型
--volume list #设定存储卷
ps 列出容器
-a --all
-s --size
-l --latest
-q --quiet
top CONTAINER [ps OPTIONS] #查看容器内进程
stats [OPTIONS] [CONTAINER...] #显示容器资源使用情况
-a --all
rm [OPTIONS] CONTAINER [CONTAINER...] #删除容器
container rm [OPTIONS] CONTAINER [CONTAINER...] #删除容器
container prune [OPTIONS] #删除停止的容器
start | stop | restart | pause | unpause 容器ID #启动,停止,重启,暂停,取消暂停一个容器
kill [OPTIONS] CONTAINER [CONTAINER...] #杀死指定容器
exec [OPTIONS] CONTAINER COMMAND [ARG...] #让运行中的容器运行一个额外的程序
-d 后台运行
-e 设置环境变量
-i -t
常见用法
docker exec -it 容器ID sh |bash
在运行的容器启动新的进程,可移植性单次命令,以及进入容器
使用exit退出,但容器还在运行
port CONTAINER [PRIVATE_PORT[/PROTO]] 查看容器的端口映射关系
log [OPTIONS] CONTAINER #查看容器日志
cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH | -
#将容器内部SRC_PATH复制到宿主机的DEST_PATH
cp [OPTIONS] SRC_PATH | - CONTAINER:DEST_PATH #将宿主机内部的SRC_PATH复制到容器内部的DEST_PATH
在了解容器的基本命令后我们需要对容器在了解一些基本概念
一个容器在创建之后通常可以通过docker ps -a
来查看,一般的来说会有以下属性
- CONTAINER ID:容器ID
- IMAGE:使用的镜像
- COMMAND:内部运行的进程
- CREATED:创建时间
- STATUS:容器当前的状态
- PORTS:容器暴露到外界的端口
- NAMES:容器名称
另外,一个容器想要处于UP状态,那么容器内部必须运行一个进程,如果该进程退出,那么容器将会停止。通常来说,大部分服务类应用在容器中都是前台运行。
docker容器与镜像的命令主要就是这些,当然可能会有一些遗漏,但常用的基本都有。
下一篇,我们将讲述docker网络,存储。