ubuntu环境下docker容器详细安装使用

news2024/11/14 20:13:32

文章目录

    • 一、简介
    • 二、ubuntu安装docker
      • 1.删除旧版本
      • 2.安装方法一
      • 3. 安装方法二(推荐使用)
      • 4.运行Docker容器
      • 5. 配置docker加速器
    • 三、Docker镜像操作
      • 1. 拉取镜像
      • 2. 查看本地镜像
      • 3. 删除镜像
      • 4. 镜像打标签
      • 5. Dockerfile生成镜像
    • 四、Docker容器操作
      • 1. 获取镜像
      • 2. 启动容器
      • 3. 退出
      • 4. 查看所有的容器
      • 5. 启动已停止运行的容器
      • 6. 停止一个容器
      • 7. 重启容器
      • 8.进入容器
      • 9. 导入导出容器
      • 10. 删除容器
      • 11. 查看容器端口的映射
      • 12. 查看容器的日志
      • 13. 一次性删除所有的运行容器
      • 14. 查看容器的信息
    • 五、Docker容器测试
      • 1.使用中科大镜像加速器
      • 2.把 Docker 配置为普通用户访问
      • 3.拉取ubuntu18.04镜像
      • 4.运行镜像进入容器
      • 5. Docker安装常用工具
      • 6. 添加用户
      • 7. docker 文件的拷贝
      • 8. 安装ssh远程连接

一、简介

  • ubuntu下使用docker为了解决不同厂家的核板需要搭建不通的虚拟机交叉编译环境,使用docker就可以在一个虚拟机中完成多个核板的程序开发
  • 本文记录自己的安装过程以及Docker命令的使用记录
    在这里插入图片描述

二、ubuntu安装docker

1.删除旧版本

sudo apt-get remove docker docker-engine docker.io containerd runc

2.安装方法一

使用官方安装脚本安装

 curl -fsSL https://test.docker.com -o test-docker.sh
 sudo sh test-docker.sh

在这里插入图片描述

3. 安装方法二(推荐使用)

  1. 更新 apt 包索引,输入以下命令:
    sudo apt-get update
    
  2. 安装 apt 依赖包,用于通过 HTTPS 来获取仓库,输入以下命令
    sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
    
  3. 添加 Docker 的官方 GPG 密钥,输入以下命令:
    curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    
  4. 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后 8 个字符,验证现在是否拥有带有指纹的密钥,输入以下命令:
    sudo apt-key fingerprint 0EBFCD88
    
  5. 使用以下指令设置稳定版仓库
    sudo add-apt-repository \ 
    "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
    $(lsb_release -cs) \
    stable"
    
  6. 安装 Docker Engine-Community
    sudo apt-get update
    
  7. 安装最新版本的 Docker Engine-Community 和 containerd,输入以下命令
    sudo apt-get install docker-ce docker-ce-cli containerd.io
    

4.运行Docker容器

  • 启动docker服务
    service docker start
    
  • 列出docker现有镜像
    docker images
    
  • 配置docker服务开机自启
    systemctl enable docker
    

5. 配置docker加速器

中科大镜像加速器

https://docker.mirrors.ustc.edu.cn

执行下面命令

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

三、Docker镜像操作

1. 拉取镜像

docker image pull 镜像名称

拉取最新版的 Ubuntu 镜像

docker pull ubuntu
docker pull ubuntu:latest

2. 查看本地镜像

docker images

在这里插入图片描述

3. 删除镜像

docker image rm 镜像名或镜像id

4. 镜像打标签

docker tag <镜像ID或名称> <新标签名>

5. Dockerfile生成镜像

生成一个dockerfile文件

vim dockerfile
################################################
#
#生成SSH服务的ubuntu镜像
#
################################################

#基于哪个镜像生成新的镜像
FROM ubuntu:20.04

#作者名
MAINTAINER oldzhai

#设置环境变量
ENV TZ Asia/Shanghai
ENV LANG zh_CN.UTF-8

#执行命令
#替换为阿里源
RUN sed -i 's#http://archive.ubuntu.com/#http://mirrors.aliyun.com/#' /etc/apt/sources.list \
    && sed -i 's#http://security.ubuntu.com/#http://mirrors.aliyun.com/#' /etc/apt/sources.list

#更新软件源并安装软件
#安装ssh服务
RUN apt-get update -y \
    && apt-get -y install iputils-ping \
    && apt-get -y install wget \
    && apt-get -y install net-tools \
    && apt-get -y install vim \
    && apt-get -y install openssh-server \
    && apt-get clean && rm -rf /tmp/* /var/lib/apt/lists/* /var/tmp/*

#设置密码
RUN echo 'root:root' |chpasswd

#允许root用户登入
RUN sed -ri 's/^#PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config

#创建sshd目录
RUN mkdir /var/run/sshd

# 声明端口
EXPOSE 22

#开始ssh服务
CMD ["/usr/sbin/sshd", "-D"]

使用当前目录的 Dockerfile 创建镜像,标签为 ubuntu_ssh:20.04
注:后面的 .表示当前目录
使用docker images命令可以查看当前已有镜像

docker build -t ubuntu_ssh:20.04 .

在这里插入图片描述
在这里插入图片描述

四、Docker容器操作

1. 获取镜像

如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像:

docker pull ubuntu

2. 启动容器

docker run -it ubuntu /bin/bash

//-v指定共享目录
docker run -itd --name ubuntu01 -v /root/test:/root ubuntu

//-p指定端口号 宿主机8088 容器内部是80
docker run -itd --name ubuntu01 -v /root/test:/root -p 8088:80 ubuntu
docker run -itd --name ubuntu01 -v /root/test:/root -p 127.0.0.1:8088:80 ubuntu

//-v 共享目录 将当前目录挂载到容器的/data
//-p 端口
docker run -v $(pwd):/data -p 1022:22 --hostname ubuntu01 --privileged -it --rm ubuntu:18.04 /bin/bash

3. 退出

exit

4. 查看所有的容器

docker ps -a

5. 启动已停止运行的容器

//使用 docker start 启动一个已停止的容器
docker start b750bbbcfd88 

//后台运行在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式
docker run -itd --name ubuntu-test ubuntu /bin/bash

6. 停止一个容器

docker stop <容器 ID>

7. 重启容器

停止的容器可以通过 docker restart 重启

docker restart <容器 ID>

8.进入容器

如果从这个容器退出,容器不会停止,这就是为什么推荐大家使用 docker exec 的原因

docker exec -it 243c32535da7 /bin/bash

如果从这个容器退出,会导致容器的停止

docker attach 1e560fca3906 

9. 导入导出容器

这种方式主要用于分享或迁移整个镜像,包括所有版本、标签和历史

导出:
docker save -o <保存路径>/myimage.tar myimage:latest
导入:
docker load -i <路径>/myimage.tar

这种方式主要用于分享或迁移容器的当前状态。这不包括容器的历史或元数据,如环境变量,所以它常常用于对容器进行快照

导出:
docker export <容器ID> > mycontainer.tar
导入:
docker import mycontainer.tar

10. 删除容器

删除容器使用 docker rm 命令:

docker rm -f 1e560fca3906

下面的命令可以清理掉所有处于终止状态的容器

docker container prune

11. 查看容器端口的映射

//bf08b7f2cd89 为容器的id
docker port bf08b7f2cd89

12. 查看容器的日志

docker logs -f bf08b7f2cd89

13. 一次性删除所有的运行容器

docker rm -f `docker ps -a -q`

14. 查看容器的信息

docker inspect 730fde4da6ac
//过滤只查询ip信息
docker inspect --format='{{.NetworkSettings.IPAddress}}' 730fde4da6ac

在这里插入图片描述

五、Docker容器测试

1.使用中科大镜像加速器

上面设置了,可以直接跳过

sudo vim /etc/docker/daemon.json
{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

重启 docker 服务

sudo systemctl restart docker

2.把 Docker 配置为普通用户访问

//添加 docker 用户组,输入以下命令
sudo groupadd docker

//将登陆用户加入到 docker 用户组中
sudo usermod -aG docker $USER

//更新用户组(这一步非常重要)
newgrp docker

//重启 docker 服务
sudo systemctl enable docker
sudo systemctl restart docker

3.拉取ubuntu18.04镜像

sudo apt update
docker pull ubuntu:18.04

4.运行镜像进入容器

docker container run -p 8000:3000 -it ubuntu:18.04 /bin/bash

-p 参数:容器的 3000 端口映射到本机的 8000 端口。
-it 参数:容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传
入容器。
ubuntu:18.04:image 文件的名字
/bin/bash:容器启动以后,内部第一个执行的命令。这里是启动 Bash,保证用户可以使
用 Shell。
在这里插入图片描述

5. Docker安装常用工具

apt update
apt install byobu vim-gtk inetutils-ping net-tools wget cpio unzip rsync xz-utils bc time

在这里插入图片描述
过程中需要配置地区,选择亚洲上海:
在这里插入图片描述
在这里插入图片描述

6. 添加用户

设置超级用户

apt install sudo

添加普通用户

visudo

添加自己的用户名,保存并退出

oldzhai ALL=(ALL:ALL) ALL

在这里插入图片描述

adduser oldzhai

在这里插入图片描述
切换到普通用户

su oldzhai

在这里插入图片描述

7. docker 文件的拷贝

//docker cp 主机的目录文件 容器运行id:容器路径
docker cp /home/topeet/topeet-qt5.14.2/ bc1d9b59bc0b:/home/topeet/project/

//容器文件 拷贝到虚拟机
docker cp bc1d9b59bc0b:/home/topeet/project/ /home/topeet/topeet-qt5.14.2/

8. 安装ssh远程连接

行容器指定端口

-p 参数:容器的 22 端口映射到本机的 10022 端口
docker run -v $(pwd):/data -p 1022:22 --hostname ubuntu01 --privileged -it --rm ubuntu:18.04 /bin/bash

安装ssh

apt update
apt-get install ssh

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1487400.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

07OpenCV 图像模糊

文章目录 图像掩膜操作模糊原理均值滤波高斯滤波中值滤波双边滤波算子代码 图像掩膜操作 图像掩膜操作 模糊原理 Smooth/Blur是图像处理中最简单和常用的操作之一 使用操作的原因之一就是为了给图像预处理时候减低噪声 图像噪声是指存在于图像数据中的不必要的或多余的干扰信…

docker基线安全修复和容器逃逸修复

一、docker安全基线存在的问题和修复建议 1、将容器的根文件系统挂载为只读 修复建议&#xff1a; 添加“ --read-only”标志&#xff0c;以允许将容器的根文件系统挂载为只读。 可以将其与卷结合使用&#xff0c;以强制容器的过程仅写入要保留的位置。 可以使用命令&#x…

C++笔试题(选择+编程)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 选择题 请找出下面程序中有哪些错误&#xff08;&#xff09; int main() {int i 10;int j 1;const int *p1;//(1)int const *p2 &i; //(2)p2 &j;//(3)int *const p3 &i;//(4)*p3 20;//(5)*p2 30;//(6…

uniapp和vue项目配置多语言,实现前端切换语言

在uniapp中配置多语言功能&#xff0c;实现前端切换语言&#xff0c;可以按照以下步骤进行&#xff1a; 1. 创建语言包 首先&#xff0c;创建一个名为 lang 的目录&#xff0c;并在该目录下为每种支持的语言创建对应的JSON或JS文件。例如&#xff1a; lang/en.js&#xff08…

Vue3和ElementPlus封装table组件

最近学习vue3.2并自己在写一个项目&#xff0c;然后发现好几个页面都是列表页&#xff0c;重复写table和column也是觉得累&#xff0c;学习的项目列表页不算多&#xff0c;要是公司项目就不一样了&#xff0c;所以就想着自己封装一个table组件&#xff0c;免去大量重复工作和co…

综合实验nginx+nfs+kpa

综合实验 实验目的&#xff1a; 静态资源和动态资源分别存放在远端存储NFS上&#xff0c;NFS上数据实现实时备份&#xff0c;用户通过负载访问后端的web服务。实现ngixn负载高可用&#xff0c;当keepalived master宕机&#xff0c;vip能自动跳转到备用节点 实验环境&#xff…

游戏引擎分层简介

游戏引擎分层架构&#xff08;自上而下&#xff09; 工具层&#xff08;Tool Layer&#xff09; 在一个现代游戏引擎中&#xff0c;我们最先看到的可能不是复杂的代码&#xff0c;而是各种各样的编辑器&#xff0c;利用这些编辑器&#xff0c;我们可以制作设计关卡、角色、动画…

多功能声学综合馆:塑造未来城市空间的先锋

现代城市需要多功能声学综合馆&#xff0c;这不仅是一座建筑&#xff0c;更是空间的变革者&#xff0c;为城市注入活力&#xff0c;展现着未来的发展方向。让我们一同探讨多功能声学综合馆的种种优势&#xff0c;它是如何为城市带来独特的价值。 1. 灵活性与多功能性的典范&am…

【RT-DETR有效改进】结合SOTA思想利用双主干网络改进RT-DETR(全网独家创新,重磅更新)

一、本文介绍 本文给大家带来的改进机制是结合目前SOTAYOLOv9的思想利用双主干网络来改进RT-DETR&#xff08;本专栏目前发布以来改进最大的内容&#xff0c;同时本文内容为我个人一手整理全网独家首发 | 就连V9官方不支持的模型宽度和深度修改我都均已提供&#xff0c;本文内…

RK3568平台开发系列讲解(基础篇)中断线程化

🚀返回专栏总目录 文章目录 一、什么是中断线程化二、中断线程化接口三、中断线程化案例沉淀、分享、成长,让自己和他人都能有所收获!😄 一、什么是中断线程化 中断线程化是一种优化技术, 用于提高多线程程序的性能。 中断线程化的核心思想是将中断处理和主线程的工作分…

paimon取消hive转filesystem

目录 概述实践关键配置spark sql 结束 概述 公司上一版本保留了 hive &#xff0c;此版优化升级后&#xff0c;取消 hive。 实践 关键配置 同步数据时&#xff0c;配置如下&#xff0c;将形成两个库 # ods库 CREATE CATALOG paimon WITH (type paimon,warehouse hdfs:///d…

ospf协议以及案例

OSPF协议网络类型 OSPF协议支持四种网络类型&#xff0c;分别是点到点网络&#xff0c;广播型网络&#xff0c;NBMA网络和点到多点网络。 1、点到点网络是指只把两台路由器直接相连的网络。一个运行PPP的64K串行线路就是一个点到点网络的例子。 2、广播型网络是指支持两台以上…

第二篇【传奇开心果系列】Python的自动化办公库技术点案例示例:深度解读Pandas金融数据分析

传奇开心果博文系列 系列博文目录Python的自动化办公库技术点案例示例系列 博文目录前言一、Pandas 在金融数据分析中的常见用途和功能介绍二、金融数据清洗和准备示例代码三、金融数据索引和选择示例代码四、金融数据时间序列分析示例代码五、金融数据可视化示例代码六、金融数…

第四届信息通信与软件工程国际会议(ICICSE 2024)即将召开!

2024年第四届信息通信与软件工程国际会议&#xff08;ICICSE 2024&#xff09;将于2024年5月10-12日在中国北京举办。本次会议由北京工业大学、IEEE以及Comsoc 联合主办。随着当今社会信息化的高速发展&#xff0c;电子信息技术的应用更是随处可见。其中&#xff0c;信息通信与…

虚拟化之CPU

一 cpu 1 如何查看内核版本&#xff1a;uname -r 2 如何查看操作系统的发行版本&#xff1a;cat /etc/redhat-release 3 计算机系统子的系统 cpu处理器memory内存storage存储network 网络Display显示 4 进程模式 用户模式&#xff08;user mode&#xff09;主要处理I/O的模…

TypeScript11:类型兼容性

类型的兼容性 B -> A&#xff0c;将 B 赋值给 A &#xff0c;如果能完成赋值&#xff0c;则 B 和 A 类型兼容。 鸭子辨型法&#xff08;子结构辨型法&#xff09;&#xff1a; 目标类型需要某一些特征&#xff0c;赋值的类型只要能满足该特征即可。 TS如何进行类型兼容…

SINAMICS V90 PN 指导手册 第7章 位置跟踪

位置跟踪 位置跟踪的主要作用有以下几点&#xff1a; 为单圈绝对值编码器设置一个虚拟多圈扩展位置区域使用齿轮箱时编码器可以重复负载位置 当位置跟踪功能使能后&#xff0c;那么实际位置值在驱动断电时会保存在驱动的掉电存储区中。当驱动器重新上电后&#xff0c;驱动可…

【计算机考研】408学到什么程度才能考130?

408考130要比考研数学考130难的多 我想大部分考过408的考生都是这么认为的。408的难点在于他涉及的范围太广了&#xff0c;首先如果你要备考408&#xff0c;你要准备四门课程&#xff0c;分别是数据结构&#xff0c;计算机组成原理&#xff0c;操作系统和计算机网络。 这四门…

RabbitMQ队列

RabbitMQ队列 1、死信的概念 ​ 先从概念解释上搞清楚这个定义&#xff0c;死信&#xff0c;顾名思义就是无法被消费的消息&#xff0c;字面意思可以这样理解&#xff0c;一般来说,producer将消息投递到broker或者直接到queue里了&#xff0c;consumer 从 queue取出消息进行消…

模型部署 - BevFusion - (1) - 思路总结

模型部署实践 - BevFusion 思路总结一、网络结构 - 总结1.1、代码1.2、网络流程图1.3、模块大致梳理 二、Onnx 的导出 -总体思路分析三、优化思路总结 学习 BevFusion 的部署&#xff0c;看了很多的资料&#xff0c;这篇博客进行总结和记录自己的实践 思路总结 对于一个模型我…