DockerFile是什么
DockerFile是用来构建镜像的构建文件,是由一系列命令和参数构成的脚本。
构建三步骤:
- 编写DockerFile文件
- docker build
- docker run
docker体系结构(保留字指令):
- FROM:基础镜像,当前新镜像基于哪个镜像
- MAINTAINER:镜像维护者的姓名和邮箱地址
- RUN:容器构建时需要运行的命令
- EXPOSE:当前容器对外暴露出的端口
- WORKDIR:指定在创建容器后,终端登录进来时的目录
- ENV:用来在构建镜像过程中设置环境变量
- ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
- COPY:类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
- VOLUME:容器数据卷,用于数据保存和持久化工作
- CMD:指定一个容器启动时要运行的命令。DockerFile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
- ENTRYPOINT:指定一个容器启动时要运行的命令。ENTRYPOINT的目的和CMD一样,都是指定容器启动程序和参数
- ONBUILD:当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的onbuild被触发
Docker常用安装
总体步骤:
- 搜索镜像
- 拉取镜像
- 查看镜像
- 启动镜像
- 停止容器
- 移除容器
docker安装mysql
docker search mysql
docker pull mysql:5.7
docker run -p 12345:3306 --name mysql -v /fatal/mysql/conf:/etc/mysql/conf.d -v /fatal/mysql/logs:/logs -v /fatal/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 -d mysql:5.7
docker exec -it 容器id /bin/bash
docker exec 容器id sh -c 'exec mysqldump --all-databases -uroot -p"密码"' > /fatal/all-databases.sql (备份docker中mysql的数据)
docker安装redis
docker pull redis:4.0
docker run -p 6379:6379 -v /fatal/myredis/data:/data -v /fatal/myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis:4.0 redis-server /usr/local/etc/redis/redis.conf --appendonly yes (appendonly是数据持久化存储)
docker exec -it 容器id redis-cli
本地镜像发布到阿里云
镜像的生成方法:1.前面的DockerFile 2.从容器创建一个新的镜像
docker commit [OPTIONS] 容器id
$ sudo docker login --username=fatalblows registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/fatal/mycentos:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/fatal/mycentos:[镜像版本号]
从阿里云拉镜像下来:docker pull xxxxxxxxxx