侧边栏壁纸
博主头像
贯耳症博主等级

瓜虫冬匕ing……

  • 累计撰写 64 篇文章
  • 累计创建 48 个标签
  • 累计收到 403 条评论

目 录CONTENT

文章目录

Docker 常用命令

贯耳症
2022-11-17 / 0 评论 / 1 点赞 / 1,323 阅读 / 1,424 字

信息查看

#启动docker服务
systemctl start docker
#查看docker服务状态
systemctl status docker
#查看docker版本
docker version
#查看docker容器信息
docker info
#查看docker容器帮助
docker --help

镜像管理

# 查看本地所有镜像
docker images
# 搜索镜像
docker search Oracle
# 下载镜像
docker pull redis
# 删除镜像 -f 强制删除
docker rmi redis

容器管理

运行容器


docker run -d --name=redis redis:latest
  • run:代表启动容器
  • -d:以后台方式运行
  • –name:指定一个容器的名字,此后操作都需要使用这个名字来定位容器。
  • redis:latest:容器所使用的镜像名字
  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
  • -v: 绑定一个卷
  • –expose=[]: 开放一个端口或一组端口
  • -e username="ritchie": 设置环境变量;
# 启动容器
docker start redis
# 重启容器
docker restart redis
# 查看正在运行的容器
docker ps
# 查看正在运行+历史运行过的容器
docker ps -a
#停止一个运行中的容器
docker stop redis
#杀掉一个运行中的容器
docker kill redis
#删除一个已停止的容器
docker rm redis
#删除一个运行中的容器
docker rm -f redis
# -v 删除容器,并删除容器挂载的数据卷
docker rm -v redis

容器交互

#使用run方式在创建时进入容器
docker run -it redis /bin/bash
#使用交互模式进入容器
docker exec -it redis /bin/bash
#关闭容器并退出
exit
#将Redis容器中的文件copy至本地路径
docker cp Redis:/${container_path} ${local_path}
#将主机文件copy至Redis容器
docker cp ${local_path} Redis:/${container_path}/
#查看redis容器日志
docker logs Redis
#查看容器redis从2021年09月15日后的最新2条日志
docker logs --since="2021-09-15" --tail=2 redis
#查看redis最新容器日志
docker logs -f -t --tail=2 redis

镜像制作

Docker 的文件系统是 Union FS(联合文件系统),是一种分层架构,优点是同时存在多个容器时,如果它们的基础镜像相同,那么只会占用一份存储空间。

制作自己的镜像时,需要用到 commit 命令,和 Git 的操作有些相似。每 commit 一次,就会生成一层新的镜像,一层层叠加成最终的镜像文件。

制作镜像有两种方式,一是使用 commit 命令,如果要做的镜像较为简单,可以采用这种方式。二是使用 DockerFile 配置文件,这种方式更为常用,后期修改起来也较为方便。

# 拉取镜像
docker pull java
# 创建容器 -name 指定容器名
docker run -dit –name=java_test -v /root:/root java
# 在容器中做自己的个性化配置……
# 本地提交镜像  -a 作者名字  -m 备注
docker commit -a “lgq” -m “test commit” c1abdc177915 xinaml/myjava:v1.0

DockerFile 配置文件则稍微复杂,需要记忆一些常用的指令,且必须是大写。

常用指令

RUN

执行命令行上的命令。

RUN的格式分为两种,第一种 Shell 命令 RUN<命令>,第二种 exec 格式 RUN ["可执行文件", "参数1", "参数2"]

RUN一次就代表Dockerfile中的一层。而docker镜像的构建就是不断去完善每一层需要做的事情。而 dockerfile 中层数是有限制的,最大不超过127层。因此,RUN提供命令的串联功能,也就是允许每一层可包含多种操作,他们会按照书写顺序来依次执行。

RUN buildDeps='gcc libc6-dev make' \
    && apt-get update \

LABEL

为镜像添加标签。

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

一个 Dockerfile 可以有多个 LABEL,LABEL 会继承基础镜像的 LABEL,如遇到 key 相同,则值覆盖。

COPY

将宿主机文件拷贝至镜像内的指定路径。

COPY <源路径> <目标路径>
# 多个源路径,一个目标路径
COPY ["<源路径1>",... "<目标路径>"]

1、可以使用符合GO规范的通配符,例如:COPY hom* /mydir/
2、目的路径可以是镜像内的绝对路径,也可以是相对于当前工作目录的相对路径。
3、COPY过来的文件权限与原始权限相同。如需更改,请用传统Liunx的chmod命令进行修改即可。

其他指令

指令 说明
FROM 整个Dockerfile的入口,必须是第一条指令。其代表新制作镜像的基础镜像。
MAINTAINER 指定作者。
WORKDIR 指定 Dockerfile 中该指令下面的操作所在的工作目录。
ADD 和 COPY 作用类似,但功能更强大,可以自动解压压缩包到目标目录,源文件还可以是一个链接。
CMD 类似 RUN 命令,不过 RUN 命令是在构建过程中用的,CMD 命令是在容器运行后触发的,且只有最后一个 CMD 命令会生效。
ENV 设置环境变量,下文可通过 $ 取值。
VOLUME 挂载共享卷。
USER 指定用户。
EXPOSE 暴露端口。

最后通过 docker build -t 镜像名:版本 Dockerfile所在目录构建新的镜像即可。

推送至 DockerHub

# 登录 Docker Hub 账号
docker login
# 打标签
docker tag nusic-server:1.0.0 godbobo/nusic-server:1.0.0
# 推送镜像
docker push godbobo/nusic-server:1.0.0
1

评论区