启动停止docker相关命令
systemctl start docker
systemctl status docker
systemctl stop docker
systemctl enable docker
systemctl restart docker
查看docke 信息
docker info
docker -version
列出所有命令
docker --hlep
镜像相关命令
查看本地所有镜像
docker images
搜索镜像: 线上搜索
docker search centos(镜像名)
拉取镜像
docker pull centos(镜像名) +:镜像版本 默认最新版
删除镜像
docker rmi 镜像名称或者镜像ID
修改镜像的tag和name
docker tag 9aed1ced115f imagename:1.0.4
清除builder缓存
docker builder prune
容器相关命令
当前运行中的容器
docker ps -a -l -f --format -n --no-trunc -q
参数 -a 显示所有的容器,包括未运行的
参数 -l 显示显示最近创建的容器
参数 -f 根据条件过滤显示的内容
参数 -s 显示总的文件大小
查看容器日志
docker logs [OPTIONS] CONTAINER_ID (容器id)
Options:
--details 显示更多的信息
-f, --follow 跟踪实时日志
--since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
--tail string 从日志末尾显示多少行日志, 默认是all
-t, --timestamps 显示时间戳
--until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
示例
docker logs baa8ca7f50f5 | tail -20
创建容器
docker run
示例
docker run -it(运行容器并进入容器,退出后自动关闭容器) --name:mycentos centos:7(镜像名) /bin/bash(指定命令参数)
docker run -id(运行容器并守护(后台)模式运行) --name=testmysql -p 3336:3306(端口映射) -e MYSQL_PASSWORD=123456(指定mysql密码) mysql(镜像名)
添加参数 -i 运行容器 -t容器启动后进入命令行 --name 创建容器名字 -v 目录映射关系(前宿主机后映射目录) -d 后台运行 -p 端口映射 (前宿主机端口后容积端口 )
进入或退出容器
docker exec 容器名称或者容器ID
exit
启动停止容器
docker start 容器名称或容器ID
docker stop 容器名称或容器ID
查看
docker ps -a
拷贝文件至容器
docker cp xxx.cfg 容器名称:/tmp
目录挂载 -v /usr/local:/usr/local(原目录地址:容器目录地址)
docker run -id --name:mycentos centos:7(镜像名) -v /usr/local:/usr/local(原目录地址:容器目录地址) /bin/bash(参数)
查看容器信息
docker inspect 容器名或ID
删选信息 如提取ip 信息
docker inspect --format= '{{.NetworkSettings.IPAdderss}}' 容器名或ID 逐级路径用.表示
删除容器
先stop停止容器
docker rm 容器名或ID 注 rmi删除镜像 rm 删除容器
杀死容器
docker kill 容器ID
docker kill $(docker ps -a -q) 杀死所有容器
配置容器使用空间
docker run -it --storage-opt size=120G fedora /bin/bash
--storage-opt size=120G 表示空间分配
查看容器数据
docker inspect 容器名称(容器ID)
监控容器资源使用率
docker stats
默认情况下,stats 命令会每隔 1 秒钟刷新一次输出的内容直到你按下 ctrl + c。下面是输出的主要内容:
[CONTAINER]:以短格式显示容器的 ID
[CPU %]:CPU 的使用情况
[MEM USAGE / LIMIT]:当前使用的内存和最大可以使用的内存
[MEM %]:以百分比的形式显示内存使用情况
[NET I/O]:网络 I/O 数据
[BLOCK I/O]:磁盘 I/O 数据
[PIDS]:PID 号
如果不想持续的监控容器使用资源的情况,可以通过 --no-stream 选项只输出当前的状态:
docker stats --no-stream
格式化输出
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
上面的命令中我们只输出了 Name, CPUPerc 和 Memusage 三列。下面是自定义的格式中可以使用的所有占位符:
.Container 根据用户指定的名称显示容器的名称或 ID。
.Name 容器名称。
.ID 容器 ID。
.CPUPerc CPU 使用率。
.MemUsage 内存使用量。
.NetIO 网络 I/O。
.BlockIO 磁盘 I/O。
.MemPerc 内存使用率。
.PIDs PID 号。
应用部署
首先拉取镜像 docker pull +镜像名
mysql
docker run -id --name=testmysql -p 3336:3306 -e MYSQL_PASSWORD=123456 mysqltest
-id 后台运行容器 -p 宿主机端口-容器端口映射关系 -e 指定mysql 密码参数 指定镜像名称
docker ps 查看是否部署成功
tomcat
docker run -id --name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
-v /usr/local/webapps:/usr/local/tomcat/webapps 挂在目录
Nginx
docker run -id --name=mynginx -p 80:80 nginx
进入容器
docker exec -it mynginx /bin/bash
容器内nginx路径
/etc/nginx 根据配置信息配置即可
redis
docker run -id --name=myredis -p 6379:6379 redis
使用连接工具测试 连接测试 -h 192.168.1.1
迁移与备份
容器保存为镜像
docker commit mynginx mynginx_01
前 容器名称 后 镜像名称
docker images 查看镜像
备份/归档镜像
docker save -o mynginx.tar mynginx
导出的镜像名 后 镜像名
导出容器
docker export -o export123.tar a404c6c174a2
删恢复镜像步骤
stop容器 rm容器 rmi 镜像
docker load -i mynginx.tar(备份的镜像名)
制作镜像
docker build -t 镜像名 .
最后是有个“.”的,表示使用当前目录的Dockerfile构建;
-t参数表示制成的镜像名,可任意定义。
docker load和docker import的区别: 实际上,既可以使用docker load命令来导入镜像库存储文件到本地镜像库,也可以使用docker import命令来导入一个容器快照到本地镜像库。
镜像制作
dockerfile
作用:用于基础镜像并创建新的镜像
常用命令
FROM image_name:tag | 定义使用哪个基础镜像启动构建流程 |
MAINTAINER user_name | 声明镜像创建者 |
ENV key value | 设置环境变量 如jdk |
RUN command | 是Dockerfile的核心部分(可写多条) |
ADD source_dir/file dest_dir/file | 将宿主机文件复制到容器内,如果是压缩文件则复制后自动解压 |
COPY source_dir/file dest_dir/file | 和ADD相似,不自动解压 |
WORKDIR path_dir | 设置工作目录 |
示例-jdk1.8
本地创建目录
mkdir -p /usr/local/dockerjdk1.8
上传jdk1.8压缩包-步骤略
/usr/local/dockerjdk1.8 在上述目录中构建Dockerfile文件
vi Dockerfile #D是大写
FROM centos:7 #设置基础镜像
MAINTAINER user_name #设置镜像创建者
WORKDIR /usr #设置当前目录
RUN mkdir /usr/local/java #创建镜像目录
ADD jdk1.8.tar.gz /usr/local/java 上传压缩包至目录
#设置环境变量
ENV JAVA_HOME=/usr/local/java_ jdk1.8(文件名)
ENV JRE_HOME=$JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
wq
开始创建
docker build -t='jdk1.8' .
docker image 查看构建是否成功
docker创建私有仓库
以registry为例创建私有仓库 主流的还有harbor
docker pull registry
docker run -di --name=registry -p 5000:5000 registry #创建私有仓库
https://192.168.1.1:5000/v2/_catalog #测试创建是否成功
vi /etc/docker/daemon.json #设置镜像源 前公网镜像源 后私有镜像源地址
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],"insecure-registries":["192.168.1.1:5000"]
}
wq
systemctl restart docker #重启服务生效
docker start registry #启动私有仓库容器
上传镜像至私有仓库
docker image #查看镜像
docker tag jdk1.8 192.168.1.1:5000/jdk1.8 #对自己创建的镜像打上标签
docker push 192.168.1.1:5000jdk1.8 #上传至私有地址
https://192.168.1.1:5000/v2/_catalog 查看是否上传成功
下载私有仓库镜像
vi /etc/docker/daemon.json 都需要设置设置镜像源 后私有镜像源地址
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],"insecure-registries":["192.168.1.1:5000"]
}
wq
systemctl restart docker 重启服务生效
https://192.168.1.1:5000/v2/_catalog 访问web查看镜像名
docker pull 192.168.1.1:5000/jdk1.8 即可私有仓库下载镜像
其他内容待补充