文章目录

  • 在vmware的CentOS7上安装docker并学习测试
  • 写在前面
  • 安装docker
  • 【1】下载CentOS7镜像
  • 【2】CentOS7安装docker
  • 【3】docker的基本使用
  • Docker安装Ubuntu
  • 【4】Docker 安装 Ubuntu
  • - docker pull/run
  • - docker images/ps
  • 【5】非root用户使用docker
  • Dockerfile
  • 【6】Dockerfile创建命令
  • 【7】Docker安装python
  • 跟着阿里云教程学习
  • 部署并使用Docker
  • 在Dockerfile中使用构建打包镜像并运行


在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://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"下方选择)。

虚拟机CentOS7安装gparted 虚拟机centos7安装docker_容器

- 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`退出容器

虚拟机CentOS7安装gparted 虚拟机centos7安装docker_Docker_02

- docker images/ps

虚拟机CentOS7安装gparted 虚拟机centos7安装docker_容器_03

docker images各列

说明

REPOSITORY

镜像仓库来源

TAG

镜像标签,表示不同的版本

IMAGE ID

镜像的ID

CREATED

镜像最后的更新时间

SIZE

镜像的内存大小

虚拟机CentOS7安装gparted 虚拟机centos7安装docker_运维_04

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}

虚拟机CentOS7安装gparted 虚拟机centos7安装docker_容器_05

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

docker attach ${容器ID}

虚拟机CentOS7安装gparted 虚拟机centos7安装docker_Docker_06

【5】非root用户使用docker

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

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

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

下截图来自google浏览器翻译后:

虚拟机CentOS7安装gparted 虚拟机centos7安装docker_Docker_07

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多个命令时,考虑使用&&连接,而不是用多行RUN

RUN <命令> 或者 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执行脚本
  • K8S之yaml模板

附Liunx CenOS重启、关机命令:

# 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. 虚拟机CentOS7安装gparted 虚拟机centos7安装docker_Docker_08

  3. 设置规格
  4. 虚拟机CentOS7安装gparted 虚拟机centos7安装docker_运维_09


  5. 虚拟机CentOS7安装gparted 虚拟机centos7安装docker_docker_10

  6. 注意: 设置规格中的到期释放设置时,如果考虑到期不再试用,最好设置为现在设置。...自动释放实例。否则到期可能产生费用。
  7. 设置完成规格并同意协议后,实例创建成功后,会有短信通知。
  1. 查看实例
    云服务器ECS > 实例与镜像 > 实例 > 状态: 运行中
  2. 虚拟机CentOS7安装gparted 虚拟机centos7安装docker_docker_11

  3. 重置密码
    点击实例名称,进入实例详情 > 重置实例密码
  4. 虚拟机CentOS7安装gparted 虚拟机centos7安装docker_容器_12

  5. 测试远程连接
  • 点击远程连接登录实例
  • 登录输入密码(上一步中设置的密码)
  • 登录成功后显示:

后续部署Docker按教程:部署并使用Docker

虚拟机CentOS7安装gparted 虚拟机centos7安装docker_运维_13

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

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

  1. 镜像容器个人实例 Registry登录密码设置:
  2. 虚拟机CentOS7安装gparted 虚拟机centos7安装docker_docker_14

  3. 创建Dockerfile
    使用教程中gitlab的Dockerfile:
  4. 虚拟机CentOS7安装gparted 虚拟机centos7安装docker_Docker_15

  5. 把该Dockerfile复制到自己的仓库下,fork仓库:
  6. 虚拟机CentOS7安装gparted 虚拟机centos7安装docker_docker_16

  7. 绑定源代码仓库
    录容器镜像服务控制台 > 个人版实例 > 仓库管理>代码源。根据提示进行绑定。
  8. 虚拟机CentOS7安装gparted 虚拟机centos7安装docker_容器_17

  9. 添加规则
    进入个人实例 > 点击实例名称 > 构建 > 添加规则:
  10. 虚拟机CentOS7安装gparted 虚拟机centos7安装docker_Docker_18

  11. 立即构建
    添加规则完成后,构建规则设置下方会新增一条构建的规则,点击操作列的立即构建。下方构建日志中增加一条构建信息。
  12. 虚拟机CentOS7安装gparted 虚拟机centos7安装docker_Docker_19

  13. 远程连接
    等待构建完成后,在云服务器ECS进行远程连接(前面云服务器部署也测试了远程连接)。
  14. 虚拟机CentOS7安装gparted 虚拟机centos7安装docker_Docker_20

  15. 登录后配置
    教程中提示按照docker,但是云服务器应该已经按照了,所以会报错。
# 安装docker 
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

虚拟机CentOS7安装gparted 虚拟机centos7安装docker_docker_21


在Docker中配置镜像加速器:

虚拟机CentOS7安装gparted 虚拟机centos7安装docker_Docker_22


复制加速器地址并执行配置命令

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!

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

虚拟机CentOS7安装gparted 虚拟机centos7安装docker_容器_23


日志:

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