美文网首页
linux安装Docker

linux安装Docker

作者: 凯凯丶凯凯 | 来源:发表于2022-09-20 14:35 被阅读0次

一、安装docker

  1. 确定是CentOS7及以上版本
cat /etc/redhat-release
  1. 卸载旧版本
    https://docs.docker.com/engine/install/centos/
    yum安装gcc相关
yum -y install gcc
yum -y install gcc-c++
  1. 安装需要的软件包
yum install -y yum-utils
  1. 设置stable镜像仓库
  • 官网要求(不推荐)
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 阿里云(推荐)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 更新yum软件包索引
yum makecache fast
  1. 安装DOCKER CE
yum -y install docker-ce docker-ce-cli containerd.io
  1. 启动docker
systemctl start docker
  1. 测试
docker version
docker run hello-world
  1. 卸载
systemctl stop docker 
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

二、docker镜像相关命令

  • 启动docker
systemctl start docker
  • 停止docker
systemctl stop docker
  • 重启docker
systemctl restart docker
  • 查看docker状态
systemctl status docker
  • 开机启动
systemctl enable docker
  • 查看docker概要信息
docker info
  • 查看docker总体帮助文档
docker --help
  • 查看docker命令帮助文档
docker 具体命令 --help
  • 列出本地主机上的镜像
docker images

选项说明

选项 功能
-a 列出本地所有的镜像(含历史映像层)
-q 只显示镜像ID
  • 在仓库中查询某个镜像
docker search [OPTIONS] 镜像名字

选项说明

选项 功能
--limit 只列出N个镜像,默认25个
  • 下载镜像(没有TAG就是最新版)
docker pull 镜像名字[:TAG]
  • 查看镜像/容器/数据卷所占的空间
docker system df
  • 删除镜像
docker rmi  -f  镜像/ID

三、docker容器相关命令

  • 新建+启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

选项说明

选项 功能
--name="容器新名字" 为容器指定一个名称
-d 后台运行容器并返回容器ID,也即启动守护式容器(后台运行)
-i 以交互模式运行容器,通常与 -t 同时使用
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-P 随机端口映射,大写P
-p 指定端口映射,小写p
-v 宿主机路径与容器内路径映射
  • 退出容器
    run进去容器,exit退出,容器停止:
exit

run进去容器,ctrl+p+q退出,容器不停止:

ctrl + p + q
  • 启动已停止运行的容器
docker start 容器ID或者容器名
  • 重启容器
docker restart 容器ID/容器名
  • 停止容器
docker stop 容器ID/容器名
  • 强制停止容器
docker kill 容器ID/容器名
  • 删除已停止的容器
  • 一次性删除多个容器实例
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
  • 查看容器日志
docker logs 容器ID
  • 查看容器内运行的进程
docker top 容器ID
  • 查看容器内部细节
docker inspect 容器ID
  • 进入正在运行的容器并以命令行交互
docker exec -it 容器ID bash

是在容器中打开新的终端,并且可以启动新的进程用exit退出,不会导致容器的停止。

docker attach 容器ID

直接进入容器启动命令的终端,不会启动新的进程用exit退出,会导致容器的停止。

  • 从容器内拷贝文件到主机上
docker cp  容器ID:容器内路径 目的主机路径
  • 导出容器
docker export 容器ID > 文件名.tar

导出容器的内容留作为一个tar归档文件[对应import命令]

  • 导入容器
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号

从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]

四、docker常用命令

  • 提交容器副本使之成为一个新的镜像
docker commit [OPTIONS] 容器ID [REPOSITORY[:TAG]]
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

五、DockerFile解析

Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。

  1. 编写Dockerfile文件

案例(创建一个微服务镜像)

FROM openjdk:8
# 作者
MAINTAINER debei
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为traffic-sso-eureka-1.0-SNAPSHOT.jar
ADD traffic-sso-eureka-1.0-SNAPSHOT.jar traffic-sso-eureka-1.0-SNAPSHOT.jar
# 运行jar包
RUN bash -c 'touch /traffic-sso-eureka-1.0-SNAPSHOT.jar'
ENTRYPOINT ["java","-jar","/traffic-sso-eureka-1.0-SNAPSHOT.jar","--spring.config.location=/home/server/config/sso-eureka.yml"]
#暴露8080端口作为微服务
EXPOSE 8080
  1. docker build命令构建镜像
docker build -t 新镜像名字:TAG .

注意,上面TAG后面有个空格,有个点

  1. docker run依镜像运行容器实例
docker run -it 新镜像名字:TAG 
DockerFile常用保留字指令
  • FROM
    基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板,第一条必须是from
  • MAINTAINER
    镜像维护者的姓名和邮箱地址
  • RUN
    容器构建时需要运行的命令,RUN是在 docker build时运行,两种格式:shell格式、exec格式
  • EXPOSE
    当前容器对外暴露出的端口
  • WORKDIR
    指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
  • USER
    指定该镜像以什么样的用户去执行,如果都不指定,默认是root
  • ENV
    用来在构建镜像过程中设置环境变量
  • ADD
    将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包
  • COPY
    类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置
COPY src dest
COPY ["src", "dest"]
<src源路径>:源文件或者源目录
<dest目标路径>:容器内的指定路径,该路径不用事先建好,路径不存在的话,会自动创建。
  • VOLUME
    容器数据卷,用于数据保存和持久化工作
  • CMD
    指定容器启动后的要干的事情
    Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换
    和RUN命令的区别:CMD是在docker run 时运行,RUN是在 docker build时运行。
  • ENTRYPOINT
    指定一个容器启动时要运行的命令
    类似于 CMD 指令,但是ENTRYPOINT不会被docker run后面的命令覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序
    如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。
虚悬镜像

仓库名、标签都是<none>的镜像,俗称dangling image
查看

docker image ls -f dangling=true

删除所有的虚悬镜像

docker image prune

相关文章

网友评论

      本文标题:linux安装Docker

      本文链接:https://www.haomeiwen.com/subject/qygmortx.html