-docker
是一个开源的应用容器引擎,基于go语言开发,可以将应用和依赖打包到容器中,
-核心概念
镜像 image:从docker hub下载, 通过docker file创建出来,算是一个文件系统
容器 container: 类似于沙箱,利用容器来隔离应用,容器是镜像创建的应用运行出来的实例,容器之间相互隔离.
仓库 repository: 存放镜像文件的地方
- 命令
yum install -y docker
systenmctl start docker
systemctl enable docker
docker run hello-word
-镜像命令
docker运行之前需要本地存在对应的镜像,镜像是容器运行的前提,如果本地没有镜像则会从配置好的仓库中下载。
- docker images 查看本地下载的镜像
- docker search 镜像名字 搜索镜像
- 容器是镜像运行成功的实例 有了镜像才可以创建容器
- docker create -it imagename
- docker ps
- doceker run 镜像名字 /bin/echo 'hello world'
- docker run -d 镜像名字 /bin/sh -c "111"
- docker logs 容器id
- docker stop 容器id
- docker start 容器id
- docker restart 容器id
进入容器
启动容器 -d之后容器会进入后台运行,用户想要看到容器信息需要进入容器进行操作,
工具 exec
docker exec -it 容器id /bin/bash
-删除容器
docker rm 容器id
-退出
如果docker容器在启动的时候没有添加-d的参数
exit
ctrl+p+q
- 查看日志
docker logs 容器id
- 查看容器里面的进程
docker top 容器id
- 从容器中拷贝文件到主机上
docker cp 容器id: 容器内部路径 目录路径
- 查看jdk镜像
docker search openjdk:11
- 下载jdk
docker pull openjdk:11
- 运行jdk镜像
docker run openjdk:11 java -version
- tomcat是一个开源web服务器
- 查看tomcat镜像
docker search docker.io/tomee
- 下载tomcat
docker pull docker.io/tomee
-启动tomcat
docker run -d --name mytomcat -p 9090:8080 docker.io/tomee
参数: -d 容器进入后台运行 用户无法看到容器中的信息 -p 绑定端口 宿主机端口:容器内部应用端口 一个是外向一个内向
-name 指定一个名称
-查看mysql 镜像
docker search mysql:5.7
- 下载镜像
docker pull mysql:5.7
- 启动镜像
docker run --name mysql -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
-p 设置访问端口 3307
-e 配置环境变量 MYSQL_ROOT_PASSWORD 设置容器内部mysql root 密码
- 容器数据卷
docker中的数据可以存储在类似于磁盘中,这种磁盘被称为是数据卷
当容器删除之后,在容器中的产生的数据还在吗
docker容器和宿主机可以直接通信交换数据 和宿主机中的docker容器无法通信
1 数据卷是宿主机中的一个目录或是文件
2 当容器目录和宿主机中的目录绑定之后,数据会同步
3 一个数据卷可以被多个容器挂载
4 一个容器可以挂载多个数据卷
- 数据卷的作用
1 容器数据能够持久化
2 外部机器可以和容器通过数据卷进行通信
3 容器之间可以通过数据卷进行交换
数据卷可以实现容器数据持久化和同步操作 容器之间的数据也能够共享
- 配置数据卷
docker run -v 宿主机目录:容器内目录 webapps
目录必须是绝对目录
目录不存在则会自动创建
可以挂载多个数据卷
给tomcat服务器挂载/opt/webapps目录
docker run -d --name mytomcat -p 8080:8080 -v /opt/webapps:/usr/local/tomcat/webapps tomcat
- volume 基本使用
参数: create
inspect
ls
prune
rm
- 创建一个自定义容器
docker volume crate edc-tomcat-vol
- 查看所有的容器卷
docker volume ls
- 查看指定容器的详细信息
docker volume inspect edc-tomcat-vol
- 删除数据卷
docker volume rm edc-tomcat-vol
- 使用自定义数据卷
定义一个数据卷 创建一个容器来使用它
dcoker run -d -it -name=edc-tomcat -p 8080:8080 -v edc-tomcat-vol:/usr/local/tomcat/webapps tomcat
-v 代表挂载数据卷 使用自定义挂载卷edc-tomcat-vol 挂载到/usr/local/tomcat/webapps目录下
- 搜索镜像
docker search mysql:5.7
- 下载镜像
docker pull mysql:5.7
- 运行镜像
docker run -d -p 3306:3306
-v /opt/mysql/conf:/etc/mysql/conf.d
-v /opt/mysql/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456
--name my-mysql
mysql:5.7
- dockerFile
是一个文本格式的配置文件 通过他快速创建一个自定义镜像 由一行行的命令组成
一共有四部分: 1 基础镜像信息 2 维护者信息 3 镜像操作指令 4 容器启动执行指令
dockerfile -----build-----image
- 示例
FROM java:8
MAINTATNER baizhan
RUN echo "wget
https://dlcdn.apache.org/tomcat/tomcat9/v9.0.55/bin/apache-tomcat-9.0.55.tar.gz"
run tar -zxvf apache-tomcat-9.0.55.tar.gz -C
/usr/local
CMD /usr/local/tomcat/bin/catalina.sh
- 说明
1 关键字是FROM 指明所基于的镜像名称
2 维护者信息关键字是MAINTAINER
3 镜像操作指令, 如RUN 每执行一条RUN命令,镜像添加新的一层
4 CMD指令,来指明运行容器时的操作命令.
- docker 采用c/s架构
- docker daemon 宿主机后台运行 接收客户端请求并处理
- docker 是为用户提供的命令窗口 与服务器进行交互
sudo docker version
sudo docker -H tcp://127.0.0.1:1234