一、什么是Docker
docker帮助文档:https://docs.docker.com/engine/reference/commandline/build/ 网易蜂巢镜像中心:https://c.163yun.com/hub#/home
docker是一个用来装应用的容器,就像杯子可以装水,笔筒可以放笔,书包可以放书,可以把hello word放在docker中,可以把网站放入docker中,可以把任何想得到的程序放在docker中. 1.1 docker三要素
- 镜像(image):
docker镜像就好像一个模板,可以通过这个模板来创建容器服务,tomcat容器===>run==>tomcat01容器(提供服务),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中)。 - 容器(contianer):
Docker利用容器技术,独立运行一个或者一个应用,通过镜像来创建的。 启动、停止、删除、基本命令 目前就可以把这个容器理解为一个linux系统。 - 仓库(repository):
仓库就是存放镜像的地方! 仓库分为公有仓库和私有仓库! Docker Hub (默认是国外的) 阿里云、网易云 都有容器服务器(配置镜像加速)
二、安装docker
卸载原有的docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装工具包
yum install -y yum-utils
设置镜像仓库(这里使用的是阿里云的镜像仓库)
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件索引包:(这步也可省略)
yum makecache faster
安装docker :
yum install docker-ce docker-ce-cli containerd.io
启动docker:
systemctl start docker
使用 docker version 查看是否安装成功
docker version
这样docker就安装成功了
三、docker常用的命令
3.1基本 3.1.1 启动docker
systemctl start docker
3.1.2 停止docker:
systemctl stop docker
3.1.3 重启docker:
system restart docker
3.1.4 查看docker状态:
systemctl status docker
3.1.5 开机启动:
systemctl enable docker
3.2帮助命令 3.2.1 显示版本的信息
docker version
3.2.2 显示docker的系统信息 包括镜像和容器的数量
docker info
3.2.3 万能命令
docker 命令 --help
3.3镜像命令 3.3.1 查看本地主机上的所有镜像
docker images
docker images -a, --all #列出所有镜像
docker images -q,--quit #只显示镜像的id
- 解释
REOISIRORY #镜像的仓库源 TAG #镜像的标签 IMAGE ID #镜像的id CREATED #镜像的创建时间 SIZE #镜像的大小
3.3.2 搜索镜像
docker search 镜像名
docker search 镜像名 --filter==stars=3000 #搜索出来的镜像是大于3000的
3.3.3 下载镜像
docker pull 镜像名:版本号 #不加版本号默认为最新版本
使用网易蜂巢镜像中心:https://c.163yun.com/hub#/home
3.3.4 删除镜像
#删除一个
docker rmi -f 镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像ID 镜像ID 镜像ID
#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
#强制删除镜像
docker image rm 镜像ID
3.3.5 更改镜像名字
docker tag 镜像id 镜像名:版本号
3.3.6运行镜像
docker装在哪台服务器 那台服务器 就是其宿主机)8888 端口进行映射 那通过外部访问宿主机8888端口 即可访问到 docker 容器 6379 端口了
docker run [可选参数] image
docker run -it -d --name mysql01 -p 8888:3306 mysql:5.7.16 /bin/bash
#参数说明
/bin/bash #交互路径
--name mysql01 #容器名字 可为 mysql01 mysql02
-d #后台方式运行
-it #使用交互方式运行,进入容器查看内容
-p #指定容器端口
-p ip:宿主机端口:容器端口
-p 宿主机端口:容器端口
-p 容器端口
-v #卷挂载
-e #环境配置
--restart=always
3.4容器命令 3.4.1运行容器
docker run -it centos /bin/bash
3.4.2查看正在运行的容器:
docker ps -aq
参数 :
空 # 列出当前正在运行的容器
-a #列出当前正在运行的容器+历史运行过的容器
-n=? #显示最近创建的容器
-q #只显示容器的编号
3.4.3进入容器
docker exec -it 容器名/容器ID /bin/bash
docker attach 容器名/容器ID
- 区别:
exec 进入容器开启一个新的终端,可以在里面操作。 attach 进入容器正在执行的终端,不会启动新的进程 。
3.4. 4退出容器
exit
Ctrl + p + q
3.4. 5停止容器
docker stop 容器ID/容器名
3.4.6重启容器
docker restart 容器id
3.4.7启动容器
docker start 容器ID/容器名
3.4.8强制停止当前容器
docker kill 容器ID/容器名
3.4.9容器文件拷贝
#docker cp 容器ID/名称:文件路径 要拷贝到外部的路径 | 要拷贝到外部的路径 容器ID/名称:文件路径
#从容器内 拷出
docker cp 容器ID/名称: 容器内路径 容器外路径
#从外部 拷贝文件到容器内
docker cp 容器外路径 容器ID/名称: 容器内路径
3.4.10查看容器日志
docker logs -f -t --tail 条数 容器id
#-tf 显示日志
#--tail number # 要显示日志条数
3.4.11查看容器中的进程信息
docker top 容器id
3.4.12查看镜像的元数据
docker inspect 加容器id
3.4.13更换容器名
docker rename 容器ID/容器名 新容器名
3.4.14删除容器
docker rm 容器ID
四、docker容器数据卷
- 简介
容器内的数据与外部宿主机文件绑定起来,类似一个双持久化,当容器删除时,宿主机文件数据目录仍在,下次启动容器只要将数据目录指向宿主机数据所在位置即可恢复!
4.1方式一:直接使用命令在挂载 -v
-v 宿主机文件存储位置:容器内文件位置
-v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置
示例(docker启动mysql:)
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
4.2具名挂载和匿名挂载: 4.2.1匿名挂载:
-v 容器内路径
4.2.2查看具体挂载:
docker volume ls
4.2.3具名挂载:
-v 卷名:容器内路径
4.2.4查看具体卷的路径
docker volume inspect 卷名
4.2.5拓展:
-v 容器内路径:ro rw 改变读写权限
ro #readonly 只读
rw #readwrite 可读可写
五、DockerFile
- 简介:
就是用来构建docker镜像文件!就是脚本命令
构建步骤:
1.编写一个dockerfile文件
2.docker build 构建成为一个镜像
3.docker run 运行一个镜像
4.docker push 发布镜像(阿里云。dockerhub)
文件内容如下:
FROM centos
VOLUME ["volume01","volume02"]
CMD echo ".....end"
CMD /bin/bash
通过命令构建:
docker build -f 文件路径 -t abc/centos .
挂载:(–volumes-from)
DockerFIle命令:
FROM #基础镜像一切从这里开始
MAINTAINER #镜像是谁写的,姓名加邮箱
RUN #镜像构建时需要的命令
ADD #步骤tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR #镜像工作目录
VOLUME #挂载的位置
EXPOSE #暴露端口
CMD #指定这个容器启动时要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动时要运行的命令,可以追加
ONBUILD #当构建一个被继承DockerFile,这个时候就会运行ONBUILD的指令,触发指令
COPY #类似ADD,将命令拷贝到镜像当中
ENV #构建的时候设置环境变量
实战tomcat: 1.准备镜像文件,tomcat压缩包,jdk的压缩包! 2.编写dockerfile文件,官方命名:Dockerfile,build会自动寻找这个文件,就不需要-f指令 提交自己的镜像:
登录:https://hub.docker.com/ docker login -u h12345600 docker push 作者/镜像名
阿里云镜像: 1.找到容器镜像服务中心 2.创建命名空间 3.创建容器镜像
六、Docker网络
通过 --link 可以使容器间联通。
自定义网络: 自定义创建:
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
可以通过 docker network ls 查看所有网络模式 通过–net mynet 连接到我们自己的网络上面去
网络连通:
docker network connect 容器名 网卡
实战创建三主三从redis
|