docker 容器管理应用

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:容器挂载在宿主机的文件(目录)会覆盖容器内原有的文件(目录)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 查看系统信息 帮助: 我们可以看到运行结果如下图所示。如果之前有学习过 docker 相关知识的同学,可能会发现一...
    夸克星阅读 4,919评论 0 0
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 9,347评论 0 5
  • 镜像 获取镜像 docker pull 拉取镜像 格式: docker pull [选项] [Docker Reg...
    小小了墨阅读 6,303评论 1 1
  • 短暂的7天过去了,收获满满、能量满满,在这7天里太多的感动、感恩!我相信这些满满的能量在我今后的生活中,定会时时化...
    3451a31eaa1c阅读 4,558评论 0 1
  • 年纪虽小,却对生活也有清晰的期待。当然心智稚嫩,却也一直在成长。我不确定今天我所想是否为以后我所想,不过可以确定的...
    鸭蛋00阅读 1,521评论 0 0