信息查看
#启动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
评论区