Docker指令记录
Docker指令记录
对docker指令及踩坑记录,不包含具体原理及过程。参照https://www.cnblogs.com/clsn/p/8410309.html#auto-id-17有详细教程。
一、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 工作目录