【linux】在vmware的CentOS7上安装测试docker、学习Dockerfile命令、阿里云服务器测试
从虚拟机vmware安装CentOS7系统,安装docker,测试docker。
文章目录
在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系统:
可以在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多个命令时,考虑使用&& 连接,而不是用多行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执行脚本
附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
- 阿里云教程: 在Dockerfile中使用构建打包镜像并运行
用了两个试用产品(个人认证):
部署并使用Docker
云服务器 部署并使用Docker
-
立即试用
-
设置规格
注意: 设置规格中的到期释放设置
时,如果考虑到期不再试用,最好设置为现在设置。...自动释放实例
。否则到期可能产生费用。 -
设置完成规格并同意协议后,实例创建成功后,会有短信通知。
-
查看实例
云服务器ECS > 实例与镜像 > 实例 > 状态: 运行中
-
重置密码
点击实例名称,进入实例详情 > 重置实例密码
-
测试远程连接
- 点击
远程连接
登录实例
- 登录输入密码(上一步中设置的密码)
- 登录成功后显示:
- 点击
后续部署Docker按教程:部署并使用Docker
在Dockerfile中使用构建打包镜像并运行
-
镜像容器个人实例 Registry登录密码设置:
-
创建Dockerfile
使用教程中gitlab的Dockerfile:
把该Dockerfile复制到自己的仓库下,fork仓库:
-
绑定源代码仓库
录容器镜像服务控制台 > 个人版实例 > 仓库管理>代码源。根据提示进行绑定。
-
添加规则
进入个人实例 > 点击实例名称 > 构建 > 添加规则:
-
立即构建
添加规则完成后,构建规则设置
下方会新增一条构建的规则,点击操作列的立即构建
。下方构建日志中增加一条构建信息。
-
远程连接
等待构建完成后,在
云服务器ECS
进行远程连接
(前面云服务器部署也测试了远程连接)。
-
登录后配置
教程中提示按照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: 初始版本
更多推荐
所有评论(0)