docker 容器相关命令使用

一,容器概述

​容器时指docker对外提供服务的一个实例,容器要想启动必须满足至少有一个进程运行在前台(容器内部的前台)。
查看容器使用资源
docker stats --no-stream --format "table {{.Name}}\t{{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}" | sort -k 4 -h

docker stats 监控容器资源消耗
docker stats 命令用来显示容器使用的系统资源。
默认情况下,stats 命令会每隔 1 秒钟刷新一次输出的内容直到你按下 ctrl + c。下面是输出的主要内容:
[CONTAINER]:以短格式显示容器的 ID。
[CPU %]:CPU 的使用情况。
[MEM USAGE / LIMIT]:当前使用的内存和最大可以使用的内存。
[MEM %]:以百分比的形式显示内存使用情况。
[NET I/O]:网络 I/O 数据。
[BLOCK I/O]:磁盘 I/O 数据。
[PIDS]:PID 号。

如果我们只想查看个别容器的资源使用情况,可以为 docker stats 命令显式的指定目标容器的名称或者是 ID。
docker stats --no-stream 【指定目标容器的名称或者是 ID】

你如果想要知道,一个运行起来的容器,占用了多少磁盘空间该怎么做呢?
docker ps -s
没错SIZE列,就是容器占用空间的大小,那这个括号外面的和里面的分别是什么意思
SIZE:
括号外面的,如:2B. 表示现在向容器的可写层写入的数据量的大小。
括号里面的(virtual 43.6MB。表示:镜像大小 + 可写层数据量大小 之和。

二、启动容器

格式:
	docker run [参数] [镜像名称|ID] [指定的容器运行命令(如果不设置则使用默认命令)]

流程:
	1、执行一个docker run
	2、检查本地是否存在所需镜像,如果没有则去远程镜像仓库下载。
	3、按照镜像和参数启动一个容器

示例:
[root@docker ~]# docker run -d nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
Digest: sha256:4cf620a5c81390ee209398ecc18e5fb9dd0f5155cd82adcbae532fec94006fb9
Status: Downloaded newer image for nginx:latest
22b601ab6f9f7010221440f1158e0ece348768e4df1b133690f1c503ed012e4d
[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS     NAMES
22b601ab6f9f   nginx     "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp    interesting_banach

参数:
-d : 只以守护进程的模式运行一个容器
-i : 打开标准输出
-t :  创建一个窗口(伪终端)
-p(小写的p字母) : 指定映射端口
	docker run -d -p 30080:80 nginx;docker ps
-P(大写的P字母) : 随机映射端口
	docker run -d -P nginx; docker ps
-v : 指定挂载卷(将本机的目录映射到容器内部)
	作用:
		1、将本机目录"软链接"容器内部
		2、可以持久化容器内部数据
	示例:
		docker run -d -P -v /root/test:/usr/share/nginx/html nginx:latest

--name : 指定容器的名称
	作用:
		1、指定容器名称
		2、将名称解析到docker dns上
	示例:
		docker run -d --name nginx nginx

--link : 将一个容器的网络连接到另外一个容器
	格式:
		--link 容器名称:连接别名
	
	示例:
		docker run -d --name test_nginx  nginx
		docker run -it --link test_nginx:test_nginx centos

--rm : 当容器的生命周期结束时,自动删除容器
	示例:
		docker run -d --rm centos sleep 10
	
--network : 连接网桥(同一个网桥内的所有容器网络互通)
	示例:
		docker network create chenyang
		docker run -d --network chenyang nginx

三、停止容器

停止容器,并没有删除容器。
格式:
	docker stop [容器ID及名称]
示例:
	docker stop agitated_newton
	[root@docker ~/test]# docker ps -a | grep agitated_newton
d4b2a919cb7f   nginx          "/docker-entrypoint.…"   21 minutes ago      Exited (0) 28 seconds ago                              agitated_newton

四、启动容器

格式:
	docker start [容器ID及名称]
示例:
	[root@docker ~/test]# docker start agitated_newton
    agitated_newton
    [root@docker ~/test]# docker ps -a | grep agitated_newton
    d4b2a919cb7f   nginx          "/docker-entrypoint.…"   23 minutes ago      Up 2 seconds                   80/tcp                  agitated_newton

五、删除容器

格式:
	docker rm [容器ID及名称]
示例:
	[root@docker ~/test]# docker rm laughing_hopper
    laughing_hopper
参数:
-f : 强制删除

六、查询容器

docker ps 默认查询正在运行的容器

格式:
	docker ps [参数]

示例:
[root@docker ~/test]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED             STATUS             PORTS                   NAMES
d4b2a919cb7f   nginx          "/docker-entrypoint.…"   26 minutes ago      Up 3 minutes       80/tcp                  agitated_newton

参数:
-a : 查询本机上所有的容器(包括已经停止了的)
-q : 只显示容器ID

列表参数:
    CONTAINER ID:容器ID
    IMAGE       :镜像ID
    COMMAND     :启动容器运行的命令      
    CREATED     :容器创建的时间
    STATUS      :状态(Up:启动状态  Exitd:停止状态)
    PORTS       :端口映射
    NAMES		:容器名称

七、查看容器的详细信息

格式:
	docker inspect [容器ID或名称]
示例:
[root@docker ~/test]# docker inspect 22b601ab6f9f
[
    {
        "Id": "22b601ab6f9f7010221440f1158e0ece348768e4df1b133690f1c503ed012e4d",
        "Created": "2021-01-12T09:29:07.881750107Z",
        "Path": "/docker-entrypoint.sh",
        "Args": [
            "nginx",
            "-g",
            "daemon off;"
        ],
...

参数:
-f : 指定使用golang语言模板
	示例:
	[root@docker ~/test]# docker inspect -f '{{ .State.Status }}' d4b2a919cb7f
    running

八、复制命令

格式:
	第一种:复制到容器内
		docker cp [宿主主机的路径] [容器ID]:[容器内的路径]
		
	第二种:复制到容器外
		docker cp [容器ID]:[容器内的路径] [宿主主机的路径]

示例:
	[root@docker ~]# docker cp test/demo.html f50bb42dd583:/usr/share/nginx/html
    [root@docker ~]# docker cp f50bb42dd583:/usr/share/nginx/html/50x.html .
    [root@docker ~]# ll
    total 3284696
    -rw-r--r--  1 root root        494 Dec 15 21:59 50x.html

九、进入容器

exec(推荐)
	解释:
		exec不是进入容器的命令,而是碰巧有这种功能。其功能是在容器外向容器内执行一条命令的命令。
	格式:
		docker exec [参数] [容器的ID或名称] [命令]
	示例:
		[root@docker ~]# docker exec -i -t ead6cdefcd01 bash

attach
	解释:
		进入容器。通过一个管道连接到容器的顶级进程。
		缺点:当attach退出是,顺带把顶级进程也带走了。
	格式:
		docker attach [容器ID或名称]
	示例:
		[root@docker ~]# docker attach mystifying_kirch

nsenter
	解释:建立两个进程之间的互通管道
	格式:
		nsenter --target $( docker inspect -f {{.State.Pid}} nginxv1 ) --mount --uts --ipc --net --pid
		

ssh
	解释:通过ssh隧道连接
	格式:
		ssh root@x.x.x.x

十,查看容器启动日志

格式:
      docker log [参数] [容器名称或ID]
示例:
     [root@docker ~]# docker logs my_ngixn 

十一,docker容器网络模式

格式:
	docker network [command]

命令:
	ls:查看网桥列表
	示例
		[root@docker ~/conf.d]# docker network ls
        NETWORK ID     NAME       DRIVER    SCOPE
        a985cfca04ae   bridge     bridge    local
        c3d4dd997242   chenyang   bridge    local
        a425f4733836   host       host      local
        5902bdedd1b1   lnmd       bridge    local
        ce7e9b514c2a   none       null      local
	
	create:创建网桥
	示例:
        [root@docker ~/conf.d]# docker network create test
        [root@docker ~/conf.d]# docker network ls | grep test
        45a9b8795a7c   test       bridge    local

	rm : 删除网桥
	示例:
	[root@docker ~/conf.d]# docker network rm test
        test
        [root@docker ~/conf.d]# docker network ls | grep test
         
        
	inspect : 查看网桥详细信息
	示例:
	[root@docker ~/conf.d]# docker network inspect -f '{{ .Containers }}'  lnmd
	
	prune: 清理网桥(未被使用的网络模式)
	示例:
	docker network prune

	connect: 连接一个网桥
	示例
	docker network connect [参数] [网桥名称] [容器名称]
	
	disconnetc: 断开一个网桥连接
	示例:
	[root@docker ~/conf.d]# docker network disconnect lnmd sleepy_shaw
        [root@docker ~/conf.d]# docker exec -it sleepy_shaw bash
        [root@c548b0b76e31 /]# ping 767f43bc01d7
        ping: 767f43bc01d7: Name or service not known

posted @ 2021-01-12 19:03  nick_xm  阅读(211)  评论(0编辑  收藏  举报