docker命令基本使用和管理

管理镜像常用命令:

docker images:列出镜像
docker build -t 自定义镜像名 .(Dockerfile文件的位置,如果在本地就输入‘.’): 用Dockerfile文件制作镜像
docker pull 镜像:版本号:拉取镜像(不写版本号默认latest版本,也就是最新版本)
docker push 镜像:版本号:将镜像推送到镜像仓库中
docker history 镜像名:查看镜像历史
docker inspect 镜像名/容器名:显示一个或多个镜像/容器详细信息
docker rmi 镜像名:移除一个或多个镜像
docker image prune 镜像名:删除所有未被tag标记和未被容器使用的镜像
docker tag 原镜像名:原版本号 现镜像名:现版本号:标记镜像

docker export 容器id > 自定义名字.tar:导出容器文件系统到tar归档文件
docker import 容器文件.tar 自定义镜像名:导入容器文件系统tar归档文件创建镜像

docker save 镜像名 > 自定义.tar:保存一个或多个镜像到一个tar归档文件
docker load < 镜像归档文件.tar:加载镜像来自tar归档或标准输入

docker run命令:

1.docker run -it 镜像名:版本号   //-i:交互式;-t:分配一个伪终端,启动容器并提供一个终端进入容器里,但如果你退出了容器,这个启动的镜像就会挂掉
2.docker run -itd 镜像名:版本号  //-d:运行容器到后台,这时进入到容器里再退出,容器也不会挂掉
3.docker run -itd -e a=1 -e b=2 镜像名  //-e:设置环境变量
4.docker run -itd -p80:8888 镜像名 //-p:开启容器端口,将容器的8888端口映射到宿主机的80端口
5.docker run -itd -name 自定义容器名 镜像名 //-name:自定义容器名,启动容器并自定义命名
6.docker run -itd -h 自定义主机名 镜像名:-h:设置主机名
7.docker run -itd -p 自定义ip:指定容器ip,只能用于自定义网络
8.docker run -itd --net=网络模式 镜像名:启动的镜像用设置网络模式
8.docker run -itd --mount src=宿主机文件地址,dst=容器文件地址 镜像名  //将容易文件地址挂在宿主机文件地址
9.docker run -itd -v 宿主机文件地址:容器文件地址 镜像名 //将容易文件地址挂在宿主机文件地址
10.docker run -itd --restart=always 镜像名 //达到开机自启动

容器资源限制

*如果是默认情况下使用的是宿主机的所有资源
内存限制:
--memory或-m:设置容器的内存大小,格式是数字加单位,单位可以为 b,k,m,g。最小为 4M
--memory-swap:允许交换到磁盘的内存量,	内存+交换分区大小总限制。格式同上。必须必-m设置的大(不建议使用,性能会下降)
--oom-kill-disable:禁用oom杀进程(当内存不足时)
--oom-score-adj:设置容器被oom killer杀死的优先级
例如:
docker run -itd -name mytest --memory="500m" --memory-swap="600m" --oom-kill-disable 镜像名 //允许容器最多使用500M内存和100M的swap,并禁用oom killer

cpu限制:
--cpus:可以使用的CPU数量
--cpu-shares:CPU共享
--cpuset-cpus:限制容器使用特定的CPU核心,如(0-3,0,1)
例如:
1.docker run -d --name mytest --cpus="1.5" 镜像名 //允许容器最多使用一个半的CPU
2.docker run -d --name mytest --cpus=".5" 镜像名 //允许容器最多使用50%的CPU

管理容器常用命令:

docker stats 容器名:查看容器的资源使用(交互模式)
docker stats --no-stream 容器名:查看容器的资源使用(非交互式)
docker ps:查看所有运行中的容器
docker ps -a:查看所有容器
docker ps -aq:查看所有容器的id
docker inspect 容器名:查看容器的详细信息
docker exec:在运行容器中执行命令,例如:docker exec -it 容器名 bash
docker commit 容器名 自定义镜像名:将容器提交为镜像
docker cp 文件名 容器名:容器里的位置:将宿主机中的文件拷贝到容器里,例如:docker cp test.txt centos:/root/
docker logs 容器名:查看容器的静态日志
docker logs -ft 容器名:查看容器的动态日志,-t是加上时间
docker port 容器名:列出或指出容器端口映射
docker top 容器名:显示一个容器运行的进程
docker stop/start/restart 容器名:停止/启动/重启一个或多个容器
docker rm 容器名:删除容器(需要是停止状态的),
例如:-f:通过SIGKILL信号强制删除一个运行中的容器
     -l:移除容器间的网络连接,而非容器本身,例如:docker rm -l mytest,移除名为mytest的连接名
     -v:删除与容器关联的卷,例如:docker rm -v mytest,移删除容器mytest,并删除容器挂在的数据卷

管理应用程序数据

docker将数据从宿主机挂在到容器中的三种方式

方式1.volumes:docker管理宿主机文件系统的一部分(/var/lib/docker/volumes),保存数据的最佳方式

管理卷:
1.docker volume create 自定义卷名  //创建一个卷
2.docker volume ls   //查看卷
3.docker volume inspect 卷名  //查看卷的位置

用卷创建一个容器:
1.docker run -d --name=mytest1 --mount src=mytest1-vol,dst=/data/ centos  
2.docker run -d --name=mytest2 --mount type=volume,src=mytest2-vol,dst=/data2/ centos
3.docker run -d --name=mytest3 -v mytest3:/data3 centos
*上面三种方式都是将卷挂在到容器中,如果没有创建卷直接使用上面的命令可以自动创建卷

清理卷:
1.docker stop 容器名
2.docker rm 容器名
3.docker volume rm 卷名

方式2:bind mounts:将宿主机上的任意位置的文件或者目录挂在到容器,bind为源目录映射到容器目录,文件需要自行创建,源目录文件直接覆盖容器当中

用绑定文件创建一个容器:
docker run -itd --name=mytest1 --mount type=bind,src=/mytest1,dst=/usr/local/nginx/html cnetos
docker run -itd --name=mytest2 -v /mytest2:/usr/local/nginx/html centos

清理:
docker stop mytest1
docker rm mytest1

具体信息可以通过:docker inspect mytest1查看
注意:
1.如果宿主机挂在的容器中的目录为非空目录,则容器中的目录中的内容将被隐藏
2.不会自动创建

方式3:tmpfs:挂在存储在主机系统的内存中,而不会写入主机的文件系统。如果不希望将数据持久存储任何位置,可以使用tmpfs,同时避免写入容器可写层提高性能

用tmpfs创建一个容器
tmpfs-size:设置大小以字节为单位,默认无限制
tmpfs-mode:八进制中tmpfs的文件模式,例如700或0770.默认为1777,意味任何用户都有写入权限
1.docker run -itd --name mytest1 --mount type=tmpfs,destionation=/data,tmpfs-mode=1770 entos:latest //只有目标没有源

关于docker的动态修改,对于已经开启的容器能修改的选项:

docker update --help
显示:
Options:
  --blkio-weight uint16        Block IO (relative weight), between 10 and 1000, or 0 to
                               disable (default 0)
  --cpu-period int             Limit CPU CFS (Completely Fair Scheduler) period
  --cpu-quota int              Limit CPU CFS (Completely Fair Scheduler) quota
  --cpu-rt-period int          Limit the CPU real-time period in microseconds
  --cpu-rt-runtime int         Limit the CPU real-time runtime in microseconds
-c, --cpu-shares int             CPU shares (relative weight)
  --cpus decimal               Number of CPUs
  --cpuset-cpus string         CPUs in which to allow execution (0-3, 0,1)
  --cpuset-mems string         MEMs in which to allow execution (0-3, 0,1)
  --kernel-memory bytes        Kernel memory limit
-m, --memory bytes               Memory limit
  --memory-reservation bytes   Memory soft limit
  --memory-swap bytes          Swap limit equal to memory plus swap: '-1' to enable unlimited swap
  --pids-limit int             Tune container pids limit (set -1 for unlimited)
  --restart string             Restart policy to apply when a container exits
*以上显示的是可以动态修改容器的选项,只能修改容器配置方面

猜你喜欢

转载自blog.csdn.net/weixin_42917630/article/details/104470831