如何用docker来打包镜像(小宇特详解)
如何用docker来打包镜像第一部分Docker官网:https://www.docker.com/一、帮助命令docker version# 显示docker的版本信息docker info# 显示docker的系统信息,包括镜像和容器的数量docker 命令 --help# 帮助命令二、镜像命令安装镜像的搜索网址:https://hub.docker.com/2.1、下载镜像docker im
·
如何用docker来打包镜像
第一部分
Docker官网:https://www.docker.com/
一、帮助命令
docker version # 显示docker的版本信息
docker info # 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help # 帮助命令
二、镜像命令
安装镜像的搜索网址:
https://hub.docker.com/
2.1、下载镜像
docker images # 查看所有本地主机上的镜像
docker search mysql # 搜索镜像
docker pull --help # 下载镜像
docker pull mysql:5.7 # 指定MySQL的版本
2.2、删除镜像
docker rmi -f id # 删除指定的镜像,remove image,加上镜像ID
docker rmi -f id id id # 删除多个镜像
docker rmi -f $(docker image -aq) # 批量删除全部的image(-f表示全部删除,即force,-ap查询命令)
三、容器命令
下载CentOS镜像
docker pull centos
新建容器并启动
docker run --help
docker run [可选参数] image
# 参数说明
--name="Name" 容器名字 Tomcat1 Tomcat2 用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口,-p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
-P 随机指定端口
启动并进入容器
docker run -it centos /bin/bash
从容器中退回主机
exit # 直接停止容器并退出
Ctrl + P + Q # 容器不停止退出
ls
列出所有的运行容器
docker ps
-a # 列出当前正在运行的容器,带出历史运行过的容器
-n=? # 显示最近创建的容器
-q # 只显示容器的编号
docker ps -a
删除容器
docker rm 容器id # 删除指定的容器,不能删除正在运行的容器,如果要强制删除,加采纳数rm -f
docker rm -f $(docker ps -aq) # 删除所有的容器
docker ps -a -q | xargs docker rm # 删除所有的容器(管道命令)
启动和停止容器的操作
docker start 容器ID # 启动容器
docker restart 容器ID # 重启容器
docker stop 容器ID # 停止正在运行的容器
docker kill 容器ID # 强制停止当前容器
四、常见其他命令
后台启动容器
docker run -d 镜像名
docker run -d centos
# 问题:docker ps,发现centos停止了
# 常见的坑:docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
# Nginx容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序运行了
查看日志
docker logs --help
docker logs -f -t --tail 容器ID # 容器如果没有日志
# 自己编写shell脚本
"while true;do echo OriginalCoder;sleep 1;done"
docker run -d centos /bin/sh -c "while true;do echo OriginalCoder;sleep 1;done"
docker ps # 查看容器ID
显示日志
-tf # 显示日志(-t:时间戳,-f:持续显示日志)
--tail number # 要显示的日志条数
docker logs -ft --tails 10 容器ID(10代表打印的条数)
查看容器中进程信息ps
docker ps # 查看容器ID
docker top 容器ID
查看镜像的元数据
docker inspect --help
docker ps -a
docker inspect 容器ID
进入当前正在运行的容器
通常情况下,容器都是后台运行的,需要进入容器中,修改一些配置
# 方式一
docker exec -it 容器ID /bin/bash
ls
ps -ef
# 方式二
docker attach 容器ID
区别
# docker exec 进入容器后开启一个新的终端,可以在里面操作
# docker attach 进入容器正在执行的终端,不会启动新的进程
从容器内拷贝文件到主机上
docker cp 容器ID: 容器内路径 目的主机路径
docker ps
docker images
docker run -it centos /bin/bash
docker ps
docker attach 容器ID
cd /home
ls
容器内新建一个文件
# touch test.java
exit
docker ps -a
# 将这个文件拷贝出来到主机上
docker cp 容器ID:/home/test.java /home
ls
安装vim
apt-get install vim
安装apache2
apt-get install apache2 -y
安装装php和php插件
apt-get install php -y
apt-get install libapache2-mod-php -y --fix-missing
apt-get install php7.0-mysql
第二部分
一、实战:安装MySQL
思考:MySQL的数据持久化问题
# 获取镜像
docker search mysql
docker pull mysql:5.7
# 运行容器,需要做数据挂载
# 安装启动mysql,需要配置密码(注意点)
# 官方测试:docker run -it --network some-network --rm mysql mysql -hsome-mysql -uexample-user -p
# 运行
-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置
--name 容器名字
docker run -d -p 3310: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
# 启动成功之后,可以在Windows本地机测试
假设我们将容器删除
docker rm -f mysql01
docker ps
docker ps -a
回到宿主机查看,发现数据都还在! 我们挂载到本地的数据卷没有丢失,这就实现了容器数据持久化功能。
二、具名挂载和匿名挂载
# 匿名挂载
-v 容器内路径
docker run d -P --name nginx01 -v /etc/nginx nginx
# 查看所有数据卷的情况
docker volume ls
三、DockerFile
DockerFile就是用来构建docker镜像的构建文件!命令脚本
mkdir docker-test-volume
ls
pwd
cd docker-test-volume/
pwd
# 通过下面这个脚本,可以生成镜像,镜像是一层一层的,脚本是一层层的命令,每一个命令都是一层
vim dockerfile1
FROM centos
VOLUME ['volume01','volume02']
CMD echo "----end----"
CMD /bin/bash
ESC
:wq
# 查看dockerfile1
cat dockerfile1
#
docker build -f /home/docker-test--volume/docekrfile1 -t rich/centos:1.0 .
启动自己写的容器
这个卷和外部一定有一个同步的目录
四、打包Docker镜像
1、构建SpringBoot项目
2、打包应用
3、编写DockerFile
4、构建镜像
5、发布运行
以后在使用Docker的时候,给别人一个Docker的镜像就可以
更多推荐
已为社区贡献2条内容
所有评论(0)