docker容器常用操作

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
#将容器的22端口映射到本机的2222端口
docker run -d -p 2222:22 --name=mycentos centos:7
#映射端口时也可以绑定本机IP,将容器22端口映射到本机2222端口并绑定127.0.0.1
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
2
#查看上述举例的映射端口
docker port mycentos

启动与停止已存在的容器

  • 启动容器
1
docker start 容器名称|容器ID
  • 启动所有容器
1
docker start `docker ps -a -q`
  • 正常停止正在运行的docker容器
1
docker stop 容器名称|容器ID
  • 强行停止正在运行的容器
1
docker  kill 容器名称|容器ID
  • 停止所有在运行的容器
1
docker stop `docker ps -a -q`

查看容器

1
docker ps 
  • CONTAINER ID 容器ID
  • IMAGE 镜像
  • COMMAND 初始命令
  • CREATED 创建日期
  • STATUS 容器状态
  • PORTS 端口号
  • NAMES 容器名字

查看所有容器,包括已退出的容器

1
docker ps -a

查看最后一次运行的容器

1
docker ps -l

查看停止的容器

1
docker ps -f status=exited

删除容器

  • 删除指定容器
1
docker  rm 容器名称|容器ID
  • 删除所有容器
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
#查看容器pid
docker inspect -f "{{.State.Pid}}" mycentos
#进入容器,shell可以指定shell,不指定默认使用的是/bin/bash.
nsenter -t Pid -m -u -i -n -p /bin/sh

查看容器内部细节

查看容器的详细信息,可以通过docker inspect命令查看。不带参数则显示所有的信息

docker inspect 参数 容器名|容器ID

1
2
3
4
#查看容器IP地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos
#查看容器Pid
docker inspect -f "{{.State.Pid}}" mycentos