在vmware的CentOS7上安装docker并学习测试

写在前面

从虚拟机vmware安装CentOS7系统,安装docker,测试docker。

先下载安装好vmware(网上有很多教程)。一开始vmware用的CentOS6,发现安装不了docker,docker需要CenOS7及以上,又下载了CentOS7。

安装docker


【1】下载CentOS7镜像

http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso

在vmware上安装CentOS7主要参考这篇文章,非常详细,并且介绍了如何配置用自己电脑上的Xshell连接虚拟机。

【2】CentOS7安装docker

参考:https://blog.csdn.net/qq_44074697/article/details/118569644
官网:https://docs.docker.com/engine/install/centos
菜鸟教程:https://www.runoob.com/docker/centos-docker-install.html

① 安装前确认:(删除旧版docker)

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

② 安装docker:

# 安装docker 依赖
sudo yum install -y yum-utils
# 设定安装docker来源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io

③ 安装完成测试:

# 查看docker版本
docker -v
# 启动docker服务 (没有返回任何信息)
sudo systemctl start docker
# 运行镜像测试是否安装正确
sudo docker run hello-world

④ docker镜像加速配置:

文件 /etc/docker/daemon.json 中加入信息 {“registry-mirrors”:[“https://reg-mirror.qiniu.com/”]}

vi /etc/docker/daemon.json  # {"registry-mirrors":["https://reg-mirror.qiniu.com/"]}

重启docker服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

【3】docker的基本使用

参考:菜鸟教程

# 查看在运行的容器:
docker ps
# 查看所有的容器(包括已停止的容器)
docker ps -a

# 查看容器内的标准输出:
docker logs <容器ID>
# 停止容器
docker stop <容器ID>
# 启动一个已停止的容器
docker start <容器ID>
# 删除容器
docker rm -f <容器ID>

# 列出镜像 
docker images

Docker安装Ubuntu

【4】Docker 安装 Ubuntu

跟菜鸟教程学Docker安装Linux系统:

Docker安装CenOS

可以在ubuntu镜像中直接复制镜像拉取的命令(默认最新版镜像,其他版本可在"Tags"-"Sort by"下方选择)。
在这里插入图片描述

- docker pull/run
# 拉取最新"latest"的Ubuntu镜像
docker pull ubuntu:latest
# 查看镜像
docker images
# 运行刚拉取的镜像
docker run -itd --name ubuntu-test ubuntu
#   -i: 交互模式运行容器, 常与-t同时使用
#   -t: 终端,常与-i同时使用
#   -d:后台运行容器,并返回容器ID(加了-d参数默认不会进入容器)
#   --name: 命名运行容器的名称(docker ps的`NAMES`列)

# 查看运行的镜像
docker ps
# 通过`exec`命令,进入ubuntu容器
docker exec -it ubuntu-test /bin/bash
# 此时已经进入容器,输入`exit`退出容器

在这里插入图片描述

- docker images/ps

在这里插入图片描述

docker images各列说明
REPOSITORY镜像仓库来源
TAG镜像标签,表示不同的版本
IMAGE ID镜像的ID
CREATED镜像最后的更新时间
SIZE镜像的内存大小

在这里插入图片描述

docker ps说明
CONTAINER ID容器ID
IMAGE使用的镜像
COMMAND启动容器运行的命令 ,示例:“bash”
CREATED容器的创建时间
STATUS容器状态,示例:Up运行中
PORTS容器的端口信息和使用的连接类型(tcp\udp)
NAMES分配的容器名称

其中,容器的运行状态STATUS有7种:

状态说明
created已创建
restarting重启中
running 或 Up运行中
removing迁移中
paused暂停
exited停止
dead死亡

通过docker exce命令进入容器后,使用exit退出容器,但是容器还在运行(docker ps看),用docker stop命令停止容器。

# 用stop命令停止一个容器
docker stop ${容器ID}
# 如果想再次重启,用restart命令
docker restart ${容器ID}

在这里插入图片描述

进入容器还可以使用docker attach命令,但是在exit退出时,容器也同时终止。

docker attach ${容器ID}

在这里插入图片描述

【5】非root用户使用docker

非root用户,eg: usertst 使用docker:

# 使用usertst执行:发现非root不能运行docker
sudo systemctl start docker
# 报出:usertst 不在 sudoers 文件中。此事将被报告。

查找官方文档:以非 root 用户身份管理 Docker

下截图来自google浏览器翻译后:
在这里插入图片描述

Dockerfile

【6】Dockerfile创建命令

官方文档:https://docs.docker.com/engine/reference/builder/
菜鸟教程:https://www.runoob.com/docker/docker-dockerfile.html

Dockerfile的格式:

# Comment
INSTRUCTION arguments
命令说明命令形式
FROM定制的镜像基于FROM的镜像3种形式: FROM [--platform=<platform>] <image> [AS <name>]FROM [--platform=<platform>] <image>[:<tag>] [AS <name>]FROM [--platform=<platform>] <image>[@<digest>] [AS <name>]
RUN执行后面跟着的命令行,两种格式: shell格式和exec格式;RUN多个命令时,考虑使用&&连接,而不是用多行RUNRUN <命令> 或者 RUN ["可执行命令", "参数1", "参数2"],eg: RUN mkdir -p ~/tst && echo “hello”
COPY复制文件或目录COPY [--chown=<user>:<group>] <src>... <dest>COPY [--chown=<user>:<group>] ["<src>",... "<dest>"] (若路径中有空格用后者)
ADD复制新文件、目录或远程文件 URL,和COPY格式类似,ADD优缺点(优先用COPY)ADD [--chown=<user>:<group>] <src>... <dest>ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]
CMD运行程序,类似RUN。CMD 在docker run时运行;RUN 是在 docker build三种格式,CMD ["executable","param1","param2"](执行形式,这是首选形式) ,CMD command param1 param2(shell形式)
ENTRYPOINT类似CMD,但不会被docker run执行,可搭配CMD命令使用?ENTRYPOINT ["<executeable>","<param1>","<param2>",...]
ENV设置环境变量ENV <key> <value>ENV <key1>=<value1> <key2>=<value2>...
ARG构建参数, 对 Dockerfile 内有效,容器内不起作用ARG <参数名>[=<默认值>]
MAINTAINER镜像维护者信息弃用,建议用LABEL
VOLUME定义匿名数据卷,避免重要的数据、容器不断变大VOLUME ["<路径1>", "<路径2>"...]VOLUME <路径>
EXPOSE声明端口EXPOSE <端口1> [<端口2>...]
WORKDIR指定工作目录WORKDIR <工作目录路径>
USER指定后续执行的用户和用户组USER <用户名>[:<用户组>]
HEALTHCHECH指定某个程序或者指令来监控 docker 容器服务的运行状态HEALTHCHECK [选项] CMD <命令>
ONBUILD延迟构建命令的执,镜像引用(FROM)时执行ONBUILD <其它指令>
LABEL给镜像添加一些元数据LABEL <key>=<value> <key>=<value> <key>=<value> ...

【7】Docker安装python

菜鸟教程Docker安装python中,直接pull 或 创建Dockerfile安装python。

# 方式1:直接pull
docker pull python:3.5
# 方式2:构建Dockerfile后(见菜鸟教程),在所在目录直接执行:
docker build -t python:3.5 .

# 使用python镜像
docker run -v /mydir/python:/usr/scr/myapp -w /usr/scr/myapp python:3.5 python helloworld.py
## -v: 把本地目录(/mydir/python)挂载到容器(/usr/scr/myapp);
## -w: 指定容器中工作目录
## python helloworld.py 使用容器python执行脚本

附Liunx CenOS重启、关机命令:(参考:centos关机与重启命令详解

# Linux centos重启命令:
reboot  # 重启
shutdown -r now # 立刻重启(root)
shutdown -r 5 # 5分钟后自动重启(root)
shutdown -r hh:mm # 在hh时mm分重启(root)

# Linux centos关机命令:
halt # 立刻关机
poweroff # 立刻关机
shutdown -h now # 立刻关机(root)
shutdown -h 10 # 10分钟后自动关机(root)
# 通过shutdown命令设置重启、关机,可用shutdown -c命令取消重启/关机

跟着阿里云教程学习

主要根据阿里云教程,教程很详细:

用了两个试用产品(个人认证):

部署并使用Docker

云服务器 部署并使用Docker

  1. 立即试用
    在这里插入图片描述

  2. 设置规格
    在这里插入图片描述
    在这里插入图片描述
    注意: 设置规格中的到期释放设置时,如果考虑到期不再试用,最好设置为现在设置。...自动释放实例。否则到期可能产生费用。

  3. 设置完成规格并同意协议后,实例创建成功后,会有短信通知。

  4. 查看实例

    云服务器ECS > 实例与镜像 > 实例 > 状态: 运行中
    在这里插入图片描述

  5. 重置密码

    点击实例名称,进入实例详情 > 重置实例密码
    在这里插入图片描述

  6. 测试远程连接

    • 点击远程连接登录实例
      在这里插入图片描述
    • 登录输入密码(上一步中设置的密码)
      在这里插入图片描述
    • 登录成功后显示:
      在这里插入图片描述

后续部署Docker按教程:部署并使用Docker
在这里插入图片描述

在Dockerfile中使用构建打包镜像并运行

教程: 在Dockerfile中使用构建打包镜像并运行

  1. 镜像容器个人实例 Registry登录密码设置:
    在这里插入图片描述

  2. 创建Dockerfile
    使用教程中gitlab的Dockerfile
    在这里插入图片描述
    把该Dockerfile复制到自己的仓库下,fork仓库:
    在这里插入图片描述

  3. 绑定源代码仓库
    录容器镜像服务控制台 > 个人版实例 > 仓库管理>代码源。根据提示进行绑定。
    在这里插入图片描述

  4. 添加规则
    进入个人实例 > 点击实例名称 > 构建 > 添加规则:
    在这里插入图片描述

  5. 立即构建
    添加规则完成后,构建规则设置下方会新增一条构建的规则,点击操作列的立即构建。下方构建日志中增加一条构建信息。
    在这里插入图片描述

  6. 远程连接

    等待构建完成后,在云服务器ECS进行远程连接(前面云服务器部署也测试了远程连接)。
    在这里插入图片描述

  7. 登录后配置

    教程中提示按照docker,但是云服务器应该已经按照了,所以会报错。

    # 安装docker 
    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    

    在这里插入图片描述
    在Docker中配置镜像加速器:
    在这里插入图片描述
    复制加速器地址并执行配置命令

    mkdir -p /etc/docker #创建配置文件目录。
    tee /etc/docker/daemon.json <<-'EOF' #写入加速配置。
    {
      "registry-mirrors": ["https://加速器地址.mirror.aliyuncs.com"]
    }
    EOF
    systemctl daemon-reload #重新加载配置文件。
    systemctl restart docker #重启Docker服务。
    

    在docker中运行镜像:

    # 登录Docker Registry (回车后输入之前构建时设置的密码)
    docker login --username=用户名 registry.区域.aliyuncs.com
    
    # 拉取镜像: (github上的仓库名是 "docker_test")
    docker pull registry.区域.aliyuncs.com/test23928/test:V1.0.0
    
    # 运行镜像:
    docker run -ti registry.区域.aliyuncs.com/命名空间/test:V1.0.0
    Hello World!
    

    镜像仓库的基本信息下方也有一些操作示例:

    在这里插入图片描述


日志:

  • 2023.09.29: 增加阿里云服务器和镜像测试
  • 2022.08.08: 修改文章格式
  • 2022.06.21: 初始版本
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐