前言
新手小白刚接触docker在此对docker的基本使用做个记录,便于回顾。
个人对于docker的理解
docker是微服务普遍的一个产物,docker几乎在所有系统平台上都可以使用,真正做到了一次部署到处运行。只需将打包好的镜像上传后再其他平台下载运行即可。
基本使用
下载地址
docs.docker.com/docker-for-…
1、启动docker
2、设置国内镜像地址
右击docker任务栏图标 > settings > Daemon > Registry mirrors
增加 xxxxxxx.mirror.aliyuncs.com; ps:阿里云申请的容器镜像加速私人地址
3、测试docker
运行cmd > docker run hello-world; 出现如下界面表明可正常使用
4、基于docker 安装tomcat:8
cmd > docker pull tomcat:8;
语法 > docker pull repository:tag
5、查看已下载镜像
cmd > docker images
6、测试tomcat 启动
cmd > docker run -p 8080:8080 tomcat:8
启动tomcat 并将8080端口映射至宿主机的8080 端口
常用参数:
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
结果:
进入容器内 到 tomcat > webapp 下查看所有文件
cmd > docker exec -it CONTAINER ID bash
7、查看已运行的容器
cmd > docker ps
8、查看所有状态容器
cmd > docker ps -a
9、关闭容器
cmd > docker stop CONTAINER ID
10、删除容器
cmd > docker rm CONTAINER ID
11、删除镜像
cmd > docker rmi hello-world;
dockker rmi repository:tag
使用DockerFile定制镜像
完成目标:
使用docker构建一个镜像运行一个jar包,jar包内容是一个spring boot项目
1、开始构建DockerFile
FROM openjdk:8-jdk-alpine
COPY test2.jar app.jar
CMD java -jar app.jar
复制代码
文件夹内容如下
FROM:该镜像的依赖环境
COPY:将DockerFile文件目录下的 test2.jar 文件拷贝至镜像内的工作目录下并命名为 app.jar
CMD:容器启动时运行命令
2、构建镜像
cmd 目录切换至docker文件夹目录下
cmd > docker build -t 镜像名称:镜像标签 .特别注意 docker build -t 镜像名称:镜像标签 . 后面有一个点
. 代表上下文路径本案例路径为F:\docker
docker 是分为客户端与服务端,docker build过程中docker 客户端将会把上下文路径(F:\docker)的所有文件打包上传至服务端来运行。
3、查看所构建的镜像并运行
cmd > docker images
cmd > docker run -p 8083:8087 test:2
ps: test2.jar 中的端口配置的是8087所以 -p映射端口是将容器中的 8087 端口映射至宿主机的 8083 端口中
docker数据卷
1、为什么使用数据卷
当docker删除容器时或删除镜像时一些数据不希望丢失而这些数据可以挂载在宿主机上,当容器或镜像被删除时数据不会丢失。这些数据还能再多个容器中互相共享。
2、完成目标
构建mysql容器创建数据库后将容器删除后再次创建容器数据库不丢失
3、开始
1、查看mysql容器中的文件结构
cmd > docker run -it -e MYSQL_ROOT_PASSWORD=root mysql:5.7.22 bash
mysql数据文件路径 /var/lib/mysql
2、exit退出容器,新建容器将F://docker/mysql/data 作为数据卷映射至 /var/lib/mysql
cmd > docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --name mysql -v F://docker/mysql/data:/var/lib/mysql mysql:5.7.22
3、测试连接并新增数据库
4、删除容器
5、创建新容器不指定数据卷
cmd > docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --name mysql mysql:5.7.22
数据库消失
6、创建新容器指定数据卷
cmd > docker run -p 3406:3306 -e MYSQL_ROOT_PASSWORD=root --name mysql1 -v F://docker/mysql/data:/var/lib/mysql mysql:5.7.22
数据恢复
完结撒花
ps:本篇参考