docker 使用

下载地址:

Container Runtime with Docker Engine | Docker

修改为国内镜像

  • windows C:\Users\你的用户名.docker\daemon.json
  • Linux /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

修改后重启 docker

容器介绍

  • 一个 image 文件就是镜像,可生成多个容器实例文件
  • image 可继承其他的 image 文件,一般都是继承 image 再添加自己的内容形成自己的 image
  • 容器运行后可自动停止,也可持续运行
  • 容器停止后容器文件不会被删除
  • 容器在各系统上是通用的

常用命令

# 验证安装
$ docker version
# 或
$ docker info

# 列出本机 image 文件
$ docker image ls

# 删除 image
$ docker image rm [imageName]

# 从仓库抓取 image 以下命令中 library 为组名称,library 为官方默认组,可忽略。
$ docker image pull library/hello-world

# 运行 image 文件 以下命令中 container run 如果本地没有该 image 会自动 pull 该 image 
$ docker container run hello-world

# 列出当前正在运行的容器
$ docker container ls
# 或
$ docker ps

# 列出所有容器,包括已停止运行的容器
$ docker container ls -all
# 或
$ docker ps -a

# 手动终止容器
$ docker container kill [containerID]

# 停止容器
$ docker container stop [containerNAME]

# 删除容器文件
$ docker container rm [containerID]

# 拷贝文件 注意最后的 . 是拷贝到当前目录
$ docker container cp [containerNAME]:/etc/nginx .

批量操作命令

# 停用全部容器
$ docker stop $(docker ps -q)

# 删除全部容器
$ docker rm $(docker ps -aq)

# 停用并删除容器
$ cker stop $(docker ps -q) & docker rm $(docker ps -aq)

# 批量删除名字为 none 的 image
$ docker images|grep none|awk '{print $3 }'|xargs docker rmi

发布 image 命令

# 登陆 docker
docker login

# 给 image 打上 Tag
docker tag <image> username/repository:tag

# 上传到 Docker Hub
docker push username/repository:tag

# 运行在线的 image
docker run username/repository:tag

定制的 image   .dockerignore 忽略文件

.git
node_modules
npm-debug.log

Dockerfile

# 继承官网 node image 版本 8.4
FROM node:8.4

# 当前目录所有文件 拷贝到 image 文件的 /app 目录
COPY . /app

# 指定工作路径为 /app
WORKDIR /app

# 在 /app 目录下,运行 npm install 命令。安装后的依赖将打包进  image 文件
# RUN命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件
RUN npm install --registry=https://registry.npm.taobao.org

# 开放 3000 端口,允许外部连接该端口
EXPOSE 3000

# 容器运行后自动执行的命令
# 指定了CMD命令以后,docker container run命令就不能附加命令了
CMD node demos/01.js

创建image

$ docker image build -t test-demo:0.0.1 .
# -t imageName
# :Tag 标签一般用来表示版本号
# . 路径 . 代表当前路径

生成容器

$ docker container run -p 8000:3000 -it koa-demo /bin/bash
# -p 8000:3000 容器的 3000 端口映射到本机 8000 端口
# -it 容器的 Shell 映射到当前 Shell
# koa-demo image 名字
# /bin/bash 容器启动后,内部第一个执行的命令。这里是启动 Bash

创建 Nginx 服务器

$ docker container run \
  --rm \
  --name mynginx \
  --volume "$PWD/html":/usr/share/nginx/html \
  --volume "$PWD/conf":/etc/nginx \
  -p 127.0.0.2:8080:80 \
  -p 127.0.0.2:8081:443 \
  -d \
  nginx

$ docker container run \
  --rm \
  --name mynginx \
  --volume d:/code/dockerHello:/usr/share/nginx/html \
  -p 127.0.0.2:8080:80 \
  -d \
  nginx

# -d:在后台运行
# -p :容器的80端口映射到127.0.0.2:8080
# --rm:容器停止运行后,自动删除容器文件
# --name:容器的名字为mynginx
# --volume 目录html,映射到容器的网页文件目录/usr/share/nginx/html 需要在 docker 里设置共享磁盘

一般容器里的内容不能持久化,需要映射到本地的目录

问题:

  • 推荐使用 PowerShell git的Shell 在执行 -ti 命令时会有问题。
  • 在 windows 下 容器内的 webpack gulp等构建工具是监测不到文件变化的,Linux 可以,windows下是先虚拟了个 docker 然后 container 是再虚拟一层。
  • docker 的 image 文件在哪?

  • image 很空间,随便搞搞几个G就出去了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值