0. 容器常用命令及选项
0.1 创建容器常用选项
图片.png
0.2 容器资源限制常用选项
图片.png
0.3 常用选项
图片.png
1. 创建容器
Usage: docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
-i:交互式
-t:分配伪终端
-d:运行容器到后台
-p [宿主机]:[容器] :暴露端口
-h:主机名
--name:容器名字
// 应用
# 简单创建
docker container run -d nginx
# 创建一个主机名为 nginx_web、环境变量 name=zun、容器名为 nginx 后台运行的容器
docker run -d -p 8080:80 --name=nginx -e age=18 -h nginx_web nginx
测试:
curl 172.16.1.16:8080 -- 172.16.1.16 为宿主机
2. 列出容器
docker ps
docker container ls
# 获取全部容器的ID
docker ps -aq
3. 查看容器的信息
# 根据容器 ID 查看容器信息
docker ps -- 获取容器 ID
docker container inspect 01d4364252c5|more
# dns 信息
"ResolvConfPath": "/var/lib/docker/containers/01d4364252c5cb4d4918231122e1a30baa7145f2a2daaa3922fd8ba5
a106cd2c/resolv.conf",
# 主机名信息
"HostnamePath": "/var/lib/docker/containers/01d4364252c5cb4d4918231122e1a30baa7145f2a2daaa3922fd8ba5a1
06cd2c/hostname",
# ip 地址信息
"HostsPath": "/var/lib/docker/containers/01d4364252c5cb4d4918231122e1a30baa7145f2a2daaa3922fd8ba5a106cd2c/hosts",
# 日志信息
"LogPath": "/var/lib/docker/containers/01d4364252c5cb4d4918231122e1a30baa7145f2a2daaa3922fd8ba5a106cd2c/01d4364252c5cb4d4918231122e1a30baa7145f2a2daaa3922fd8ba5a106cd2c-json.log"
# 网关
"Gateway": "172.17.0.1",
# ip地址
"IPAddress": "172.17.0.2"
4. 在运行的容器中执行命令
Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
COMMAND:bash/sh
docker ps
docker exec -it 01d4364252c5 bash
5. 查看日志
Usage: docker logs [OPTIONS] CONTAINER
//方法一
docker logs 9f4c6393e470 -f
//方法二
docker container inspect 9f4c6393e470 |grep json.log
tail /var/lib/docker/containers/9f4c6393e470e29d8866fe72691246096bf8841584ff2094a0d6199fa10efe4d/9f4c6393e470e29d8866fe72691246096bf8841584ff2094a0d6199fa10efe4d-json.log -f
6. 资源限制
// 内存限制
[root@muban ~]# docker container run --help |grep memo
--kernel-memory bytes Kernel memory limit
-m, --memory bytes Memory limit -- 最大内存使用量
--memory-swap bytes Swap limit equal to memory plus swap: '-1' to enable unlimited swap -- 允许交换到磁盘的内存量
--memory-swappiness int Tune container memory swappiness (0 to 100) (default -1) -- 容器使用SWAP分区交换的百分比(0-100,默认为-1)
# 创建一个最大内存使用量为 0.5G 的容器
docker container run -d -m 0.5G nginx
// 禁用OOM Killer
–oom-kill-disable -- 当内存使用过大时,自动释放某些程序的资源
docker container run -d -m 100M --oom-kill-disable nginx
ps: 通过设置--oom-kill-disable选项来禁止 OOM killer 杀死容器内进程。但请确保只有在使用了-m/--memory选项时才使用--oom-kill-disable禁用 OOM killer。如果没有设置-m选项,却禁用了 OOM-killer,可能会造成出现 out-of-memory 错误时,系统通过杀死宿主机进程或获取更改内存
// cpu 限制
[root@muban ~]# docker run --help |grep cpu
-c, --cpu-shares int CPU shares (relative weight) -- cpu共享(相对权重)
--cpus decimal Number of CPUs -- cpu 数量
--cpuset-cpus string CPUs in which to allow --限制容器使用特定的CPU核心,如(0-3, 0,1)
# 创建一个最大内存使用量为 100M,允许最多使用 50% cpu 的容器
docker run -d -m 100M --cpus=.5 nginx
# 创建一个最大内存使用量为 100M,允许最多使用一个半的 cpu 的容器
docker run -d -m 100M --cpus=1.5 nginx
ps: 容器少没必要限制资源,容器多需限制资源
7. 查看容器资源使用情况
# 单个容器(默认:流式)
docker stats 0f3f931644ac
# 查询某个容器当前 cpu 使用情况
docker stats 77976729c15d --no-stream |awk '{print $4}'
# 所有容器
docker stats
8. 创建镜像
Usage: docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
docker container ls
docker container commit 8b7c9dbab4c5 nginx:v1
9. 拷贝文件/文件夹到容器
docker container ls
docker cp zun.txt 8b7c9dbab4c5:/tmp
docker container exec 8b7c9dbab4c5 ls /tmp
10. 查看容器端口映射
docker container port 77976729c15d
11. 查看一个容器运行的进程
docker container top 8b7c9dbab4c5
12. 删除容器
Usage: docker container rm [OPTIONS] CONTAINER [CONTAINER...]
Remove one or more containers
Options:
-f, --force Force the removal of a running container (uses SIGKILL)
-- 强制移除正在运行的容器
# 移除单个容器
docker container rm 8b7c9dbab4c5
# 强制移除全部容器(包含正在运作的容器)
docker container rm `docker container ls -aq` -f
13. 停止/开启/重启容器
docker container stop 80b20fb056d3
docker container start 80b20fb056d3
docker container restart 80b20fb056d3
14. 容器数据持久化
# 作用:
1. 多个运行容器之间共享数据。
2. 当容器停止或被移除时,该卷依然存在。
3. 将容器的数据存储在远程主机或其他存储上(间接)
mkdir /data/nginx/html -p
touch /data/nginx/nginx.conf -- 自己配置,如配置有误,容器不能正常运行
touch /data/nginx/html/index.html
docker run -d -v /data/nginx/html/:/usr/share/nginx/html/ \
-v /data/nginx/nginx.conf:/etc/nginx/nginx.conf nginx
# 查看详细信息
docker inspect 916d76220fbc|grep -C 6 /data/nginx
"Mounts": [
{
"Type": "bind",
"Source": "/data/nginx/html",
"Destination": "/usr/share/nginx/html",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/data/nginx/nginx.conf",
"Destination": "/etc/nginx/nginx.conf",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
]
ps:容器挂载在宿主机的文件(目录)会覆盖容器内原有的文件(目录)
网友评论