美文网首页
Docker 入门

Docker 入门

作者: FConfidence | 来源:发表于2020-01-10 00:25 被阅读0次

docker 配置参数说明

  1. 实例
# /usr/src/nodejs/Dockerfile
FROM node:10.0

# 在容器中创建一个目录
RUN mkdir -p /usr/src/nodejs/

# 定位到容器的工作目录
WORKDIR /usr/src/nodejs/

# RUN/COPY 是分层的,package.json 提前
COPY package.json /usr/src/app/package.json
RUN cd /usr/src/app/
RUN npm i

# 把当前目录下的所有文件拷贝到 Image 的 /usr/src/nodejs/ 目录下
COPY . /usr/src/nodejs/


EXPOSE 3000
CMD npm start
  1. 配置参数说明( DockerFile 学习):
  • FROM:FROM 是构建镜像的基础源镜像,该 Image 文件继承官方的 node image。
    详细说明:Dockerfile 中 FROM 是必备的指令,并且必须是第一条指令!它引入一个镜像作为我们要构建镜像的基础层,就好像我们首先要安装好操作系统,才可以在操作系统上面安装软件一样。

  • RUN:后面跟的是在容器中要执行的命令。
    详细说明:每一个 RUN 指令都会新建立一层,在其上执行这些命令,我们频繁使用 RUN 指令会创建大量镜像层,然而 Union FS 是有最大层数限制的,不能超过 127 层,而且我们应该把每一层中我用文件清除,比如一些没用的依赖,来防止镜像臃肿。

  • WORKDIR:容器的工作目录

  • COPY:拷贝文件至容器的工作目录下,.dockerignore 指定的文件不会拷贝

  • EXPOSE:将容器内的某个端口导出供外部访问

  • CMD:Dockerfile 执行写一个 CMD 否则后面的会被覆盖,CMD 后面的命令是容器每次启动执行的命令,多个命令之间可以使用 && 链接,例如CMD git pull && npm start

  • ENV(补充) 指令用来设置环境变量,它有两种形式:

    ENV <key> <value>
    ENV <key1>=<value1> <key2>=<value2>...
    

    定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。

目录构建

  1. cd my-nodejs-project

  2. 创建标签名为dockerstudy的镜像: docker build -t dockerstudy .

    build 命令用来制作镜像
    -t 是给镜像打标签
    
    -f 参数是指定 Dockerfile 路径,由于我们使用的是默认 Dockerfile 名称,所以可以不同填写该参数。
    
    最后一个.表示 Dockerfile 文件的所在目录, 代表是当前路径,它指定镜像构建的上下文。我们刚才说过,真正制作镜像的是 docker server,
    
    执行 build 命令时,docker client 会将上下文路径下的所有内容打包,然后上传给 docker server。这样当我们要在 Dockerfile 文件中执行 如 COPY 指令,就可以将上下文中的文件复制到镜像中去了。
    
  3. 构建目标名称 dockerstudy,是一个镜像

  4. 一般应该会将 Dockerfile 置于一个空目录下,或者项目根目录下。

    • 如果该目录下没有所需文件,那么应该把所需文件复制一份过来。
    • 如果目录下有些东西确实不希望构建时传给 Docker引擎,那么可以用.gitignore 一样的语法写一个 .dockerignore。
  5. 通过镜像 dockerstudy 创建一个容器并运行。

    docker run --name dockerstudycontainer -d -p 3000:3000 dockerstudy
    
    • 说明:创建的容器名称是 dockerstudycontainer,你可以理解为 pid,这个名称唯一,创建之后如果不删除会一直存在。
    • -p 用来指定端口映射,将容器的端口3000映射到主机3000`端口上,这样就可外部访问了。

创建镜像&容器流程常用命令

  1. 创建镜像
docker build -t dockerstudy . 
  1. 查看所有镜像
docker images
  1. 删除执行Dockerfile报错生成的镜像none
docker rmi $(docker images | grep "none" | awk '{print $3}')
  1. 创建容器并启动
docker run -dit dockerstudy
# -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
# -i 则让容器的标准输入保持打开。
docker run --name dockerstudycontainer -d -p 3000:3000 dockerstudy
# -d 设置容器已进程守护的形式运行

测试 curl localhost:3000

  1. 查看容器的使用情况
docker stats dockerstudycontainer
  1. 查看容器/停止容器/删除容器
docker container ls  -a ## 查看所有容器,包括当前容器的id镜像

docker container stop <id>
docker container rm <container_name>
  1. 进入镜像
docker attach <CONTAINER ID>
### 推荐使用exec
docker exec -it <CONTAINER ID> bash
  1. 日志检查, 查看容器运行日志
docker logs -f <container_id>

常用命令

  1. 镜像使用命令

    docker pull [镜像名称:版本] 拉取镜像
    docker images  镜像列表
    docker rmi [镜像名称:版本] 删除镜像
    docker history [镜像名称] 镜像操作记录
    docker tag [镜像名称:版本][新镜像名称:新版本]
    docker inspect [镜像名称:版本] 查看镜像详细
    docker search [关键字] 搜索镜像
    docker login 镜像登陆
    
  2. 容器命令

    docker ps -a 容器列表(所有容器)
    docker ps  查看所有(运行的)容器
    docker exec -ti <id> bash  以 bash 命令进入容器内
    docker run -ti --name [容器名称][镜像名称:版本] bash 启动容器并进入
    docker logs 查看容器日志
    docker top <container_id> 查看容器最近的一个进程
    docker run -ti --name [容器名称] -p 8080:80 [镜像名称:版本] bash  端口映射
    docker rm <container_id> 删除容器
    docker stop <container_id> 停止容器
    docker start <container_id> 开启容器
    docker restart <container_id> 重启容器
    docker inspect <container_id> 查看容器详情
    docker commit [容器名称] my_image:v1.0  容器提交为新的镜像
    

相关文章

网友评论

      本文标题:Docker 入门

      本文链接:https://www.haomeiwen.com/subject/uzouactx.html