Docker指令记录

对docker指令及踩坑记录,不包含具体原理及过程。参照有详细教程。

docker image extract_docker

一、Docker基础指令

1.镜像

1.1 搜索dockerhub官方镜像

docker search nginx

1.2 拉取镜像

docker pull nginx

1.3 查看本地镜像

docker images  或  docker image list

1.4 将本地镜像导出成压缩文件

docker image save nginx > docker-nginx.tar.gz

1.5 删除镜像

docker image rm nginx:latest

1.6 导入镜像到本地,-i 表示指定导入的文件

docker image load -i docker-nginx.tar.gz

1.7 查看镜像的详细信息

docker image inspect nginx

2.容器

关于镜像与容器的关系,我认为可以用一句话表达:容器就是镜像的实例,一个镜像可以创建多个容器,镜像类似于快照。

2.1 启动容器

docker run -d -p 80:80 nginx

-d为后台运行容器;-p为端口映射,后接映射地址 ip:hostPort:containerPort

2.2 查看正在运行的容器

docker container ls 或 docker ps

2.3 查看容器的详细信息

docker container  inspect  容器名称/id

2.4 查看所有的容器

docker ps -a

2.5 停止容器

docker stop 容器名称/id  或  docker container kill 容器名称/id

2.6 进入容器(最常用的一种)

docker exec -it 容器id /bin/bash

2.7 退出容器

exit  或快捷键:Ctrl+P+Q

2.8 将容器保存为镜像

docker commit 容器ID newimage:v1

3.数据卷

数据卷用来共享容器间的数据,将容器与宿主机之间实现数据共享,使任意一方相应共享地址下数据变化影响对应一方。

3.1 在创建容器时使用数据卷

docker run -d -p 80:80 -v /data/nginx:/usr/share/nginx/html nginx:latest
使用-v表示创建数据卷,宿主机地址为/data/nginx(没有会自动创建),目标容器内的数据地址在/usr/share/nginx/html。

3.2 创建自定义容器卷

docker volume create customize-nginx-volume
使用时,在创建容器的时候将宿主机地址改为自定义的容器卷的名称。

3.3 查看所有容器卷

docker volume ls

3.4 查看指定容器卷详细信息

docker volume inspect customize-nginx-volume
容器变化不会影响数据卷变化,宿主机内的数据卷还在,新建容器时仍可以继续使用。

3.5 清理数据卷

docker stop edc-nginx // 暂停容器实例
docker rm edc-nginx // 移除容器实例
docker volume rm edc-nginx-vol // 删除自定义数据卷

4.Dockerfile

编写Dockerfile文件可以批量执行Docker指令完成一系列Docker操作,参照。

4.1 FROM:指定基础镜像(必须为第一个指令)

FROM <镜像名称>:<镜像版本(不指定为latest)>

4.2 RUN:构建镜像时执行的命令

RUN <命令>

4.3 ADD:复制文件,压缩文件会自动解压,可以访问网络资源

ADD <srcPath> <destPath>

4.4 COPY:复制文件,不会自动解压和访问网络资源

COPY <srcPath> <destPath>

4.5 CMD:构建容器之后(容器启动时),执行的命令

CMD ["可执行文件地址","参数1","参数2"...]
或
CMD <命令> <参数1> <参数2>

4.6 ENTRYPOINT:配置容器,使其可执行化。

ENTRYPOINT与CMD非常类似,不同的是通过docker run执行的命令不会覆盖ENTRYPOINT,而docker run命令中指定的任何参数,都会被当做参数再次传递给ENTRYPOINT。Dockerfile中只允许有一个ENTRYPOINT命令,多指定时会覆盖前面的设置,而只执行最后的ENTRYPOINT指令。
ENTRYPOINT ["可执行文件地址","参数1","参数2"...]
或
ENTRYPOINT <命令> <参数1> <参数2>

4.7 LABEL:为镜像添加元数据

LABEL <key>=<value> <key>=<value> <key>=<value> ...

4.8 ENV:设置环境变量

ENV <key> <value>
或
ENV <key>=<value> ...

4.9 EXPOSE:指定于外界交互的端口

配合docker run时-p参数暴露端口
EXPOSE <port> [<port>...]

4.10 VOLUME:用于指定持久化目录

VOLUME ["容器内数据卷目录"]

4.11 WORKDIR:设置工作目录,类似于cd命令

WORKDIR 工作目录
其余指令不常用,故不列举,用到再加。