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构建的时候执行命令

 

posted @ 2021-01-28 16:45  顽强的allin  阅读(99)  评论(0编辑  收藏  举报