docker常用容器管理命令

1.创建容器

1
2
3
4
5
6
7
docker create [OPTIONS] CONTAINER_NAME[:TAG]

options:

-t #将容器的标准输出绑定到一个伪终端

-i #交互

2.启动容器

1
docker start CONTAINER_ID

3.运行容器(相当于docker create + docker start)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
docker run [OPTIONS] NAME[:TAG]

options:

-d #在后台运行容器

-t #将容器的标准输出绑定到一个伪终端

-i #交互

-c,--cpu-shares [=0] #调整容器使用 CPU 的权重

-m,--memory [=MEMORY] #调整容器使用 Memory 的大小

#执行 docker run,Docker 服务端在后台运行的操作如下:

#1.检查本地是否存在指定的镜像,不存在就从公有仓库下载;

#2.利用镜像创建并启动一个容器;

#3.分配一个文件系统,并在只读的镜像层外面挂在一层可读层;

#4.从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中;

#5.从地址池配置一个IP地址给容器;

#6.执行用户指定的应用程序;

#7.执行完毕后容器被终止。

4.查看容器

1
2
3
docker ps #查看启动的docker容器

docker ps -a #查看所有的docker容器,包括启动和未启动的

5.查看容器的资源使用状况

1
docker stats #查看容器cpu,内存,网络的使用情况

6.进入容器

1
2
3
4
5
6
7
8
9
10
11
12
13
#第一种:
docker attach CONTAINER_ID

#第二种:
docker exec -ti CONTAINER_ID

#第三种:通过nsenter:
nsenter -t PID -m -u -i -p -n
#PID通过docker inspect -f "{{ .State.Pid }}" dockername 获取

#第一二种的区别在于,当有多个窗口同时连接到容器时,docker attach 会同步所有窗口的输出,也就说当某个窗口挂起时,其他的窗口也将无法工作,而 docker exec 不会出现此类的问题

#第三种在exit后容器不会关闭

7.终止容器(执行命令后容器会处于 exited 状态,其中的数据不会丢失,可以通过 docker start 来启动它)

1
2
3
4
5
6
7
8
9
docker stop CONTAINER_ID

#给容器内进程发送9信号

docker kill CONTAINER_ID

#停止所有正在运行的容器

docker kill $(docker ps -q)

8.重启容器

1
docker restart CONTAINER_ID

9.移除容器(执行命令后,容器内的数据会丢失)

1
2
3
4
5
docker rm CONTAINER_ID

#移除所有已停止的容器

docker rm $(docker ps -a -q)
# 推荐文章
  1.深刻理解Docker镜像大小
  2.k8s专题[1.k8s基础概念]
  3.k8s专题[10.使用Spinnaker持续发布应用]
  4.k8s专题[2.k8s设计原则]
  5.k8s专题[3.k8s基础组件]

评论


:D 一言句子获取中...