Docker指令记录

  • A+
所属分类:.NET技术
摘要

1.1 搜索dockerhub官方镜像1.2 拉取镜像1.3 查看本地镜像1.4 将本地镜像导出成压缩文件


Docker指令记录

对docker指令及踩坑记录,不包含具体原理及过程。参照https://www.cnblogs.com/clsn/p/8410309.html#auto-id-17有详细教程。

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操作,参照https://www.cnblogs.com/panwenbin-logs/p/8007348.html。

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 工作目录 
其余指令不常用,故不列举,用到再加。