官网下载 docker

https://www.docker.com/

镜像操作

镜像加速

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

Perferences -> Docker Engine -> 将 https://y2vgkfz3.mirror.aliyuncs.com 加到"registry-mirrors"的数组里,然后点击 Apply & Restart。

镜像查看

1
docker images 

查看本地仓库有哪些镜像。

下载镜像

1
docker pull 镜像名:版本号

搜索镜像

1
docker search 镜像名[:版本号]

删除镜像

1
docker image rm 镜像名

强制删除:

1
docker image rm -f 

获取镜像 id

1
docker images -q
1
docker rmi -f $(docker images -q)

容器命令

将打包的 tar 文件导入到 docker 仓库

1
docker load -i 导入的 tar 镜像文件名

通过镜像运行容器

1
docker run 镜像id/镜像名

映射宿主机端口和容器端口

1
docker run -p 宿主机端口:容器端口

后台启动

1
docker run -d(后台运行)

指定名称启动

1
docker run --name 名称

查看运行的容器

1
docker ps 

查看所有容器

1
docker ps -a

返回正在运行的容器 id

1
docker ps -q

开始、停止、重启容器

1
2
3
4
docker start 容器id/容器名
docker restart 容器id/容器名
docker stop 容器id/容器名   正常停止容器运行
docker kill 容器id/容器名   立即停止容器运行

删除容器

1
docker rm 容器名/容器id

查看容器内服务运行日志

1
2
3
4
docker logs 容器 id/容器名称  一闪而过
docker logs -f 容器 id/容器名称  实时查看
docker logs -t 容器 id/容器名称   加入时间戳
docker logs --tail n 容器 id/容器名称   查看容器尾部的n行

查看容器进程

1
docker top 容器 id/容器名称

进入容器

1
docker exec -it 容器id/容器名称 /bin/bash(终端应用)

复制文件

从操作系统到容器

1
docker cp 宿主机中的路径 容器id/容器名:容器下的资源路径

从容器到操作系统

1
docker cp 容器id/容器名:容器下的资源路径 宿主机中的路径

查看容器内部细节

1
docker inspect 容器id/容器名称

数据卷

实现宿主系统和容器间文件共享。

1
docker run -v 宿主机名目录:容器目录

将容器打包成新的镜像

1
docker commit -m "deploy" -a "an" 容器id 打包的镜像名:镜像版本

备份镜像

1
docker save 镜像名称:Tag -o 文件名.tar

Dockerfile

FROM

当前镜像是基于哪一个镜像,第一个指令必须是 FROM

1
2
3
FROM <images> 
FROM <images>[:<tag>]
FROM <images>[@digest] 使用摘要

基于 Dockerfile 构建镜像

1
docker build -t mycentos:01 .

RUN

构建镜像时需要运行的指令。

1
2
FROM centos
RUN yum install -y vim
1
2
FROM centos
RUN ["yum","install","-y","vim"]

EXPOSE

用来指定构建的镜像在运行为容器时对外暴露的端口。

1
EXPOSE 80

WORKDIR

指定工作目录

1
WORKDIR /data

ADD

从上下文中拷贝文件到指定路径映像文件系统中

1
ADD home.txt /mydir/

COPY

从上下文中拷贝文件到指定路径映像文件系统中

1
COPY home.txt /mydir

COPY 可以下载 URL,ADD 不行

VOLUMN

定义可以挂载到宿主机器目录。

1
VOLUMN ["/data"]

ENV

设置环境变量。

1
2
ENV <key> <value>
ENV <key>=<value>

ENTRYPOINT

用来指定容器启动时的执行命令

1
ENTRYPOINT command param1 param2