只要学不死,就往死了学。
docker学习目录
- docker概述
- docker安装
- docker基本组成
- 镜像命令
- 容器命令
- 操作命令
- docker镜像
- 容器数据卷
- dockerFile
- docker 网络原理
- IDEA整合docker
- docker composer
- docker swarm
- cI\cd
docker概述
- 痛点:解决跨平台,服务器配置应用环境,需要每次重新配置
- docker:打包装箱,每个箱子相互隔离
- 容器内直接运行在 宿主机上,容器没有自己的内核;传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统
- docker官网:https://www.docker.com/
- docker 文档:https://docs.docker.com/
docker基本组成
- 镜像(image):
docker镜像就好比是一个模版,可以通过这个模版来创建容器服务,tomcat镜像===》 run ===>tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)
- 容器(container):
docker 利用容器技术,独立运行一个或者一个组应用,通过镜像来创建
启动,停止,删除,基本命令
目前就可以把这个容器理解为简易的Linux系统
- 仓库(repository)
仓库就是存放镜像的地方
仓库分为公有仓库和私有仓库
-
安装查看官方安装文档
-
docker 判断是否安装成功:docker version
-
docker run hello-world 在docker 运行hello world
-
docker images 查看docker的镜像
-
docker 运行流程图:
docker的常用命令
- 帮组命令
docker version #显示docker的版本信息
docker info # 显示docker的系统信息,包括镜像和容器
docker 命令 --help # 帮助命令
- 镜像命令
docker images 查看docker 镜像
docker seachr mysql. 搜索镜像
docker pull mysql [:tag]. 下载镜像
docker rmi (-f 镜像id) 删除镜像
docker rmi -f $(docker images -aq) 递归删除所有镜像
- 容器命令
下载一个centos 镜像来测试学:docker pull centos
新建容器并启动:docker run [] image
参数说明:
–name =“Name” 容器名字
-d 后台运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口
进入创建好的centos容器 :docker run -it centos /bin/bash
exit 从容器退出
docker ps 列出所有容器
-a 列出所有当前正在运行的容器
-n=? 显示最近创建的容器
-q 只显示容器的编号
退出容器
exit
ctrl + P +Q 容器不停止退出
删除容器
docker rm 容器id
docker rm -f $(docker ps -aq) 删除所有的容器
启动和停止容器的操作
docker start 容器ID. 启动容器
docker restart 容器ID
docker stop 容器ID
docker kill 容器ID
其他命令
docker run -d centos
docker run -d --name nginx01 -p 3344:80 nginx (–name 给容器起名字,-d 后台运行,-p 宿主机端口:容器内部端口)
docker ps 发现停止了,容器后台运行,就必须要有一个前台进程,docker 发现没有应用,就会停止
docker logs 查看日志
docker logs --help
docker logs -ft --tail 容器ID
docker logs -ft --tail 10 容器ID
docker run -d centos /bin/sh -c “while true;do echo mayuliang;sleep 1;done” 往容器中写日志
docker ps 查看当前启动的容器
查看容器中进程信息
docker top 容器ID
查看镜像的元数据
docker inspect 容器ID 查看容器的详细信息
进入运行的容器
docker exec -it 容器ID /bin/bash
docker attach 容器ID
- 从容器中拷贝
进入容器创建一个文件
退出容器
docker cp 容器ID:/home/test.java /home
- docker从容器中复制文件
docker cp 容器id:容器内路径 目的地主机路径
[root@iZ2zeg4ytp0whqtmxbsqiiZ /]# docker cp 7af535f807e0:/home/Test.java /home
- 容器数据卷
直接使用命令来挂载 -v
docker run -it -v 主机目录:容器目录
[root@iZ2zeg4ytp0whqtmxbsqiiZ home]# docker run -it -v /home/ceshi:/home centos /bin/bash
安装tomcat
- docker pull tomcat 下载tomcat,并查看镜像
- docker run -d -p 3355:8080 --name tomcat01 tomcat. 创建一个容器,名字tomcat01,端口映射3355
- docker ps 可查看容器信息
- docker exec -it tomcat01 /bin/bash 交互方式进入
- cp -r webapps.dist/* webapps
- 进行运行 localhost:3355
安装MySQL
[root@iZ2zeg4ytp0whqtmxbsqiiZ home]# docker pull mysql:5.7
运行容器, 需要做数据挂载! # 安装启动mysql,需要配置密码(注意)
官方测试, docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
[root@iZ2zeg4ytp0whqtmxbsqiiZ home]# docker run -d -p 3344:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
9552bf4eb2b69a2ccd344b5ba5965da4d97b19f2e1a78626ac1f2f8d276fc2ba
启动成功之后,我们在本地使用navicat链接测试一下
navicat链接到服务器的3344 — 3344 和 容器的3306映射,这个时候我们就可以连接上mysql喽!
dockerfile
- 安装centos
docker build -f dockerfile1 -t centos:1.0 .
注意:最后一个点,是指当前目录
创建容器,并进入容器:docker run -it centos:1.0 /bin/bash
- 多个容器,实现容器间的数据同步
docker run -it --name docker02 --volumes-from docker01 centos:1.0
- 查看容器详细信息:
docker inspect 容器id
- dockerFile是用来构建docker镜像的文件!命令参数脚本!
构建步骤
- 编写一个dockerFile文件
- docker build 构建成为一个镜像
- docker run 运行镜像
- docker push 发布镜像(DockerHub、阿里云镜像)
- DockerFile指令说明
FROM # 基础镜像,一切从这里开始构建
MAINTAINER # 镜像是谁写的, 姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤, tomcat镜像, 这个tomcat压缩包!添加内容
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 保留端口配置
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令, 可以追加命令
ONBUILD # 当构建一个被继承DockerFile 这个时候就会运行 ONBUILD 的指令,触发指令
COPY # 类似ADD, 将我们文件拷贝到镜像中
ENV # 构建的时候设置环境变量!
- 创建一个自己的centos
FROM centos
MAINTAINER mayuliagn707026500@qq.com
#定义一个环境变量
ENV MYPATH /usr/local
WORKDIR $MYPATH
#安装vim 和 net-tools
RUN yum -y install vim
RUN yum -y install net-tools
#保留端口配置
EXPOSE 80
CMD echo $MYPATH
CMD echo “----end----”
CMD /bin/bash
命令 docker build -f dockerfile文件路径 -t 镜像名:[tag] .
- 查看容器变更历史:
docker history 4345eff398fa(容器id)
- CMD 和ENTRYPOINT区别
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令, 可以追加命令
dockerhub
- 创建dockerhub账号:
- 发布一个repository
- 推送一个tag到docker hub上
docker push 707026500/docker-repository:tagname
弱小和无知不是生存的障碍,傲慢才是。