启动停止docker相关命令

systemctl start docker
systemctl status docker
systemctl stop docker
systemctl enable docker
systemctl restart docker
#停止所有容器
docker stop $(docker ps -aq)
#删除所有容器
docker rm $(docker ps -aq)

查看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容器第二课:命令介绍-进阶学习_私有仓库

当前运行中的容器

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中的容器

docker run -d cenots --restart=always 
#增加参数 --restart=always 表示容器开机启动  

docker资源限制

docker run -d -m="500m" --cpus="2" nginx

Docker容器第二课:命令介绍-进阶学习_私有仓库_02

监控容器资源使用率

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命令来导入一个容器快照到本地镜像库。

镜像制作

什么是镜像

镜像是一种轻量级、可执行的独立软件包

镜像包含运行某个软件所需的所有内容,包括代码、运行时库、环境变量和配置文件

将所有的应用和环境直接打包到docker镜像里,并且可以直接运行

镜像追求精简:

减少构建时间

减少磁盘使用量

减少下载时间

提高安全性,减少攻击面

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  

设置工作目录

基础镜像不推荐使用Centos ,原因是体积大,推荐使用debian


示例-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   即可私有仓库下载镜像

其他内容待补充