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

文章目录

    • 一、简介
    • 二、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.shsudo 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.mzph.cn/news/718325.shtml

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

相关文章

深入理解C语言中的变量和常量

变量和常量 1. 前言2. 预备知识2.1 printf和%d2.2 \n2.3 scanf2.4 scanf在vs中报错2.5 extern2.6 数组的初始化 3. 变量和常量的区别4. 变量4.1 定义变量的方法4.2 变量的分类4.2.1 局部优先 4.3 变量的使用4.4 变量的作用域4.4.1 局部变量的作用域4.4.2 全局变量的作用域 4.5 …

机器学习|KNN和Kmeans

KNN和Kmeans KNN KNN-K个最近的邻居&#xff0c;而K是可人先预设出来的。 所谓近朱者赤&#xff0c;近墨者黑。 可以选取离当前最近的K个样本来作为辅助判断&#xff0c;因为本样本和最近的K个样本应该是处于一种相似的状态。 以下是一个苹果和梨的识别任务。 图上会出现一个未…

【软件设计师】通俗易懂的去了解算法的时间复杂度

&#x1f413; 时间复杂度 常用排序的时间复杂度 时间频度 算法需要花费的时间&#xff0c;和它语句执行的次数是成正比的&#xff0c;所以会把一个算法种语句执行次数称为语句频度和时间频度、记作T(n)。 定义 时间复杂度就是找到一个无限接近时间频度T(n)同数量级的函数&am…

mirthConnect忽略HTTPS SSL验证

mirthConnect SSL忽略验证 1、下载https网站证书 点击不安全---->证书无效 2、查看mirth 秘钥库口令 在mirthConnect 的conf目录下面keystore.storepass 3、导入证书到本地 在jdk的bin目录下面执行 keytool -importcert -file "下载的网站证书路径" -keysto…

CV论文--2024.3.4

1、Deep Networks Always Grok and Here is Why 中文标题&#xff1a;深度网络总是让人摸不着头脑&#xff0c;原因如下 简介&#xff1a;本文探讨了深度神经网络&#xff08;DNN&#xff09;中一种称为"延迟泛化"或"Grokking"的现象。在接近零的训练误差…

如何用Elementor创建WordPress会员网站

在下面的文章中&#xff0c;我们将向您展示如何使用Elementor和MemberPress在WordPress中轻松构建会员网站。这篇文章将涵盖WordPress会员网站设置过程、会员资格和受保护内容创建、重要页面和登录表单设计、电子邮件通知管理、报告等。 目录 什么是WordPress会员网站&#x…

【go从入门到精通】go基本类型和运算符用法

大家好&#xff0c;这是我给大家准备的新的一期专栏&#xff0c;专门讲golang&#xff0c;从入门到精通各种框架和中间件&#xff0c;工具类库&#xff0c;希望对go有兴趣的同学可以订阅此专栏。 --------------------------------------------------------------------------…

.NET高级面试指南专题十四【 观察者模式介绍,最常用的设计模式之一】

简介&#xff1a; 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;其目的是定义了一种一对多的依赖关系&#xff0c;当一个对象的状态发生变化时&#xff0c;所有依赖于它的对象都会得到通知并自动更新。 原理&#xff1a; 在观察者模式中…

从零开始搭建web组态

成果展示&#xff1a;by组态[web组态插件] 一、技术选择 目前只有两种选择&#xff0c;canvas和svg Canvas: 是一个基于像素的渲染引擎&#xff0c;使用JavaScript API在画布上绘制图像&#xff0c;它的优点包括&#xff1a; Canvas渲染速度快&#xff0c;适合处理大量图像和…

TIOBE 2024榜单启示:程序员如何把握未来编程趋势与机遇

程序员如何选择职业赛道&#xff1f; 程序员的职业赛道就像是一座迷宫&#xff0c;有前端的美丽花园&#xff0c;后端的黑暗洞穴&#xff0c;还有数据科学的神秘密室。你准备好探索这个充满挑战和机遇的迷宫了吗&#xff1f;快来了解如何选择职业赛道吧&#xff01; 方向一…

CSS中如何解决 1px 问题?

1px 问题指的是&#xff1a;在一些 Retina屏幕 的机型上&#xff0c;移动端页面的 1px 会变得很粗&#xff0c;呈现出不止 1px 的效果。原因很简单——CSS 中的 1px 并不能和移动设备上的 1px 划等号。它们之间的比例关系有一个专门的属性来描述&#xff1a; window.devicePix…

重构笔记系统:Docker Compose在微服务架构中的应用与优化

虽然我的笔记系统的开发是基于微服务的思想&#xff0c;但是在服务的配置和编排上感觉还是不太合理&#xff0c;具体来说&#xff0c;在开发上的配置和在生产上的配置差别太大。现在规模小&#xff0c;后面规模变大&#xff0c;估计这一块会成为系统生长的瓶颈。 因此&#xff…

跨时钟信号处理方法

1. 背景 现在的芯片&#xff08;比如SOC&#xff0c;片上系统&#xff09;集成度和复杂度越来越高&#xff0c;通常一颗芯片上会有许多不同的信号工作在不同的时钟频率下。比如SOC芯片中的CPU通常会工作在一个频率上&#xff0c;总线信号&#xff08;比如DRAM BUS&#xff09;会…

python+Django+Neo4j中医药知识图谱与智能问答平台

文章目录 项目地址基础准备正式运行 项目地址 https://github.com/ZhChessOvO/ZeLanChao_KGQA 基础准备 请确保您的电脑有以下环境&#xff1a;python3&#xff0c;neo4j 在安装目录下进入cmd&#xff0c;输入指令“pip install -r requirement.txt”,安装需要的python库 打…

猫为什么挑食?可以改善、预防猫咪挑食的主食冻干分享

现在的猫咪主人都把自家的小猫当成了心头的宝贝&#xff0c;呵护备至。最令人头疼的就是猫咪挑食不吃猫粮&#xff0c;猫为什么挑食&#xff1f;遇到这类情况怎么办呢&#xff1f;今天&#xff0c;我要分享一个既能确保猫咪不受苦&#xff0c;又能有效改善挑食问题的方法。 一、…

vue api封装

api封装 由于一个项目里api是很多的&#xff0c;随处都在调&#xff0c;如果按照之前的写法&#xff0c;在每个组件中去调api&#xff0c;一旦api有改动&#xff0c;遍地都要去改&#xff0c;所以api应该也要封装一下&#xff0c;将api的调用封装在函数中&#xff0c;将函数集…

C++实现简易版http server

mini服务器简介 mini服务器功能 1.实现了GET和POST方法的HTTP request和HTTP respond的构建和发送&#xff0c;使服务器可以完成基本通信功能。 2.使用了线程池技术&#xff0c;使服务器可以一次接收更多的链接和加快了服务器处理数据的速度。 3.实现了简易的CGI&#xff0…

【MATLAB源码-第155期】基于matlab的OFDM系统多径信道LS,LMMSE,SVD三种估计算法的比较误码率对比仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 OFDM&#xff08;Orthogonal Frequency Division Multiplexing&#xff0c;正交频分复用&#xff09;是一种高效的无线信号传输技术&#xff0c;广泛应用于现代通信系统&#xff0c;如Wi-Fi、LTE和5G。OFDM通过将宽带信道划分…

jmeter 按流量阶梯式压测数据库

当前版本&#xff1a; jmeter 5.6.3mysql 5.7.39 简介 JMeter 通过 BZM - Arrivals Thread Group 来模拟并发到达的用户流量、按时间加压&#xff0c;可以有效地帮助测试人员评估系统在高压力和高并发情况下的性能表现。 文章目录如下 1. 下载插件 2. 界面说明 3. 测试步骤…

云计算 2月26号 (进程管理和常用命令)

一、权限扩展 文件权限管理之&#xff1a; 隐藏权限防止root误删除 文件属性添加与查看 [rootlinux-server ~]# touch file1 file2 file3 1.查看文件属性 [rootlinux-server ~]# lsattr file1 file2 file3 ---------------- file1 ---------------- file2 ---------------- f…