docker容器操作常用命令
创建并启动一个容器
启动容器有两种方式,一种是以交互式启动,即启动后就直接进入到容器内部进行交互操作,还有一种就是以守护进程(后台运行)启动。
创建容器命令
docker run [OPTIONS] 镜像名:标签名 命令
[OPTIONS]常用参数说明
- -i 交互式运行容器(创建后马上启动容器并进入容器),通常与-t同时使用
- -t 启动后会进入容器命令行,通常与-i同时使用
- –name 为创建的容器指定一个名称
- -d 创建一个守护式容器在后台运行并返回容器ID
- -v 表示目录映射,格式为:-v 宿主机目录:容器目录
- -p 表示端口映射,格式为: -p 宿主机端口:容器端口
容器需要一个保持前台运行的进程。可以在启动容器的时候指定前台运行的命令,不指定则默认运行镜像内的命令
创建交互式容器
1
| docker run -it --name=dockertest centos:7 /bin/bash
|
特殊使用,交互式启动时加上–rm参数后,容器运行一次就结束并删除容器。通常用来测试某条命令在容器内执行结果时使用
1
| docker run -it --rm --name=dockertest centos:7 ip addr
|
创建守护式容器
守护式容器,俗称后台运行的容器,通常加上–restart=always参数,如果容器退出了会自动重启
1
| docker run -d --name=mycentos --restart=always centos:7
|
宿主机与容器文件拷贝
通过docker cp 命令可以将宿主机文件拷贝到容器内,也可以将容器内文件拷贝到宿主机
1
| docker cp 宿主机文件或目录 容器名称:容器文件或目录
|
1
| docker cp 容器名称:容器文件或目录 宿主机文件或目录
|
数据目录挂载
在创建容器的时候,将宿主机目录与容器目录进行映射,这样就可以 通过修改宿主机某个目录的文件从而去影响容器,挂载目录使用-v参数
1
| docker run -d -v 宿主机绝对路径目录:容器内目录 --name=容器名 镜像名
|
例:
创建容器时将宿主机目录/opt 挂载到容器目录/opt
1
| docker run -d -v /opt:/opt --name=mycentos centos:7
|
目录挂载只读权限
1
| docker run -d -v 宿主机绝对路径目录:容器内目录:ro --name=容器名 镜像名
|
端口映射
在创建容器的时候,经常需要将容器内部的应用端口暴露出来供外部访问。通常使用-p参数来映射端口,如果有多个端口需要映射,就多次使用-p参数即可。如果宿主机映射端口不指定的话,将随机映射一个端口
1 2
| docker run -d -p 宿主机IP:宿主机端口:容器端口/协议类型(tcp/udp)
|
几个举例
1 2 3 4 5 6 7 8
| docker run -d -p 2222:22 --name=mycentos centos:7
docker run -d -p 127.0.0.1:2222:22 --name=mycentos centos:7
docker run -d -p 2222:22/tcp --name=mycentos centos:7
docker run -d -p 127.0.0.1::22 --name=mycentos centos:7
|
查看容器映射了哪些端口
启动与停止已存在的容器
1
| docker start `docker ps -a -q`
|
1
| docker stop `docker ps -a -q`
|
查看容器
- CONTAINER ID 容器ID
- IMAGE 镜像
- COMMAND 初始命令
- CREATED 创建日期
- STATUS 容器状态
- PORTS 端口号
- NAMES 容器名字
查看所有容器,包括已退出的容器
查看最后一次运行的容器
查看停止的容器
1
| docker ps -f status=exited
|
删除容器
1
| docker rm `docker ps -a -q`
|
1
| docker rm `docker ps -a -q -f status=exited`
|
进入容器
进入启动的容器有好几种方式,下面介绍两种常见的方法
第一种:docker exec命令
1
| docker exec -it 容器名称|容器ID /bin/bash
|
通过docker exec登录的容器的退出,输入”exit”退出不停止容器
第二种:nsenter命令
nsenter命令通过容器的pid进入容器。该命令不是系统自带的,需要安装,具体安装也很简单,直接yum安装即可
安装nsenter
1
| yum install -y util-linux
|
进入容器
1 2 3 4
| docker inspect -f "{{.State.Pid}}" mycentos
nsenter -t Pid -m -u -i -n -p /bin/sh
|
查看容器内部细节
查看容器的详细信息,可以通过docker inspect命令查看。不带参数则显示所有的信息
docker inspect 参数 容器名|容器ID
1 2 3 4
| docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos
docker inspect -f "{{.State.Pid}}" mycentos
|