容器操作
列出本地容器进程
[root@localhost ~]# docker ps -a
docker run 命令格式和参数
命令格式:
docker run [OPTIONS] IMAGE [COMMAND]
参数:
OPTIONS选项
-i : 表示启动一个可交互的容器,并持续打开标准输入
-t : 表示使用终端关联到容器的标准输入输出上
-d : 表示将容器放置后台运行
--rm :退出后即删除容器
--name :表示定义容器唯一名称
IMAGE :表示要运行的镜像
COMMAND :表示启动容器时要运行的命令
交互式启动容器
[root@localhost ~]# docker run -it alpine:latest /bin/sh
后台非交互启动重命名
[root@localhost ~]# docker run -d --name my-alpine alpine:latest
查看宿主机进程(前提得有这个进程启动)
[root@localhost ~]# ps aux | grep sleep| grep -v grep
使用交互式进入到指定容器终端
[root@localhost ~]# docker exec -it f70734b6a266 /bin/sh
停止一个指定正在运行的容器
[root@localhost ~]# docker stop f70734b6a266
启动一个指定正在停止的容器
[root@localhost ~]# docker start f70734b6a266
强制删除
[root@localhost ~]# docker rm -f myalpinen
查找已经停止退出的所有容器并删除
[root@localhost ~]# docker rm -fv `docker ps -aq -f status=exited`
删除当前容器的所有容器
[root@localhost ~]# docker rm -fv `docker ps -aq`
把容器里面的文件cp出来到宿主机
[root@localhost ~]# docker cp 495ac14a43ae:/etc/nginx/nginx.conf /opt
把宿主机文件拷贝到容器里面
[root@localhost ~]# docker cp /opt/nginx.conf 495ac14a43ae:/etc/nginx/nginx.conf
查找已经停止退出的所有容器并删除
[root@localhost ~]# for i in `docker ps -a | grep -i exit | awk '{print $1}'`;do docker rm -f $i;done
固化到容器只读层
[root@localhost ~]# docker commit -p myalpine my-alpine:v3.10.3_with_1.txt /bin/sh
导出镜像
[root@localhost ~]# docker save dd26578fb4a8 > alpine:v3.10.3_with_1.txt.tar
导入镜像
[root@localhost ~]# docker load < alpine:3.10.3_with.tar
打标签
[root@localhost ~]# docker tag f70734b6a266 alpine:3.10.3_with
查看容器日志 -f 动态输出
docker ps -a
[root@localhost ~]# docker logs -f dd26578fb4a8
给容器授予超级权限
[root@localhost ~]# docker run -it -d -p 88:80 --privileged=true nginx
高阶操作:
映射端口 -p
docker run -p 宿主机端口:容器内端口
[root@localhost ~]# docker run --rm --name my-nginx -d -p 86:80 llxuan518/nginx:v1.16.6
挂载数据卷 -v
docker run -v 宿主机:容器内部
[root@localhost ~]# docker run --rm --name my-nginx -d -p 85:80 -v /root/html:/usr/share/nginx/html llxuan518/nginx:v1.16.6
传递环境变量 -e
docker run -e 环境变量key:环境变量value(可以传多个)
[root@localhost ~]# docker run --rm -e E_OPTS=abcdef llxuan518/nginx:v1.16.6 printenv
容器内安装软件
/yum/apt-get/等等
查看docker内容信息
[root@localhost ~]# docker inspect dd26578fb4a8
下载(拉取)镜像
[root@localhost ~]# docker pull nginx
推送(上传)镜像
[root@localhost ~]# docker push habor.longxuan.vip/N520/nginx:v1
构建镜像
[root@localhost ~]# docker build -t 新建的镜像名 父镜像:镜像的tag Dockerfile文件所在路径
查看空间的占用
[root@localhost ~]# docker system df
常见命令:
查看镜像,后可跟 "| grep 内容",可根据内容进行筛选。如:
[root@localhost ~]# docker images ps
[root@localhost ~]# docker images | grep nginx
docker images [OPTIONS] [REPOSITORY[:TAG]]OPTIONS说明:-a: 列出本地所有的镜像--digests: 显示镜像的摘要信息-f: 显示满足条件的镜像--format: 指定返回值的模板文件--no-trunc: 显示完整的镜像信息-q: 只显示镜像ID
创建一个新的容器并运行一个命令docker run
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]OPTIONS说明:-d: 后台运行容器,并返回容器ID-i: 以交互模式运行容器,通常与 -t 同时使用-p: 指定端口映射,格式为:主机(宿主)端口:容器端口-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用--name "nginx": 为容器指定一个名称-h "localhost": 指定容器的hostname-e spring.profiles.active="dev": 设置环境变量--env-file=[]: 从指定文件读环境变量-m :设置容器使用内存最大值--volume /home/data:/etc/data : 绑定一个卷and so on
例如:
[root@localhost ~]# docker run -d -t -p 80:80 -v /home/data:/usr/data --name nginx nginx:latest
创建一个新的容器但不启动它
[root@localhost ~]# docker create containerName
停止一个运行的容器docker
[root@localhost ~]# docker stop containerName
重启一个容器docker restart
[root@localhost ~]# docker restart containerName
启动一个被停止的容器docker start
[root@localhost ~]# docker start containerName
docker ps命令
docker ps [OPTIONS]: 列出容器OPTIONS说明:-a: 显示所有的容器,包括未运行的-f: 根据条件过滤显示的内容--format: 指定返回值的模板文件-l: 显示最近创建的容器-n: 列出最近创建的n个容器--no-trunc: 不截断输出-q: 静默模式,只显示容器编号-s: 显示总的文件大小
查看所有容器
[root@localhost ~]# docker ps -a
查看正在运行的容器
[root@localhost ~]# docker ps
docker exec: 进入一个运行中的容器执行命令如:
[root@localhost ~]# docker exec -it 容器id sh or bash or /bin/bash表示在容器中开启一个交互模式的终端
删除一个容器,可加-f 表示强制
[root@localhost ~]# docker rm -fv
并删除挂载卷删除所有停止的容器:
[root@localhost ~]# docker rm $(docker ps -a -q)
删除一个镜像,可加-f 表示强制
[root@localhost ~]# docker rmi xxx
docker inspect : 获取容器/镜像的元数据如:
docker inspect [OPTIONS] NAME|ID [NAME|ID...]OPTIONS说明:-f: 指定返回值的模板文件-s: 显示总文件大小-type: 为指定类型返回json数据
获取正在运行的容器 nginx 的 IP:docker inspect --format='{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nginx
docker kill: 杀死一个运行中的容器如:
[root@localhost ~]# docker kill nginx
docker logs: 获取容器的日志如:
[root@localhost ~]# docker logs -f -t 容器id or docker logs -f -t --tail=100 容器id
docker build: 命令用于使用 构建Dockerfile 镜像
创建镜像docker build [OPTIONS] PATH | URL | -OPTIONS说明:-f: 指定要使用的Dockerfile路径-m: 设置内存最大值--memory-swap: 设置Swap的最大值为内存+swap,"-1"表示不限swap--no-cache: 创建镜像的过程不使用缓存--pull: 尝试去更新镜像的新版本-q: 安静模式,成功后只输出镜像 ID--rm: 设置镜像成功后删除中间容器--shm-size: 设置/dev/shm的大小,默认值是64M--tag: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签--network: 默认 default。在构建期间设置RUN指令的网络模式
[root@localhost ~]# docker build -t 镜像标签名 .
[root@localhost ~]# docker build -t nginx:latest .
[root@localhost ~]# docker build -f /path/xxx/Dockerfile .
docker tag: 标记本地镜像,将其归入某一仓库
[root@localhost ~]# docker tag nginx nginx:old
将指定镜像保存成 tar 归档文件,命令导出的镜像
[root@localhost ~]# docker save -o nginx.tar nginx:latest
或者使用
[root@localhost ~]# docker save > nginx.tar nginx:latest
导入使用
[root@localhost ~]# docker load -i tar文件名
或者使用
[root@localhost ~]# docker load < /opt/mysql-5.6.38-dockerimage.tar.gz
查看docker环境信息
[root@localhost ~]# docker info
查看docker版本信息
[root@localhost ~]# docker version
docker login: 登录一个Docker镜像仓库docker login -u 用户名 -p 密码,退出登录
[root@localhost ~]# docker logout
拉取或者更新指定镜像 -a 拉取所有的tag的镜像
[root@localhost ~]# docker pull nginx
将本地的镜像上传到镜像仓库
[root@localhost ~]# docker push