docker学习
docker 架构
docker 镜像特性
docker 镜像位于bootfs之上,每一层镜像的下面一层称为其父镜像(父子关系),第一层镜像为base Image,容器在最顶层,其下的所有层都为readonly,Docker将readonly的FS层称作“image”
假如镜像很大,只需要拉取增量部分,Base Image不需要变动。
Docker基本操作
首先在https://hub.docker.com/注册docker账号
登录
查找并拉取镜像
查看镜像命令
给镜像打标签
推送镜像到仓库
删除标签
删除镜像(如果有多个引用,加-f强制删除)
列出本地容器进程
docker ps -a
启动容器(运行镜像)
docker run [OPTIONS] IMAGE [COMMAND] [ARG...] OPTION选项: -i: 表示启动一个可交互的容器,并持续打开标准输入 -t: 表示使用终端关联到容器的标准输入输出上 -d:表示将容器放置后台运行 --rm: 退出后即删除容器 --name: 表示容器唯一名称 IMAGE: 表示要运行的镜像 COMMAND: 表示启动容器时要运行的命令
启动/停止/重启容器
docker start/stop/restart container_name
进入容器
docker exec -it myalpine1 /bin/sh 容器有自己的文件系统,在容器里面写文件,退出后写的文件会丢失,因为文件在容器的操作层 要想将文件保存到只读层,可以用以下命令将容器固化成一个新的容器 docker commit -p old_container_name new_container_name
导出/导入镜像
docker save image_id > image_name.tar docker load < image_name.tar 添加tag docker tag image_id xiangxiaolin1314/image_name:tag 运行容器 docker run -ti xiangxiaolin1314/image_name:tag /bin/sh
查看日志
docker logs 容器名
映射端口
docker run -p 容器外端口:容器内端口
netstat -luntp|grep 81 # 查看端口
docker run --rm --name mynginx -d -p81:80 nginx:latest
容器运行详细信息
docker inspect container_id
容器挂载
docker run -v 容器外目录:容器内目录
# 把百度首页get下来 wget www.baidu.com -O index.html 将本地目录挂载到容器 docker run --rm --name nginx_with_baidu -d -p82:80 -v/root/html:/usr/share/nginx/html nginx # 进入容器查看目录 docker exec -it nginx_with_baidu /bin/bash cd /usr/share/nginx/html/
传递环境变量
docker run -e 环境变量key:环境变量value
docker run --rm -e E_OPT=123456789 nginx printenv
DOCKERFILE
Dockerfile规则:
格式:#为注释,指令大写内容小写,尽管指令是大小写不敏感的,但是建议用大写,内容小写表示。
Docker是按照顺序执行Docker里的指令集合的(从上到下依次执行)
每个Docker的第一个非注释行指令,必须是“FROM”指令,用于为镜像文件构建过程中,指定基准镜像,后续的指令运行于此基准镜像所提供的运行环境中。
实践中,基准镜像可以是任何可用镜像文件,默认情况下,docker build会在docker主机(本地)上查找指定的镜像文件,当其在本地不存在时,则会从Docker registry(远端)上拉取所需镜像文件。
FROM nginx USER nginx # 指定用户 WORKDIR /usr/share/nginx/html # 切换目录 # 创建image docker build . -t nginx:v2 # 启动容器 docker run --rm -it --name nginx2 nginx:v2 /bin/bash
FROM nginx ADD http://www.baidu.com/index.html /usr/share/nginx/html/test.html # 将源目录文件(可以是链接或压缩包)添加到指定目录 EXPOSE 80 # 暴露端口
FROM centos ENV VER 9.9.4-74.e17_6.1 # 设置变量 RUN yum install bind-$VER -y # 在image构建的时候执行命令
人生就是要不断折腾