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.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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AtCoder ABC343 A-D题解

Problem A: 签到题。 #include <bits/stdc.h> using namespace std; int main(){int A,B;cin>>A>>B;for(int i0;i<10;i){if(i!(AB))cout<<i<<endl;//记得return} } Problem B: 依旧签到。 include <bits/stdc.h> using namespace …

实用工具:实时监控服务器CPU负载状态并邮件通知并启用开机自启

作用&#xff1a;在服务器CPU高负载时发送邮件通知 目录 一、功能代码 二、配置开机自启动该监控脚本 1&#xff0c;配置自启脚本 2&#xff0c;启动 三、功能测试 一、功能代码 功能&#xff1a;在CPU负载超过预设置的90%阈值时就发送邮件通知&#xff01;邮件内容显示…

求阶乘。。

&#xff01;&#xff01;&#xff01;答案解释摘录自蓝桥云课题解 问题描述 满足N!的末尾恰好有个0的最小的N是多少? 如果这样的N不存在输出-1。 输入格式 一个整数 K 输出格式 一个整数代表答案 样例输入 2 样例输出 10 import os import sys# 请在此输入您的代码 def coun…

懒人必备|视频号片段提取实战教程!

你是否也为如何提取视频号的视频感到困扰&#xff1f;想要留住那些美好瞬间&#xff0c;但又不知道改如何操作&#xff1f;别瞎找了&#xff01;今天就让我来教你正确的步骤&#xff0c;让你轻松成为“提取达人”&#xff01; 首先&#xff0c;打开想要提取的视频&#xff0c;找…

某u盘 对比 sd卡+读卡器

部分 u盘 性能甚至不如 读卡器SD卡 电脑 支持USB3 gen2 的 USBA接口(u盘用) 和 typec接口(读卡器用) 极致性能需求可考虑: m.2固态硬盘盒m.2固态 设备 速度对比 迅雷... 拷贝文件信息 共用格式化信息

青少年软件编程(Python)等级考试试卷(一级)2020年3月

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;一级&#xff09;2020年3月 第 1 题 【单选题】 运行下方代码段&#xff0c;输出的是( )。 print("a"*3) A :a3 B :3a C :a a a D :aaa 正确答案:D 试题解析 第 2 题 【单选题】 下…

SpringBoot整合rabbitmq-重复消费问题

说明&#xff1a;重复消费的原因大致是生产者将信息A发送到队列中&#xff0c;消费者监听到消息A后开始处理业务&#xff0c;业务处理完成后&#xff0c;监听在告知rabbitmq消息A已经被消费完成途中中断&#xff0c;也就时说我已经处理完业务&#xff0c;而队列中还存在当前消息…

【C++】类的默认成员函数(上)

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 一、默认成员函数二、构造函数构造函数的概念及特性 三、析构函数析构函数的特性…

#QT(DEMO2-登录界面)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a;DEMO登录 3.记录 Line Edit输入不换行 密码框输入如下设置: 运行效果 4.代码

使用Matplotlib绘制圆环图

圆环图是饼图的修改版&#xff0c;中间区域被切掉。圆环图更关注使用弧的面积来以最有效的方式表示信息&#xff0c;而不是饼图&#xff0c;饼图更关注比较切片之间的比例面积。圆环图在空间方面更有效&#xff0c;因为圆环图内部的空白空间可用于显示有关圆环图的一些附加信息…

【C++那些事儿】深入理解C++类与对象:从概念到实践(中)| 默认构造函数 | 拷贝构造函数 | 析构函数 | 运算符重载 | const成员函数

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构冒险记 ✅C那些事儿 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 1. 类的6个默认成员函数2. 构造函数2.1 概念2.2 特性 3. 析构函数3.1 概念3.2 特性 4. 拷贝…

flutter 文字一行显示,超出换行

因为app有多语言&#xff0c;中文和其他语言长度不一致&#xff0c;可能导致英文会很长。 中文样式 英文样式 代码 Row(mainAxisAlignment: MainAxisAlignment.end,crossAxisAlignment: CrossAxisAlignment.end,children: [Visibility(visible: controller.info.fee ! null,ch…

产品经理岗位的任职资格和职业规划

产品经理主要是商业银行以客户为导向的&#xff0c;具体负责组织银行某一金融产品线的创新设计、生产营销和管理服务的工作。这类人士主要负责应用实施工作&#xff0c;其中产品线由一系列的产品构成&#xff0c;公司的产品经理主要分为全过程产品创新设计专家、全过程产品生产…

驾驭栈和队列,首先逃不开这些(有效括号、栈和队列相互模拟、循环队列)

一.有效括号 . - 力扣&#xff08;LeetCode&#xff09; 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须…

力扣74. 搜索二维矩阵(二分查找)

Problem: 74. 搜索二维矩阵 文章目录 题目描述思路复杂度Code 题目描述 思路 思路1&#xff1a;映射为一维数组二分查找 1.由于题目矩阵中的元素整体是升序的&#xff0c;我们可以将其放置在一个大小为 m n m \times n mn的一维数组array中进行二分查找 2.对应的映射关系是ar…

微信小程序,h5端自适应登陆方式

微信小程序端只显示登陆(获取opid),h5端显示通过账户密码登陆 例如: 通过下面的变量控制: const isWeixin ref(false); // #ifdef MP-WEIXIN isWeixin.value true; // #endif

(C语言)qsort函数模拟实现

前言 我们需先了解qsort函数 qsort函数详解&#xff1a;http://t.csdnimg.cn/rTNv9 qsort函数可以排序多种数据类型&#xff0c;很是神奇&#xff0c;这是为什么&#xff0c;我们在里模拟实现这样的功能 目录 1. qsort函数模拟实现 2. 我们使用bubble_sort函数排序整形数…

ruoyi 图片等文件资源读取

老是忘&#xff0c;记录一下 ResourcesConfig 文件下 /** 本地文件上传路径 */ registry.addResourceHandler(Constants.RESOURCE_PREFIX "/**").addResourceLocations("file:" RuoYiConfig.getProfile() "/"); /*** 资源映射路径 前缀*/ …

【Web安全靶场】xss-labs-master 1-20

xss-labs-master 其他靶场见专栏 文章目录 xss-labs-masterlevel-1level-2level-3level-4level-5level-6level-7level-8level-9level-10level-11level-12level-13level-14level-15level-16level-17level-18level-19level-20 level-1 第一关没有进行任何限制&#xff0c;get请求…

python复盘(1)

1、变量名的命名规则 #3、变量名的命名规则&#xff1a;可以用中文作为变量名&#xff1b;其他和go语言一样 # 变量名可以用数字、字母、下划线组成&#xff0c;但是数字不能作为开头 # 变量名不能使用空格&#xff0c;不能使用函数名或关键字 # 变量名最好能表示出他的作用2、…