启动docker服务
sudo systemctl start docker.service
查看镜像文件
sudo docker images
查看容器 查看所有加 -a
sudo docker ps
获取镜像
sudo docker pull ubuntu
创建启动容器
sudo docker run -itd ubuntu /bin/bash
参数说明:
-i 交互式操作
-t 终端
-d 后台启动
启动/关闭容器
sudo docker start/stop [容器id]
进入容器
sudo docker exec -it [容器id] bash
查看容器实时log
docker logs -ft --tail 50 [container id]
f 实时输出日志;t 当前时间戳
后台启动docker,并指定宿主机端口和docker映射端口
sudo docker run -p 8000:80 -itd --privileged [imageID] [command] --restart=always
参数说明:
–privileged 容器将拥有访问主机所有设备的权限
command 填 bash 就行
containerID 容器id
restart=always 容器自启动
-v 左边宿主机路径:右边容器路径
将宿主机内的指定文件传输至容器内部的指定地址。
sudo docker cp [userFilePath] [containerID]:[DockerPath]
将修改后的容器重新打包成镜像
sudo docker commit [containerID] [ImageName]:[Version]
参数说明:
containerID 容器id
ImageName 镜像名(自己起的)
Version 版本说明(也是自己起的)
镜像导出
sudo docker save -o 镜像名(自己起的) 镜像名
sudo docker load < [UsertImageName.tar]
参数说明:
UsertImageName.tar 导出的 .tar镜像文件
实时刷新显示docker容器日志
sudo docker logs -tf --tail 50 [容器ID]
镜像删除
sudo docker rmi -f ImageID
容器删除
sudo docker rm ContainerID
容器自启动(已经运行的容器)
docker update --restart=always 容器名或容器ID
容器自启动后执行shell命令(centos镜像)
自己写一个shell脚本
将写好的脚本(.sh文件)放到目录 /etc/profile.d/ 下,系统启动后就会自动执行该目录下的所有shell脚本。
将本机通过portainer工具映射管理
sudo docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer
同一网段其他主机添加
vim /usr/lib/systemd/system/docker.service
# ExecStart中添加下面这一行,添加开放端口
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
重新加载系统的配置文件
systemctl daemon-reload
重启docker
service docker restart
完成之后可以用另一台服务器看一下是否成功
docker -H IP地址 ps
如果没有关闭防火墙,没有打开端口映射的话,会出现以下情况
点击跳转
已经创建的容器限制内存使用
1 启动容器时限制容器内存
docker run -m 64g --memory-swap -1
2 限制已启动容器的内存
docker stop containerId
docker update containerId -m 64g --memory-swap -1
docker start containerId
ps:命令详解
–memory 或 -m 限制容器的内存使用量(如10m,200m等)
–memory-swap # 限制内存和 Swap 的总和,不设置的话默认为–memory的两倍
如果只指定了 --memory 则 --memory-swap 默认为 --memory 的两倍
如果 --memory-swap 和 --memory 设置了相同值,则表示不使用 Swap
如果 --memory-swap 设置为 -1 则表示不对容器使用的 Swap 进行限制
如果设置了 --memory-swap 参数,则必须设置 --memory 参数
后期 update --memory 时数值不能超过 --memory-swap 的值,否则会报错 Memory limit should be smaller than already set memoryswap limit
3 查询是否配置成功
三 遇到的错误
1 ubuntu 宿主机系统默认未开启swap限制
(1) 错误表现:
Your kernel does not support swap limit capabilities or the cgroup is not mounted
(2)解决方案
sudo vi /etc/default/grub
2 命令中未设置–memory-swap
(1)错误表现
Memory limit should be smaller than already set memoryswap limit, update the memoryswap at the same time
(2)错误原因
docker 默认没有启用memory-swap交换内存,直接设置了内存问题会出问题,也就是说宿主 swap 支持使用多少则容器即可使用多少
(3)解决方式
设置内存的同时必须设置–memory-swap