# 4. docker之容器
# 创建容器之run命令
# 使用格式
- docker container run 选项 镜像名 -- 推荐使用
- docker run 选项 镜像名
# 容器常用选项
-i, –interactive:分配一个交互式环境
-t, –tty:分配一个伪终端
-d, –detach:运行容器到后台
-e, –env:设置环境变量(指定宿主机的那个环境变量传到容器中)
docker container run -itd -e JAVA_HOME=/usr/local/jdk java:8
-p, –publish list:发布容器端口到主机
docker container run -itd -p 88:80 nginx
-P, –publish-all:发布容器所有EXPOSE的端口到宿主机随机端口
--name string:指定容器名称
docker container run -itd -name sone java:8
-h, –hostname:设置容器主机名
docker container run -itd -h java8 java:8
-ip string:指定容器IP,只能用于自定义网络
--network:连接容器到一个网络
--mount mount:将文件系统附加到容器
docker container run -itd --mount src=nginx-l,dst=/usr/share/nginx/html nginx ##创建容器时挂载数据卷,src=数据卷名,dst=要挂载的容器中的路径
-v, –volume list:绑定挂载一个卷
docker contaier run -itd -v nginx-l:/usr/share/nginx/html nginx ##创建容器时挂载数据卷,卷名:要挂载的容器中的路径
--restart string:容器退出时重启策略,需要容器docker启动自启容器,可以加这个选项,默认no,可选值:[always|on-failure]
docker container run -itd --restart=always java:8
# 容器资源限制选项
-m,–memory:容器可以使用的最大内存量
--memory-swap:允许交换到磁盘的内存量,类型容器版的swap虚拟内存
--memory-swappiness=:容器使用SWAP分区交换的百分比(0-100,默认为-1)
–oom-kill-disable:禁用OOM Killer
--cpus:限制可以使用的CPU数量
--cpuset-cpus:限制容器使用特定的CPU核心,如(0-3, 0,1)
--cpu-shares:CPU共享(相对权重)
# 实例
创建一个容器,限制内存最多只能使用500m
docker container run -itd --memory="500m" nginx
##创建容器
docker container stats 容器ID
## 查看容器的资源使用,在这命令中可以查看限制的内存
创建一个容器,限制CPU,最多只能使用一个半的CPU
docker container run -itd --cpus="1.5" nginx
创建一个容器,限制CPU,最多只能使用半个的CPU
docker container run -itd --cpus=".5" nginx
# 容器常用的管理命令
# 查看容器 - ls
docker container ls
选项:-a
docker container ls -a
##-a选项:列出所有的容器,包含以停止的容器
# 查看一个或多个容器详细信息 - inspect
docker container inspect 容器ID
# 在运行容器中执行命令 - exec
docker container exec 容器ID 命令
# 进入容器内部 - exec -it
docker container exec -it 容器ID bash/sh
# 将容器保存成一个新的镜像 - commit
docker container commit 容器ID
##创建一个新镜像来自一个容器
# 拷贝文件/文件夹到一个容器 - cp
docker container cp
# 实例
docker container cp anaconda-ks.cfg 838dc2e585ae:/
##从宿主机当前目录拷贝一个文件到容器中的根目录中
docker container cp 838dc2e585ae:/anaconda-ks.cfg ./a
##从容器中的根目录下拷贝一个文件到宿主机的当前目录中,并改名为a
docker container cp sa 838dc2e585ae:/
##从宿主机当前目录拷贝一个目录到容器中的根目录中
# 获取一个容器日志 - logs
docker container logs 容器ID
选项:
docker container logs 容器ID -f
##跟tail -f 命令的效果一样,实时输出日志
# 列出或指定容器端口映射 - port
docker container port 容器ID
# 显示一个容器运行的进程 - top
docker container top 容器ID
# 显示容器资源使用统计 - stats
docker container stats 容器ID
# 停止一个或多个容器 - stop
docker container stop 容器ID
docker container stop 容器ID 容器ID
# 启动一个或多个容器 - start
docker container start 容器ID
docker container start 容器ID 容器ID
# 重启一个或多个容器 - restart
docker container restart 容器ID
docker container restart 容器ID 容器ID
# 删除一个或多个容器 - rm
docker container rm 容器ID
docker container rm 容器ID 容器ID
选项:-f
docker container rm -f 容器ID
## 强制删除
# 实例
docker container rm -f $(docker container ls -a | awk '{print $1}')
##删除所有容器,包含以停止的容器
docker container rm -f $(docker container ls -a -q)
##删除所有容器,包含以停止的容器