Docker实用指令

1.指令

镜像

  • 启动docker
    systemctl start docker

  • 显示docker系统信息
    docker info

  • 登录docker仓库服务
    docker login docker.io
    在这里插入图片描述

  • 搜索镜像
    docker search alpine

  • 拉取镜像
    docker pull alpine
    docker pull alpine:3.10.3
    docker pull docker.io/library/alpine:3.10.3

    镜像的名字构成:注册名字(仓库在哪注册的) / 仓库名字 / 镜像名 : 标签名

  • 查看已安装的镜像
    docker images
    docker image ls
    在这里插入图片描述

  • 创建容器,运行镜像
    docker run hello-world

  • 将指定镜像保存成 tar 归档文件
    docker save 4b614599c521 > alpine:latest_with_1.txt.tar

  • 从tar文件恢复镜像
    docker load < alpine:latest_with_1.txt.tar

  • 删除镜像
    通过镜像ID的方式删除,若存在多个tag引用了这个镜像,要加-f删除
    docker rmi f70734b6a266
    docker rmi -f f70734b6a266
    docker rmi docker.io/gaoyangofchendu/alpine

  • 为镜像打标签
    docker tag f70734b6a266 docker.io/gaoyangofchendu/alpine:latest

  • 推送镜像到Dockerhub
    docker push docker.io/gaoyangofchendu/alpine:latest

    在这里插入图片描述

  • 查看镜像/容器的元数据信息
    docker inspect 0e26dab0a7ab

容器

  • 查看所有容器
    docker ps -a

  • 运行容器
    docker run -ti docker.io/alpine /bin/sh(启动时,运行指令/bin/sh)
    docker run --rm docker.io/alpine:latest /bin/echo hello
    docker run -ti --name myalpine docker.io/alpine_1.txt /bin/sh
    docker run --rm --name mynginx -d -p81:80 docker.io/nginx:v1.12.2
    docker run -d --rm --name nginx_with_baidu -d -p82:80 -v/root/html:/usr/share/nginx/html docker.io/nginx:v1.12.2
    docker run --rm -e E_OPTS=asdf docker.io/alpine:latest printenv
    在这里插入图片描述

    • run命令参数
      -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
      -i:以交互模式运行容器,通常与 -t 同时使用;
      –rm:退出容器以后,自动删除容器。即在docker ps -a中看不到了
      –name:启动容器时,为容器取一个名字
      -d:后台启动
      -p:端口映射 宿主:容器
      -v:目录映射 宿主:容器
      -e:启动容器时,为容器指定环境变量
  • 进入运行中的容器
    docker exec -ti a24bb4013296 /bin/sh

  • 启动/停止/重启已有的容器
    docker start/stop/restart a24bb4013296

  • 删除容器
    docker rm 7d90955a9202
    docker rm -f 7d90955a9202

  • 以当前容器创建新的镜像
    docker commit -p c4924b5d4e85 docker.io/alpine_1.txt

    -p :在commit时,将容器暂停。

  • 查看容器的运行日志
    docker logs -f 0e26dab0a7ab

Dockerfile

Dockerfile:包含了构建docker镜像源码的文件

  • 通过Dockerfile创建镜像
    docker build . -t docker.io/gaoyangofchendu/alpine:latest_with_my
    通过当前路径下的Dockerfile创建docker.io/gaoyangofchendu/alpine:latest_with_my镜像

    -t: 镜像的名字及标签

  • FROM
    Dockerfile的第一个非注释行指令必须是FROM,用于指明镜像构建过程中的基准镜像

    FROM docker.io/nginx
    
  • USER
    指定运行容器时的用户名或 UID,默认是root

    USER nginx
    
  • WORKDIR
    用户的工作主目录,默认是根目录

    WORKDIR /usr/share/nginx/html
    
  • ADD
    把资源添加到镜像里

    ADD index.html /usr/share/nginx/html/index.html
    
  • EXPOSE
    镜像需要暴露的端口(对应启动容器时 -P)

    EXPOSE 80
    
  • ENV
    构建镜像时指定环境变量

    ENV JAVA_HOME /data/soft/jdk1.8.0_65
    
  • RUN
    构建镜像时执行的指令

    RUN yum install -y httpd
    
  • CMD
    启动容器时执行的指令

    CMD ["httpd","-D","FOREGROUND"] #httpd -D FOREGROUND
    
  • ENTRYPOINT
    启动容器时执行的脚本。默认是/entrypoint.sh

    ENTRYPOINT /xxx.sh   #/xxx.sh是镜像内的路径
    

    FROM docker.io/nginx
    USER nginx
    WORKDIR /usr/share/nginx/html
    docker build . -t docker.io/gaoyangofchendu/nginx:latest_dockerfile
    docker run --rm -ti --name nginx123 docker.io/gaoyangofchendu/nginx:latest_dockerfile /bin/bash

    FROM docker.io/nginx
    ADD index.html /usr/share/nginx/html/index.html
    EXPOSE 80
    docker build . -t docker.io/gaoyangofchendu/nginx:latest_with_index
    docker run --rm -d --name nginx123 -P docker.io/gaoyangofchendu/nginx:latest_with_index

2.配置

  • /etc/docker/daemon.json
    “registry-mirrors”: [“http://hub-mirror.c.163.com”]

3.原理

容器的生命周期

  1. 检查本地是否存在镜像,不存在就从远程仓库检索
  2. 利用镜像启动容器
  3. 分配一个文件系统,并在只读的镜像层外挂载一层可读写层
  4. 从宿主机配置的网桥接口中桥接一个虚拟接口到容器
  5. 从地址池配置一个IP地址给容器
  6. 执行用户指定的指令
  7. 执行完毕后容器终止
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章