目录
1.Docker 常用命令
1.1 镜像命令
docker images [options] 列出本地主机上的镜像
[options] 可选参数:
-a:列出本地所有镜像(含中间映像层)
-q:只显示镜像ID
--no-trunc:显示完整的镜像信息
docker search 某个镜像的名称 从仓库中搜索需要的镜像
搜索镜像的网站:https://hub.docker.com/ 第一次使用注册账户
[options] 可选参数:
-s:列出收藏数不小于指定值的镜像
docker pull 镜像名称[:tag] 拉取镜像到本地
注意:tag不敲的情况下默认下载latest最新版本
docker rmi 某镜像的名字ID 删除某个镜像
-f:强制删除
删除多个镜像:docker rmi -f 镜像名1:tag 镜像名2:tag 以此类推
删除全部镜像: docker rmi -f $(docker image -qa)
1.2容器命令 w1
前提:拥有镜像后,才能创建容器
docker run [option] 镜像名 [command] 运行一个容器
option常用参数:
-i: 以交互模式运行容器,通常与 -t 同时使用
-t: 为容器重新分配一个tty伪终端,通常与 -i 同时使用
-d: 后台运行容器,并返回容器ID,也即启动守护式容器
-p: 指定端口映射,常用格式 hostPort:containerPort 即主机端口:容器端口
-P :随机分配一个端口映射
--name 容器新名称: 为容器指定一个名称
-h 主机名称: 容器下新的主机名称
command:
运行一个命令,最常见的就是 /bin/bash
docker ps [option] 列出正在运行的容器
option常用参数:
-a :列出当前所有正在运行的容器+历史上运行过的
-q :静默模式,只显示容器编号。
-l :显示最近创建的容器
-n :显示最近创建的n个容器
两种退出容器的方法
1.exit 退出并停止掉容器
2.ctrl+P+Q 退出但不停止容器,相当于由前台运行转到后台运行
docker start/stop/restart/kill 容器ID/容器名 启动/停止/重启/强制停止容器
关于后台-d启动容器,需要注意的地方。
Docker容器后台运行,就必须有一个前台进程.
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。
docker logs -tf 容器ID 查看某个容器下的运行日志
docker inspect 容器ID 查看某个容器的详细信息
docker exec -it 容器ID /bin/bash 命令行交互方式进入正在运行的容器里面(启动一个新的进程)
docker attach 容器ID 再次进入运行的容器中(还是原来的进程)
docker cp [OPTIONS] 容器ID:SRC_PATH DEST_PATH 宿主机从容器中拷贝单个文件
option参数: -r 批量复制,直接拷贝文件夹即可
docker rm 容器ID 删除某个指定的容器
docker rm -f $(docker ps -aq) 强制删除所有容器
2.Docker容器数据卷
假如没有容器数据卷,某容器里面正好跑着mysql服务,一旦容器关闭或者误删除会导致数据丢失,日志错误,等等非常严重的后果。
解决的问题:容器持久化、多容器以及宿主机之间实现数据共享、容器继承
数据卷挂载 docker run -it -v 宿主机绝对路径:容器内目录 镜像名
在宿主机上查看是否成功挂载 docker inspect 容器ID
此时文件存放在宿主机中,不会随着容器的关闭或者删除而丢失。
还有一种是通过编写Dockerfile文件,在构建镜像时就提前设定好匿名挂载目录
参考链接:https://blog.csdn.net/qq32933432/article/details/120944205
VOLUME["/dataVolumeContainer","/dataVolumeContainer2","/dataVolumeContainer3"]
3.DockerFile配置文件解析
Dockerfile 是用来构建Docker镜像的构建文件,是由一系列命令参数构成的脚本
构建一个镜像的流程
1.编写Dockerfile文件
2.docker build 构建出新的镜像文件
3.docker run 通过新的镜像运行自定义的容器
官方文档编写dockerfile https://docs.docker.com/engine/reference/builder/
关键字 | 用途 |
---|---|
FROM | 继承的基础镜像,空镜像scratch |
RUN | 执行命令并创建新的镜像层,通常用于安装软件包 |
CMD | 设置容器启动后默认执行的命令及其参数,但CMD设置的命令能够被docker run命令后面的命令行参数替换。多个CMD只执行最后一个。 |
ENTRYPOINT | 配置容器启动时的执行命令(不会被忽略,一定会被执行,即使运行 docker run时指定了其他命令) |
ADD | 添加文件,支持url,解压缩。加强版的copy |
COPY | 添加本地文件,但构建出的镜像比ADD构建出来的小 |
EXPOSE | 暴露端口 |
WORKDIR | 指定容器登录后的默认路径 |
ENV | 设定环境变量 |
VOLUME | 创建一个具有指定名称的挂载点,并将其标记为保存来自本机主机或其他容器的外部挂载卷 |
USER | 指定运行镜像时的用户或者组 |
MAINTAINER | 声明作者名字和邮箱地址 |
Dockerfile编写的案例1:
案例2:
编写Dockerfile完成后。通过dockerfile来构建镜像
docker build [OPTIONS] PATH | URL | 构建镜像
option常用参数:
-f :指定要使用的Dockerfile路径
-t: 镜像的名字及标签,通常 name:tag 或者 name 格式
-q :安静模式,成功后只输出镜像 ID
方式一:使用当前目录的 Dockerfile 创建镜像,标签为 wxy/ubuntu:v1
docker build -t wxy/ubuntu:v1 . 注意最后有个点
方式二:使用/etc/docker/Dockerfile文件来创建镜像,标签wxy/ubuntu:v1
docker build -f /etc/docker/Dockerfile -t wxy/ubuntu:v1 .
方式三:使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像
docker build github.com/creack/docker-firefox -t wxy/ubuntu:v1
先通过docker images 查看镜像是否存在 。再运行容器测试自己的镜像是否可用。
4.从容器创建一个新的镜像
使用场景:在运行的容器中,并在镜像的基础上做了一些修改,我们希望保存起来,封装成一个新的镜像,方便我们以后使用,也就是提交容器副本,使之成为一个新的镜像。
将容器打包成新的镜像
docker commit -a "作者" -m "简要说明" 容器ID 想要打包成的镜像名称:版本号
如需把容器提交到阿里云仓库请参考这篇链接: