docker 简单使用

docker 简单使用

  • 一、 docker 安装
  • 二、docker 使用
    • 1. docker pull 拉取镜像
    • 2. docker run 后台运行
    • 3. docker ps 查看容器运行状态
    • 4. docker exec 进入容器
    • 5. exit 退出容器
    • 6. docker restar 重启容器
    • 7. docker stop 停止运行容器
    • 8. docker stop 启动容器
    • 9. docker stop 删除容器
    • 10. docker cp 复制文件(夹)进出容器
  • 三、Dockfile 简单使用
    • 1. 准备
    • 2. 开始构建镜像
    • 3. 使用自定义镜像
    • 4. 删除自定义的镜像

目前我使用docker的场景的并不多,主要用来:

  1. 隔离本机的系统及软件环境,防止编译或者部署操作影响到本机
  2. 快速部署及配置软件环境不拖后接下来的工作

操作系统: Linux (ubuntu,debian,kali)

一、 docker 安装

sudo apt install docker.io
# 将要运行docker的用户加入到docker组,否则每次运行都要加sudo
sudo adduser ${USER} docker
sudo systemctl restart docker
# 重启以启用配置
sudo reboot

二、docker 使用

1. docker pull 拉取镜像

#自己决定版本 ubuntu:18.04 也可以
docker pull ubuntu:22.04
22.04: Pulling from library/ubuntu
bccd10f490ab: Pull complete 
Digest: sha256:77906da86b60585ce12215807090eb327e7386c8fafb5402369e421f44eff17e
Status: Downloaded newer image for ubuntu:22.04
docker.io/library/ubuntu:22.04

2. docker run 后台运行

# 后台运行一个ubuntu镜像
docker run -itd --name myubuntu ubuntu /bin/bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
Digest: sha256:77906da86b60585ce12215807090eb327e7386c8fafb5402369e421f44eff17e
Status: Downloaded newer image for ubuntu:latest
80e76ce3c7d2099ecb153b441f813a4b6b59b56a837797ce7cc502b5ce9b883e

3. docker ps 查看容器运行状态

# 后台运行一个ubuntu镜像
docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS              PORTS     NAMES
80e76ce3c7d2   ubuntu    "/bin/bash"   About a minute ago   Up About a minute             myubuntu

4. docker exec 进入容器

使用 exec 选项,退出容器后,容器不会停止
若使用 docker attach myubunru 进入容器,退出容器后,容器会停止

# 使用容器的ID或者名字都可以
# docker exec -it 80e76ce3c7d2 /bin/bash
docker exec -it myubuntu /bin/bash
root@80e76ce3c7d2:/# ls
bin   dev  home  lib32  libx32  mnt  proc  run   srv  tmp  var
boot  etc  lib   lib64  media   opt  root  sbin  sys  usr
root@80e76ce3c7d2:/# cd
root@80e76ce3c7d2:~# ls
root@80e76ce3c7d2:~# 

5. exit 退出容器

直接使用Ctrl + "d" 也可以

exit

6. docker restar 重启容器

docker restart myubuntu

7. docker stop 停止运行容器

docker stop myubuntu

8. docker stop 启动容器

停止可能会花费一些时间

docker stop myubuntu

9. docker stop 删除容器

删除之前需要先停止,否则会报错误

docker stop myubuntu
docker rm myubuntu

10. docker cp 复制文件(夹)进出容器

复制到容器的具体那个路径自行选择 不一定要复制到根目录:myubuntu:/,如myubuntu:/root

# 复制进入容器
docker cp text.txt myubuntu:/

进入容器查看 test.log 在不在

docker exec -it myubuntu /bin/bash
# 从容器复制出来
docker cp myubuntu:/test.log .

三、Dockfile 简单使用

前面使用的是 DockerHub 中的 ubuntu 镜像,现在我们自己制作一个自定义的 ubuntu 镜像,里面预置了我们需要的软件包和一些其他的操作:

  • FROM 指定基础镜像,用于后续的指令构建。
  • RUN 在构建过程中在镜像中执行命令
  • COPY 将文件或目录复制到镜像中

1. 准备

mkdir docker
cd docker

在创建的 docker 目录创建两个文件Dockerfiletest.log
test.log 只是为了使用 COPY 指令,将当前目录的文件复制到容器中,并不是必须的

#Dockerfile
FROM ubuntu:22.04
RUN apt-get update -y \&& apt-get install -y \curl \python3 \git \wget
COPY ./test.log /
# 内容随意,只是为了复制
touch test.log

2. 开始构建镜像

docker build -t myubuntu_image .

3. 使用自定义镜像

docker run -itd --name myubuntu myubuntu_image /bin/bash
docker ps -a
CONTAINER ID   IMAGE            COMMAND       CREATED          STATUS         PORTS     NAMES
1682e4914501   myubuntu_image   "/bin/bash"   42 minutes ago   Up 1 minutes             myubuntu

进入容器查看,里面已经有了我们复制进来的 test.log
并且预先安装了软件包: git,wget,python3,curl

docker exec -it myubuntu /bin/bash
root@1682e4914501:/# ls
bin   dev  home  lib32  libx32  mnt  proc  run   srv  test.log  usr
boot  etc  lib   lib64  media   opt  root  sbin  sys  tmp       var

4. 删除自定义的镜像

docker stop myubuntu
docker rm myubuntu
docker rmi myubuntu_image
Untagged: myubuntu_image:latest
Deleted: sha256:2127b529978e4ba134be19464c53d08bd01b822592db5fcaac1a0da014b13c26
Deleted: sha256:b561c76ca42a2e699693af790f2ba3638e7c1ec358a8b150465cb7b09c2ee2bb
Deleted: sha256:d562f8ca3124f08ffc952a27ed85c45b3ff887d48a051415628af667141a1630
Deleted: sha256:56e82a00763a8f08487f56f3eded2d5acbc6f755b5e7efbf2fe7722a6c449e33

至此,docker简单使用已完成
能力一般,水平有限,希望能帮到您

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

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

相关文章

nextjs渲染篇

1 服务器组件 默认情况下,Next.js 使用服务器组件。 1.1 服务器组件是如何呈现的? 在服务器上,Next.js 使用 React 的 API 来编排渲染。渲染工作被拆分为多个块:按单个路段和Suspense 每个区块分两个步骤呈现: Re…

Python一键修改目录下所有文件的编码格式

前言 在开发中总会遇到这样的问题,别人的代码采用的编码格式是GBK,而自己的项目的编码格式是UTF-8,如果直接复制过来,就会出现中文乱码的问题,一个个该编码格式又非常麻烦。所以我写了这样一小段简短的代码&#xff0…

Python 中的高阶函数

Python 中的高阶函数是指可以接受函数作为参数,或者返回函数作为结果的函数。这种特性让编程变得更加灵活和功能强大,常见的高阶函数有 map()、filter()、reduce() 和 sorted() 等。 map() 函数: map() 函数接受一个函数和一个可迭代对象&a…

select * from .... for update 使用 防止重复提交/操作

详情点下方链接 for-update笔记链接 注:当选中某一个行的时候,如果是通过主键id选中的。那么这个时候是行级锁。 其他的行还是可以直接insert 或者update的。如果是通过其他的方式选中行,或者选中的条件不明确包含主键。这个时候会锁表。其他的事务对该表的任意一行…

SQLite的PRAGMA 声明(二十三)

返回:SQLite—系列文章目录 上一篇:SQLite从出生到现在(发布历史记录)(二十二) 下一篇:用于 SQLite 的异步 I/O 模块(二十四) PRAGMA 语句是特定于 SQLite 的 SQL 扩…

Valorant 瓦罗兰特更新后进不去游戏?3个解决方法完美解决

Valorant 瓦罗兰特更新后进不去游戏?3个解决方法完美解决 《无畏契约(VALORANT)》是一款由知名游戏开发商(Riot Games)开发并且免费的多人射击游戏。游戏背景设定在一个幻想世界中,玩家将探索瓦罗兰大陆上…

面对深度合成技术备案,企业应该如何做好准备?

在这个数字化高速发展的时代,互联网信息服务已经深入我们生活的方方面面。特别是那些应用深度合成技术的互联网信息服务,比如通过算法实现的图像、语音和视频的合成等,现在都需要进行严格的备案。由于备案周期较长,建议涉及这些技…

基于python的二手房数据分析建模及可视化研究,爬取链家二手房数据,可视化分析,房价预测模型

介绍 主要涉及通过爬取济南市链家二手房数据,然后对数据进行处理,包括缺省值处理,高德地图获取二手房地址所属市区,经纬度等数据处理。然后通过python的flask框架编写后端接口,把数据响应给前端。然后前端通过AJAX请求…

Excel:如何对数据列进行码值转换

这里有两种函数可以直接解决: 在需要转码的数据列旁边新建一列,使用如下函数即可 1、函数一 VLOOKUP(H10,B3:C45,2,FALSE) VLOOKUP(需要转码的单元格,key和value所在数据范围,需要转成范围内第几列数据,是否模糊匹配) 这个函数中,key和valu…

Oracal数据库使用

Oracal官网:https://www.oracle.com/database/technologies/instant-client/downloads.html 官网搜索需登陆:https://edelivery.oracle.com/osdc/faces/SearchSoftware 软猫下载:Oracle 19.3 0、linux下安装 Linux系统(X64&…

lsof命令——查看进程信息

lsof是一个用于显示系统中打开的文件和进程的命令。它可以列出当前系统中打开文件的相关信息,如进程ID、文件描述符、文件类型、文件大小、文件所属用户、文件的读写状态等等。lsof命令可以帮助用户识别哪些进程正在使用某个文件或目录,以及查看系统中打…

谈谈微前端

相关问题 为什么要用微前端微前端的优缺点 回答关键点 独立开发 独立运行 独立部署 自治 微前端是一种架构理念,它将较大的前端应用拆分为若干个可以独立交付的前端应用。这样的好处是每个应用大小及复杂度相对可控。在合理拆分应用的前提下,微前端能…

基于监控视频的车辆检测

目前常用的基于监控视频的车辆检测方法分为两类:基于运动信息的车辆检测方法和基于特征信息的车辆检测方法。基于运动信息的车辆检测方法主要包括光流法、帧差法和背景法等。基于特征的车辆检测,是以统计机器学习理论为基础的车辆检测方法,通…

Java面试题:描述Java 14中的模式匹配及其使用场景

Java 14是继Java 12和Java 13之后,继续引入了模式匹配作为预览特性的版本。模式匹配是一种新的语法结构,用于简化对象的比较和类型检查,它可以在instanceof表达式和switch语句中使用。模式匹配的目的是提高代码的可读性和简化复杂的条件语句。…

提升和改善学习效率和记忆力

提升和改善学习效率和记忆力是一个多方面的过程,需要综合考虑方法、食物、生活习惯等多个方面。以下是一些具体的建议: 一、方法篇 设定明确的学习目标:清晰的目标有助于你集中注意力,更有效地利用学习时间。采用多样化学习方式…

【二分查找】Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置【中等】

在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(…

SRE职能描述以及个人见解

1.SRE 职能描述 SRE 到底是什么?这是一个最早由 Google 提出的概念,我的理解是,用软件解决运维问题。标准化,自动化,可扩展,高可用是主要的工作内容。这个岗位被提出的时候,想解决的问题是打破…

【Java基础学习】面向对象编程

开始时间: April 10, 2024 结束时间: April 16, 2024 阶段: Done 基础部分 类与对象的关系 类是抽象的,概念的,代表一类事物对象是具体的,实际的,代表一个具体事物(实例)类是对象的模板,对象…

JSON基础入门

简介: JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,通常用于在不同系统之间进行数据交换。它基于JavaScript语言的子集,但已成为独立于语言的格式,因此可以通过多种编程语言进行解析和生成。 JSON的…

Python 数学应用(四)

原文:zh.annas-archive.org/md5/123a7612a4e578f6816d36f968cfec22 译者:飞龙 协议:CC BY-NC-SA 4.0 第十一章:其他主题 在本章中,我们将讨论一些在本书前几章中没有涉及的主题。这些主题大多涉及不同的计算方式以及优…