欢迎光临范阳布衣的运维博客
分享工作和学习中的知识、技术

docker-容器管理

创建容器常用命令

常用指令

指令 描述
-i,–interactive 交互式
-t,–tty 分配一个伪终端
-d,–detach 运行容器到后台
-a,–attach list 附加到运行的容器
–dns list 设置DNS服务器
-e, –env list 设置环境变量
–env-file list 从文件读取环境变量
-p,–publish list 发布容器端口到主机
-P,–publist-all 发布容器所有EXPOSE的端口到宿主机随机端口
-h,–hostname string 设置容器主机名
–ip string 指定容器IP,只能用于自定义网络
–link list 添加连接到另一个容器
–network 连接容器到一个网络
–mount nount 挂载宿主机分区到容器
-v,–volume list 挂载宿主机目录到容器
–restart string 容器退出时重启策略,默认no [always|on-failure]
–add-host list 添加其他主机到容器中/etc/hosts

资源限制指令

资源限制指令 描述
-m,–memory 容器可以使用的最大内存量
–memory-swap 允许交换到磁盘的内存量
–memory-swappiness=<0-100> 容器使用swap分区交换的百分比(0-100,默认为-1)
–memory-reservation 内存软限制,Docker检测主机容器征用或内存不足是所激活的软件限制,使用此选项,值必须设置低于—memory,以使其优先
–oom-kill-disable 当宿主机内存不足时,内核会杀死容器中的进程,建议设置了-memory选项再禁用—oom。如果没有设置,主机可能会耗尽内存
–cpus 限制容器可以使用多少可用的CPU资源
–cpuset-cpus 限制容器可以使用特定的CPU
–cpu-shares 此值设置为大于或小于默认1024只,以增加或减少容器的权重,并使其可以访问主机CPU周期的更大或更小比例

docker container run 运行一个容器

[root@docker ~]# docker container run -it -d --name bs busybox
b9514bbe3fa3819f29470dcb85ea3d832554d1ff0801c5ac73cacafb890ae011
[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b9514bbe3fa3busybox"sh"                4 seconds ago       Up 4 seconds                            bs

–e 传入变量

[root@docker ~]# docker container run -it -d -e a=123 --name bs01 busybox
799d7d2d4b8d3f58b0ce5834ac79d6b4d87af023cb4eff729e362bd27886c8b8
[root@docker ~]# docker exec  -it bs01 sh
/ # echo $a
123

-p发布容器端口到主机

[root@docker ~]# docker container run -it -d -p 8080:80 --name mynginx nginx:latest
[root@docker ~]# docker ps -a
CONTAINER IDIMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
10f7d061ddcanginx:latest        "nginx -g 'daemon of…"   3 minutes ago       Up 3 minutes        0.0.0.0:8080->80/tcp   mynginx

–restart=always容器退出后,容器重启

root@docker ~]# docker container run  -it -d -P --name mynginx01 --restart=always nginx

–cpus 控制容器CPU使用率

[root@docker ~]# docker container run -itd --name mynginx03 --cpus 2 nginx

–memory 控制容器内存使用率

[root@docker ~]# docker container run -idt --name mynginx04 --memory 2048m nginx

ctrl+p+q 退出容器,且容器继续运行

管理容器常用命令

指令 描述
ls 列出容器
inspect 显示一个或多个容器详情
attach 附加本地标准输入,输出和错误到一个运行的容器
exec 在运行的容器中执行命令
commit 创建一个新镜像来自一个容器
cp 拷贝文件/文件夹到一个容器
logs 获取一共容器日志
port 列出或指定容器端口映射
stats 显示容器资源使用统计
top 显示一个容器运行的进程
update 更新一个或多个容器配置
stop/start 停止/启动一个或多个容器
rm 删除一个或多个容器

docker container ls  列出运行的容器

[root@docker ~]# docker container ls
CONTAINER IDIMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
49134166b797busybox"sh"About an hour ago   Up 15 minutes                               bs02restart
1e3d0563bfa7nginx               "nginx -g 'daemon of…"   About an hour ago   Up 15 minutes       0.0.0.0:4002->80/tcp    mynginx01
10f7d061ddcanginx:latest        "nginx -g 'daemon of…"   About an hour ago   Up 15 minutes       0.0.0.0:8080->80/tcp    mynginx
799d7d2d4b8dbusybox"sh"                     About an hour ago   Up 15 minutes                               bs01
f5c15b48abbbbusybox"sh"2 hours ago         Up 15 minutes                               bs

docker container inspect 查看容器详细信息

[root@docker ~]# docker container inspect mynginx
[
    {
"Id": "10f7d061ddca79b9a6580dd4cdec34691523fe1b7e385c859ab93e18c76080b0",
"Created": "2018-06-26T06:00:34.475583837Z",
"Path": "nginx",
"Args": [
"-g",
"daemon off;"
        ],
......
"NetworkID": "14a4c1cf986e21971c090a2946045f95c17ee0e2ee681cb5873008cfba518a27",
"EndpointID": "713fc826656249305a72015659543fdfc6d203ffcf6aff684739bc43ed408b5f",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.7",
                    "IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:07",
"DriverOpts": null
}
            }
        }
    }
]

docker container attach附加本地标准输入,输出和错误到一个运行的容器,不能附加进程容器

[root@docker ~]# docker container attach mynginx  ##没有显示输入/输出
​
[root@docker ~]# docker container attach bs01
/ #

docker container top 查看容器进程

[root@docker ~]# docker container top mynginx
UIDPID                 PPID                C                   STIME               TTY                 TIME                CMD
root10509               10493               0                   15:56               pts/0               00:00:00            nginx: master process nginx -g daemon off;
10110545               10509               0                   15:56               pts/0               00:00:00            nginx: worker process

docker container attach 进入到一个容器 方法一

[root@docker ~]# docker container attach  bs
/ #

docker container exec 进入到容器 方法二,退出容器后,容器继续运行

[root@docker ~]# docker exec -it nginx bash
/ #

bash和sh的区别

[root@docker ~]# docker container exec -it mynginx07 bash
root@efd3a1d4e222:/#
[root@docker ~]# docker container exec -it mynginx07 sh
#

docker container commint 提交一个运行的容器镜像

[root@docker ~]# docker container commit bs01 busybox:V2
sha256:2f83a66b9898ce2274b8efdddf303870b9da8379a28b4de4d972ef9c656cb78a
[root@docker ~]# docker images
REPOSITORYTAG                 IMAGE ID            CREATED             SIZE
busyboxV22f83a66b9898        50 seconds ago      1.15MB
### docker container cp 将宿主机上的文件拷贝到容器中
[root@docker ~]# docker container cp ./anaconda-ks.cfg bs01:/root
[root@docker ~]# docker container exec bs01 ls /root  ##产看拷贝的文件
anaconda-ks.cfg
#重启容器文件不会丢失,删除容器,文件才会丢失

docker logs 查看容器日志

[root@docker ~]# docker container logs bs01
/ # ll
sh: ll: not found
/ # ls
bin   dev   etchome  proc  rootsys   tmp   usrvar
/ # yum
sh: yum: not found

查看宿主机中容器的输出日志

[root@docker ~]# ls /var/lib/docker/containers/运行容器的ID

docker container port 查看容器的端口映射

[root@docker ~]# docker container port mynginx
80/tcp -> 0.0.0.0:8080
### docker container stats 查看容器资源使用率
[root@docker ~]# docker stats mynginx04
### docker container stop/start 停止/启动一个容器
[root@docker ~]# docker container stop mynginx07
mynginx07
[root@docker ~]# docker container start 8523fde32e9d
8523fde32e9d

docker container rm 删除一个容器

[root@docker ~]# docker container rm mynginx07
mynginx07
[root@docker ~]# docker container rm –f mynginx06  强制删除容器,
mynginx06
[root@docker ~]# docker container rm -f $(docker ps -qa) #强制批量删除容器
未经允许不得转载:范阳布衣 » docker-容器管理