1.docker常用管理命令
格式 docker image 【】
ls 列出镜像
bulid 构建镜像利用dockerfile
history 查看
inspect 显示一个或多个镜像的详细信息
pull 从镜像仓库拉取镜像
rm 移除一个或多个镜像
push 推送一个镜像到镜像仓库
prune 移除没有被标记或者没有被任何容器引用的镜像
tag 创建一个引用源镜像标记目标镜像
save 保存一个或多个镜像到一个tar文件
load 加载镜像来自tar或者标准输入
1.docker常用管理命令
格式 docker image 【】
ls 列出镜像
bulid 构建镜像利用dockerfile
history 查看
inspect 显示一个或多个镜像的详细信息
pull 从镜像仓库拉取镜像
rm 移除一个或多个镜像
push 推送一个镜像到镜像仓库
prune 移除没有被标记或者没有被任何容器引用的镜像
tag 创建一个引用源镜像标记目标镜像
save 保存一个或多个镜像到一个tar文件
load 加载镜像来自tar或者标准输入
2.docker中run参数的用法
-i, -interactive 交互式
-t, -tty 分配一个伪终端
主要-it基本是一起用的主要用途是进入容器和创建一个伪进程
例:docker exec -it 容器id bash (进入到容器里面)
例:docker run -it -d nginx(镜像) (创建一个伪进程,使进程不退出)
-d,-detach 运行容器到后台
例:docker run -a nginx(镜像) (后台运行nginx镜像)
-e, -env 设置环境变量
例:docker run -d -e env=prod nginx(镜像) (nginx镜像使用prod环境变量)
-p, -publish list 发布容器端口到主机
例:docker run -d -p 8080:80 nginx(镜像) (后台运行docker镜像并暴露本地的8080端口作为容器对外映射端口)
--name string 指定容器名称
例:docker run -d --name web nginx(镜像) (容器名称为web,使用nginx镜像)
-h, -hostname 设置容器主机名
例:docker run -d -h web nginx(镜像) (容器主机名称为web,使用nginx镜像)
--restart string 容器退出时重启策略,默认no, 可选值: [always|on-failure]
例:docker run -d --restart=always nginx(镜像) (容器退出值为always重新拉起镜像)
-m, -memory 容器可以使用的最大内存量
例:docker run -m="500m" nginx(镜像) (容器只可以使用500m的宿主机内存)
--cpus 可以使用的CPU数量
例:docker run --cpus="1" nginx(镜像) (容器只可以使用1个宿主机的cpu)
-cpuset-cpus 限制容器使用特定的CPU核心,如(0-3, 0,1)
-cpu-shares CPU共享(相对权重)
总结上面的命令
docker run -d -e env=prod -p 8080:80 --name web -h web --restart=always -m="500m" --cpus="1" nginx(镜像)(启动一个环境变量为prod,
主机名和容器名称为web,对外映射端口为8080,内存为500m,cpu为1核的容器,如果容器退出值为always即重新拉起镜像)
--ip string 指定容器IP,只能用于自定义网络
--network 连接容器到一个网络
-V, -volume list --mount mount (新方式) 将文件系统附加到容器
-P, -publish-all 发布容器所有EXPOSE的端口到宿主机随机端口
-memory-swap 允许交换到磁盘的内存量
-memory-swappiness= <0-100> 容器使用SWAP分区交换的百分比(0-100, 默认为-1)
-oom-kill-disable 禁用OOM Killer
-cpuset-cpus 限制容器使用特定的CPU核心,如(0-3, 0,1)
-cpu-shares CPU共享(相对权重)
3.常用管理命令
ls 列出容器
例:docker container ls (查看列出所有容器)
例:docker ps (查看列出所有容器)
例:docker ps -l (查看最新创建的容器)
inspect 查看一个或多个容器详细信息
例:docker inspect nginx(镜像) (查看nginx镜像详细信息)
exec 在运行容器中执行命令
例:docker exec -it 容器id (进入该容器内部)
commit 创建一个新镜像来自一个容器
例:docker commit 容器id或容器名字 镜像名字 (把老容器创建为一个新镜像)
cp 拷贝文件/文件夹到一个容器
例:docker cp anaconda-ks.cfg 容器id或容器名字:/ (拷贝一个文件到容器/目录下)
例:docker exec d250950ce93a ls / (查看文件是否拷贝进来)
logs 获取一个容器日志
例:docker logs (查看容器日志)
port 列出或指定容器端口映射
例:docker port 容器id或容器名字 (查看容器端口)
top 显示一个容器运行的进程
例:docker top 容器id或容器名字 (查看容器运行的进程)
stats 显示容器资源使用统计
例:docker stats 容器id或容器名字 (查看容器资源利用率)
stop/start/restart 停止/启动一个或多个容器
例:docker stop/start/restart 容器id或容器名字 (停止/启动一个或多个容器)
rm 删除一个或多个容器
例:docker rm 容器id或容器名字 (删除一个容器)
例:docker rm -f 容器id或容器名字 (强制删除一个容器)
例:docker rm -f $(docker ps -q) (强制删除所有容器)
prune 移除已停止的容器
例:docker container prune (移除已停止的容器)
docker ps -a (列出所有容器,包含已退出的)
docker ps -q (列出所有容器id,不包含已退出)
4.容器数据持久化
1.volumes docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)
创建数据卷
例:docker volume create nginx-vol
例:docker volume ls
例:docker volume inspect nginx-vol
2、使用数据卷
例:docker run -d --name=nginx-test --mount src=nginx-vol,dst=/usr/share/nginx/html nginx
例:docker run -d --name=nginx-test -v nginx-vol:/usr/share/nginx/html nginx
2.bind mounts 将宿主机上的任意位置的文件或者目录挂载到容器中
例:docker container prune (移除已停止的容器)
docker run -d -e env=prod -p 8080:80 --name web -h web --restart=always -m="500m" --cpus="1" -v /usr/local/nginx/:/usr/share/nginx/html nginx(镜像)(启动一个环境变量为prod,
主机名和容器名称为web,对外映射端口为8080,内存为500m,cpu为1核,容器挂载路径为 /usr/local/nginx/的容器,如果容器退出值为always即重新拉起镜像)
5.容器网络
veth pair:成对出现的一种虚拟网络设备,数据从一端进,从另一端出。 用于解决网络命名空间之间隔离。
docker0:网桥是一个二层网络设备,通过网桥可以将Linux支持的不同的端口连接起来,并实现类似交换机那样的多对多的通信。
docker网络进来
iptables利用DNAT目标地址转换
iptables -t nat -vnL DOCKER(查看iptables网络转换)
1 60 DNAT tcp -- !docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 to:172.17.0.2:80
docker网络出去
iptables利用SNAT源地址转换
iptables -t nat -vnL POSTROUTING
0 0 MASQUERADE tcp -- * * 172.17.0.2 172.17.0.2 tcp dpt:80