centos练习docker<基础>

这半喇月发生了很多事,很无谓很闹心,今天重拾起自己,做做功课写写字

文章目录

  • 一、准备
  • 二、实践
    • [2.1 安装docker](#2.1 安装docker)
    • 2.2docker镜像操作
      • [2.2.1 下载镜像等基本操作](#2.2.1 下载镜像等基本操作)
      • [2.2.2 启动容器等基本操作](#2.2.2 启动容器等基本操作)
      • [2.2.3 修改页面](#2.2.3 修改页面)
      • [2.2.4 保存镜像](#2.2.4 保存镜像)
      • [2.2.5 分享社区](#2.2.5 分享社区)
    • 总结

一、准备

该篇实验前准备一个服务器,我用的是阿里服务器

官网文档(如下)指导的centos已经是version9了,我的是7。如果你也是老版本,里面有关7以上版本的dnf需要注意一下

https://docs.docker.com/engine/install/centos/

如何看自己版本:

bash 复制代码
cat /etc/os-release

二、实践

2.1 安装docker

bash 复制代码
# 移除旧版本docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

# 配置docker yum源
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


# 安装 最新 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 启动& 开机启动docker; enable + start 二合一
sudo systemctl enable --now docker

#加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://mirror.huaweicloud.com",
        "https://docker.m.daocloud.io"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

配置docker yum源是因为从官网down is too slow.

还有最后的"加速",这改变了docker的json文件,docker自己下载东西的时候会从镜像下(这里是华为镜像)

bash 复制代码
docker ps

This commend:查看运行中的docker命令,比如有个nginx运行,则:

如果只启动docker是sudo systemctl start docker,开机自启是systemctl enable docker

在这docker就下载完成了

2.2docker镜像操作

我们以一个task为主线来开展工作

Task:启动一个nginx,并将它的首页改为自己的页面,发布出去,让所有人都能使用

2.2.1 下载镜像等基本操作

  1. 搜索镜像
bash 复制代码
docker search nginx

usage:搜索有没有nginx镜像

但是我一直是timeout,有尝试更换源等方法但无果,试了试好像不影响后面操作,在此暂时skip。(有大佬了解欢迎remark留言)

  1. 下载镜像
bash 复制代码
docker pull nginx


3.镜像列表

bash 复制代码
docker images

这里hello-world和ubuntu也是之前我pull下来的,重要的结果是nginx存在

repository是镜像的名字,Tag是版本,ID和其他两个不用说了

pull的默认是docker pull nginx:latest如果想下载指定版本,写镜像名加其标签。

如何找自己想要的版本呢,访问docker如下官网,搜索框查镜像名,里面有各种各样的,点自己想要的,然后点Tag按钮,右边甚至有直接pull该版本的指令。

例子如下

4. 删除镜像

bash 复制代码
docker rmi ID/名称

如果是名称,默认版本也是lastest

2.2.2 启动容器等基本操作

  1. 运行
bash 复制代码
docker run ID/名称

run就让"镜像"装到"容器"里了。

这里有意思的是,如果你写的是"镜像名称",命令机制:先找本地有没有该镜像的lastest版本,如果有,直接用;如果没有,他会自己主动download!

但他和pull完run有什么区别呢?区别如下

  1. 查看
bash 复制代码
docker ps

这个已经于上文解释

3. 停止

bash 复制代码
docker stop 容器名/容器ID

如果要看到退出了的,docker ps -a

4. 重启与开启

bash 复制代码
docker start ID(ID可以是缩减)

好像ID缩减一般取其前3位。我尝试了前2位与1位,都可以。我还没尝试如果有若干ID前面缩减相同的容器,他会开启哪一个。

重启是docker restart ID

亲测,一个在run,我start不了另一个。但我的理论分析上可以,"待研究"

5. 状态

bash 复制代码
docker stats ID/名字

6. 日志

bash 复制代码
docker logs ID

7. 删除

bash 复制代码
#删除
docker rm ID
#强制删除
docker rm -f ID

这里就得注意,rm是删除,前提是容器得先stop。如果不想管这个,请强制删除,在rm后面加-f,如上图。

这样这个装nginx的容器啥都没了

8. run的细节用法

我先给个code

bash 复制代码
docker run -d --name my_nginx_test -p 8885:80 nginx

解释如下:

  • -d是表示后台启动
  • --name表示将该命令的镜像装到--name后面这个自己指定的容器里
  • -p 80:80 这个里面的-p是端口映射,前一个8885是主机的端口,后一个80是容器的80。即:主机的80端口映射到容器的80端口。

这样访问服务器的8885端口,就可以看到

但记得在服务器添加规则:允许 TCP 8885 端口 的入站和出站流量

2.2.3 修改页面

如果想修改页面,需要进入容器。如下图蓝盒里面的黑框框

bash 复制代码
docker exec -it mynginx /bin/bash
  • -it表示以交互模式进入(后面接容器名字orID)
    --i:也就是 --interactive,其作用是保持标准输入(STDIN)处于开启状态,即便没有连接上终端。
    -t:即 --tty,它会为容器分配一个伪终端。
    把这两个选项结合起来使用,就可以在容器内开启一个交互式的终端会话。
  • /bin/bash此为要在容器内部执行的命令。/bin/bash 代表在容器中启动一个 Bash shell,这样用户就能在容器内部以交互式的方式执行各种命令了。
    然后就拿到这里面的shell了,想改页面,原始方法如下。后续介绍更简便的方法(将容器映射到主机)

2.2.4 保存镜像

  1. 提交
bash 复制代码
docker commit 容器 起个镜像名
  1. 保存
bash 复制代码
docker save -o 文件名 镜像
  1. 加载
    我们上文打包了镜像, 这里down下来使用
bash 复制代码
docker load -i xxx.zip/xxx.tar

这就到你的images里面了,下面是使用

2.2.5 分享社区

附:该部分为补充学习,我在该小节没有实操

bash 复制代码
docker login

输入你在hub.dokcer.com的用户名和密码

进入后

bash 复制代码
docker tag 源镜像名字 你docker网站的ID名字/要上传镜像本地的名字

tag用途是给镜像添加一个新的标签

"你docker网站的ID名字/要上传镜像本地的名字",前面加hub.docker的ID,是听说网站上传是这个要求的

bash 复制代码
docker push 你docker网站的ID名字/要上传镜像本地的名字

总结

相关基础命令如下,具体使用时如果生疏忘记,可以后面接--help

相关推荐
normaling几秒前
十一,Shell
linux
仇辉攻防2 分钟前
【云安全】云原生-centos7搭建/安装/部署k8s1.23.6单节点
web安全·docker·云原生·容器·kubernetes·k8s·安全性测试
家庭云计算专家11 分钟前
IPV6应用最后的钥匙:DDNS-GO 动态域名解析工具上手指南--家庭云计算专家
linux·服务器·云计算·编辑器
霸道流氓气质18 分钟前
CentOS中离线安装DockerCompos并用其部署Rabbitmq(使用离线导入导出docker镜像方式)
docker·centos·rabbitmq
青山瀚海44 分钟前
windows中搭建Ubuntu子系统
linux·windows·ubuntu·docker
xxxx1234451 小时前
Linux驱动开发-网络设备驱动
linux·运维·驱动开发
2401_861615282 小时前
debian转移根目录
linux·debian·电脑
洛阳泰山2 小时前
Windows 11 家庭中文版 安装docker desktop 无法开启自启动问题处理
windows·docker·容器
刘若水2 小时前
Linux: 线程控制
linux·运维·服务器
筱戥芊茹2 小时前
RK3588上Linux系统编译C/C++ Demo时出现BUG:The C/CXX compiler identification is unknown
linux·c语言·c++·嵌入式硬件·bug