Docker

1. 检查系统是否符合安装条件

  1. 查看系统内核
    uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。
    uname -r
    在这里插入图片描述
  2. 查看系统版本
    cat /etc/redhat-release
    在这里插入图片描述
  3. 使用yum安装
    Docker分为ce(社区版:免费)和ee(企业版)

1)yum install -y yum-utils
2) yum-config-manager
–add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
这个命令是一行执行的。

3)yum install -y docker-ce

4)启动docker服务
systemctl start docker

5)查看版本 docker version

  1. 遇到问题及解决方案
2.4.3 安装docker出现的问题

问题1:
不能启动docker 服务
修改 /etc/sysconfig/docker文件
原来:
OPTIONS='--selinux-enabled --log-driver=journald 
--signature-verification=false'

改为: 
OPTIONS='--selinux-enabled=false --log-driver=journald 
--signature-verification=false'

修改的是这部分内容:  --selinux-enabled=false 

保存文件,再启动docker 服务
systemctl start docker  启动服务(不是开机自启)
systemctl enable docker 开启启动服务

问题2:
tarting container process caused "process_linux.go:259: applying cgroup configuration for process caused \"Cannot set property TasksAccounting, or unknown property.\""

解决
停止docker 服务 systemctl stop docker
更新  yum  update systemd
重启服务  systemctl start docker 

2. 启动docker

systemctl start docker
systemctl enable docker 开机自启

3. 设置远程仓库镜像

在/etc/docker/ 目录创建文件daemon.json
写入:
{
“registry-mirrors”: [
“https://docker.m.daocloud.io”,
“https://dockerproxy.com”,
“https://docker.mirrors.ustc.edu.cn”,
“https://docker.nju.edu.cn”
]
}

重启docker服务,镜像仓库才能生效
systemctl stop docker
systemctl start docker

4 测试运行hello-world

docker run hello-world
在这里插入图片描述

5. 卸载docker

systemctl stop docker
yum -y remove docker
rm -rf /var/lib/docker

6. 镜像命令

  1. docker images -[options]列出本机上的镜像
    在这里插入图片描述

REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像

  • docker images -[options]的说明
-a 列表本地的所有镜像及子镜像
-q 只显示镜像ID
--digests 显示镜像的摘要信息
--no-trunc 显示完整的镜像信息
  1. 镜像搜索命令
    搜索网站:https://hub.docker.com
    语法
    docker search 镜像名称
    在这里插入图片描述
    NAME: 镜像仓库源的名称
    DESCRIPTION: 镜像的描述
    OFFICIAL: 是否 docker 官方发布
    stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
    AUTOMATED: 自动构建。

  2. 镜像下载命令
    语法
    docker pull 镜像名称[:TAG]
    例如:docker pull tomcat:8.5 下载8.5的镜像版本
    dokcer pull tomcat 默认下载最新的tomcat镜像版本 【latest】

tag:版本
4. docker rmi 镜像删除命令

删除单个 docker rmi -f 镜像ID
删除多个 docker rmi -f 镜像ID1 镜像ID2
docker rmi -f 镜像名:[tag] 镜像名:[tag]
删除全部
docker rmi -f $(docker images -qa)

6 创建并启动容器

  • 语法
    docker run [options] 镜像名:tag/镜像id [命令or 参数]
  • options说明
    有些是一个减号,有些是两个减号
    –name=“容器新名字”: 为容器指定一个名称;
    -d: 后台运行容器,并返回容器ID,也即启动守护式容器;
    -i:以交互模式运行容器,通常与 -t 同时使用;
    -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    -P: 随机端口映射;
    -p: 指定端口映射
  1. 交互式运行(hostPort:containerPort )
    docker run --name tom1 -d -p 8081:8080 tomcat
    交互式运行tomcat,进入tomcat容器,首先执行/bin/bash命令
    docker run --name mytomcat -it -p 8081:8080 tomcat /bin/bash
    在这里插入图片描述
    交互模式下,不能加-d参数。
    执行exit会退出shell,关闭容器,如果不关闭容器,交互模式,使用docker exec命令。

  2. 列出当前所有正在运行的容器
    语法:docker ps [options]

options可选:
-a 列出所有运行和未运行的容器
-q 列出所有运行中容器的ID
-aq 列出所有运行和未运行的容器的ID
4.2.5 退出容器
exit:停止容器并退出
4.2.6 进入正在运行的容器并以命令行交互
docker exec -it 容器ID bash 重新开启一个终端进入容器

  1. 启动停止重启容器
    docker start|stop|restart 容器ID或容器名

  2. 删除容器
    docker rm [options] 容器ID|容器名称 容器ID|容器名称 容器ID|容器名称
    options选项:
    -f 强制删除正在运行的容器或没有运行的容器
    docker rm -f $(docker ps -aq) 删除所有运行和未运行的容器

  3. 查看容器日志
    语法:
    docker logs 容器ID|名称
    例如:
    docker logs tomcat

  4. 查询容器内部细节
    docker inspect 容器ID|容器名称
    显示了容器里面所有内部细节
    例如:
    docker inspect tomcat

  5. 拷贝文件:容器 -> 主机
    docker cp 容器ID(名称):容器内文件或文件夹路径 宿主机的路径

  6. 拷贝文件:主机 -> 容器
    docker cp 宿主机的路径 容器ID(容器名称):容器内文件或文件夹路径
    以tomcat为例
    先运行一个tomcat容器,tomcat1是容器名称,访问端口8082
    1)创建 /root/res目录
    2)上传windows中tomcat的ROOT 和 docs目录
    3)docker cp /root/res/ROOT/ 3169a1eddfd2:/usr/local/tomcat/webapps
    4)docker exec -it tomcat1 bash 查看文件
    5)http://192.168.110.128:8082/,浏览器访问,使用自己的ip和端口

7 docker命令总结

镜像的命令
docker pull  镜像的名字:版本  -------拉取镜像
docker images                 --------查看本地的所有镜像
docker rmi  镜像名字:版本     -------- 删除镜像

通用命令
docker version  --- 查看docker版本
docker help      --- docker帮助文档

容器的命令 【重点】
docker run         -- 运行容器 
          --name    -- 起一个名字 (每个容器的名字都是唯一的)
          -p            -- 端口映射
          -v            -- 文件挂载   可以将容器内部的文件 挂载到宿主机上
          -it           -- 交互式运行 
          -e           -- 指定环境变量
          -d            -- 后台运行
          进项的名称:版本号 
docker ps  -- 查看正在运行的容器   
docker ps -a  -- 查看所有的容器
docker rm -f  容器的名字或者是ID --- 删除容器 
docker exec -it 容器的名称  bash     -- 进入容器内部  
docker cp 容器的名字:/路径   宿主机的路径名字     -- 拷贝
docker start | stop | restart 
docker logs 容器名称  --- 查看日志

其他命令:linux文件查找命令
find / -name 文件名称    -----linux的命令 查找文件的位置

8 数据卷

  1. 添加数据卷
    语法
    在docker run 命令中指定 -v 表示数据卷
    docker run [options] -v /宿主机目录:/容器内目录 镜像名称 [其他参数]
    ②查看容器卷是否挂载成功
    docker inspect 容器ID
  2. MySQL 挂载数据卷实现数据持久化
    运行:docker run --name mysql1 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 --privileged=true -d mysql:8.0.37

挂载数据卷运行:docker run --name mysql1 -p 3309:3306 -e MYSQL_ROOT_PASSWORD=123456 -d --privileged=true -v /opt/mydb/:/var/lib/mysql/ -d mysql:8.0.37
在这里插入图片描述

在这里插入图片描述

9 Dockerfile

Dockerfile是用来构建Docker镜像的构建文件,是由一系列的命令和参数构成的脚本。

  1. Dockefile编写要求
    1,每条保留字指令必须为大写字母,其后面要跟随至少一个参数
    2,指令从上到下顺序执行
    3,#表示注释
  2. Dockerfile内容
    FROM 基础镜像,当前新镜像是基于哪个镜像的
    MAINTAINER 镜像维护者的姓名和邮箱地址
    RUN 容器构建时需要运行的命令
    EXPOSE 当前容器对外暴露的端口[只是提示作用,]
    WORKDIR 指定容器内的一个目录,容器启动时执行的命令会在此目录下执行
    ENV 用来在构建镜像过程中设置环境变量
    ADD 将宿主机目录下的文件拷贝进镜像并且ADD命令会自动处理URL和解压tar包
    COPY 类似ADD,拷贝文件和目录到镜像中 ,语法COPY src dest COPY [''src",“dest”]
    VOLUME 容器数据卷,用于数据保存和持久化工作
    CMD 指定一个容器启动时要运行的命令格式CMD [‘ls’] run -it cenos -lh
    shell: CMD <命令>
    exec CMD [‘可执行文件’,“参数1”,“参数2”]
    DockerFile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
    ENTEYPONT 指定一个容器启动时要运行的命令 ENTEYPORT [‘ls’] , ENTRYPOINT的目地和CMD一样,都是在指定容器启动程序及参数
    OBBUILD 当构建一个被继承的Dockerfile时运行命令,父镜像在被子镜像继承后触发父镜像的onbuild
    USER:指定运行容器时的用户名或 UID,当容器中运行的服务不需要管理员权限时,可以先建立一个特定的用户和用户组,为它分配必要的权限,使用 USER 切换到这个用户

CMD与ENTRYPOINT区别
cmd给出的是一个容器的默认的可执行体。也就是容器启动以后,默认的执行的命令。其执行条件:
(1)docker run没有指定任何的执行命令或者(2)dockerfile里面也没有entrypoint
才会使用CMD内命令执行。entrypoint才是正统地用于定义容器启动以后的执行体的,其实我们从名字也可以理解,这个是容器的“入口”

  1. 使用docker build构建镜像
    docker中的build命令用于根据给定的Dockerfile和上下文以构建Docker镜像。
    命令:docker build [options] PATH|URL
  • 常用OPTIONS选项
    –build-arg,设置构建时的环境变量
    –no-cache,默认false。设置该选项,将不使用Build Cache构建镜像
    –pull,默认false。设置该选项,总是尝试pull镜像的最新版本
    –compress,默认false。设置该选项,将使用gzip压缩构建的上下文
    –file, -f,Dockerfile的完整路径,默认值为‘PATH/Dockerfile’
    –label,为生成的镜像设置metadata
    –tag, -t,镜像的名字及tag,通常name:tag或者name格式;可以在一次构建中为一个镜像设置多个tag
    –network,默认default。设置该选项,Set the networking mode for the RUN instructions during build

  • PATH | URL
    给出命令执行的上下文(位于指定 PATH 或 URL 中的一组文件)。上下文可以是构建执行所在的本地路径PATH,也可以是远程URL,如Git库、文本文件等。在 dockerfile 中写的文件路径都会以这个上下文开始找。

  1. 自定义镜像
    构建镜像的构建步骤
    1.编写Dokcerfile文件
    2.docker build 生成新的镜像
    3.docker run 运行镜像
  • 准备镜像资源 - jar包
  • 创建Dockerfile
#从jdk开始创建新镜像
FROM openjdk:17
#定义环境变量
ENV appdir /mywork
#运行创建目录的命令
RUN mkdir ${appdir}
#设置工作目录,在这个目录中执行后面的命令
WORKDIR ${appdir}
#拷贝文件
COPY ./myapp.jar ${appdir}/sky.jar
#用于提示说明,无实际意义,端口号是在jar中设置好的
EXPOSE 8001
#运行启动要执行的命令, java -jar sky.jar
CMD ["java","-jar","sky.jar"]

  • 目录结构:
    在这里插入图片描述

  • 上传jar包和Dockerfile
    linux创建一个工作目录:/root/mywork
    上传docker目录下的Dockerfile和myapp.jar到 /root/mywork目录。

  • 创建镜像docker build
    执行构建命令:
    docker build -t myweb:1.0 /root/mywork

  • 查看镜像 docker images

  • 运行容器
    docker run --name myweb -p 8081:8000 -d myweb:1.0

  • 查看日志
    docker logs myweb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值