Docker安装及常用命令
Docker三要素:
一.镜像(Image)
Docker镜像(Image)就是一个只读的模板,镜像可以用来创建Docker容器,一个镜像可以创建很多容器。UnionFS(联合文件系统),共享资源。
二.容器(Container)
1.Docker利用容器(Container)独立运行一个或一组应用
2.容器使用镜像创建的运行实例
3.容器可以被启动、开始、停止、删除,每个容器之间都是相互隔离的,保证平台的安全。
4.可以把容器看做是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
5.容器的定义和镜像几乎一摸一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
三.仓库(Repository)
1.仓库(Repository)是集中存放镜像文件的场所。
2.仓库(Repository)和仓库注册服务器(Registry)是有区别的,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
3.仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
4.最大的公开仓库是Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。
5.国内的公开仓库包括阿里云、网易云等。
安装Docker(Centos7):
1.手动安装
step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Step 3: 更新并安装 Docker-CE
sudo yum makecache fast sudo yum -y install docker-ce
Step 4: 开启Docker服务
sudo service docker start
2.使用官方安装脚本自动安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
配置阿里云镜像:
进入阿里云容器镜像服务:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
1.创建文件夹
sudo mkdir -p /etc/docker
2.创建输入并保存daemon.json配置
sudo tee /etc/docker/daemon.json <<-'EOF'
3.输入内容:
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"] } EOF
4.保存并退出编辑:
EOF
5.重载daemon.json
sudo systemctl daemon-reload
6.重启docker
sudo systemctl daemon-reload && sudo systemctl restart docker
使用命令查看配置信息项中registry-mirrors信息,查看镜像配置是否生效:
docker info
常用命令:
查看docker版本
docker version
查看docker详细信息
docker info
查看docker帮助命令
docker --help
镜像命令:
列出本机镜像列表:
docker images
查询DockerHub上的镜像:
docker search tomcat / docker search -s 30 tomcat (查询点赞数30以上的镜像)
下载镜像 :
docker pull tomcat:[版本号] (如果不填版本号,默认拉最新版 )
删除镜像 :
docker rmi [-f] tomcat:[版本号] (-f:强制删除,否则不能删除正在使用的镜像 , 若不填版本号,默认删除最新版)
容器命令:
新建并启动容器
docker run [Options] Image [command] [args...]
--name "容器新名字":为容器指定一个新名称
-d:后台运行容器,并返回容器ID(即:启动守护式容器)
-i:以交互模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪输入终端,通常与-i同时使用
-P:随机端口映射
-p:指定端口映射,有以下四种格式
ip : hostPort : containerPort
ip :: containerPort
hostPort : contarnerPort
containerPort
-m,--memory:内存限制,格式是数字加单位,单位可以为 b,k,m,g。最小为 4M
--memory-swap:内存+交换分区大小总限制。格式同上。必须必-m设置的大
--memory-reservation:内存的软性限制。格式同上
--oom-kill-disable:是否阻止 OOM killer 杀死容器,默认没设置
--oom-score-adj:容器被 OOM killer 杀死的优先级, 范围是[-1000, 1000],默认为 0
--memory-swappiness:用于设置容器的虚拟内存控制行为。值为 0~100 之间的整数
--kernel-memory:核心内存限制。格式同上,最小为 4M
列出docker上所有正在运行的容器
docker ps [Options]
-a:列出所有当前运行的+历史上运行过的容器
-l:显示最近创建的容器
-n:显示最近N个创建的容器 [docker ps -n 3]
-q:静默模式,只显示容器编号 # --no-trucn:不截断输出
查看容器运行状态(内存占占用情况) :
docker status
关闭并退出容器 :
exit
不关闭退出容器 : 按键 :Ctrl+P+Q
启动容器 :
docker start [容器ID]/[容器名]
重启容器 :
docker restart [容器ID]/[容器名]
数据卷命令:
以命令方式建立数据卷 :
docker run -it -v /[宿主机绝对路径目录:/容器内目录] [镜像名]
例:docker run -it -v /usr/silen/data : /user/silen/containerData [镜像名]
以命令方式建立数据卷[带权限] :
docker run -it -v /[宿主机绝对路径目录:/容器内目录]:[权限] [镜像名]
docker以数据卷方式创建镜像:
将app-0.0.1-SNAPSHOT.jar与dockerfile放于同一目录:
dockerfile内容如下:
#使用JDK8 基础镜像
FROM java:8
#作者
MAINTAINER Silen <1107837746@qq.com>
#数据卷
VOLUME /user/app/data
#将jar包添加到容器中并更名为app.jar
ADD app-0.0.1-SNAPSHOT.jar app.jar
# 运行jar包
CMD java -jar app.jar
然后创建镜像(在dockerfile所在目录,注意末尾小数点):
docker build -t silen/app .
运行该镜像(注意端口映射)
docker安装mysql后设置账号密码:
docker run --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 -d mysql:5.7