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.mfbz.cn/a/557977.html

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

相关文章

mysql 重复单号 统计

任务: 增加重复件统计分析: 统计展示选择时间范围内重复1次、重复2次、重复3次、重复4次、重复5次及以上的数据量 17、统计出现的重复次数 增加重复件统计分析: 统计展示选择时间范围内重复1次、重复2次、重复3次、重复4次、重复5次及以上的数…

Scala 04 —— 函数式编程底层逻辑

函数式编程 底层逻辑 该文章来自2023/1/14的清华大学交叉信息学院助理教授——袁洋演讲。 文章目录 函数式编程 底层逻辑函数式编程假如...副作用是必须的?函数的定义函数是数据的函数,不是数字的函数如何把业务逻辑做成纯函数式?函数式编程…

【Linux系统】地址空间 Linux内核进程调度队列

1.进程的地址空间 1.1 直接写代码&#xff0c;看现象 1 #include<stdio.h>2 #include<unistd.h>3 4 int g_val 100;5 6 int main()7 {8 int cnt 0;9 pid_t id fork();10 if(id 0)11 {12 while(1)13 {14 printf(&…

牛客Linux高并发服务器开发学习第三天

静态库的使用(libxxx.a) 将lession04的文件复制到lession05中 lib里面一般放库文件 src里面放源文件。 将.c文件转换成可执行程序 gcc main.c -o app main.c当前目录下没有head.h gcc main.c -o app -I ./include 利用-I 和head所在的文件夹&#xff0c;找到head。 main.c…

进程控制相关

进程终止 进程终止时&#xff0c;操作系统要释放对应进程申请的相关内核数据结构和对应的代码和数据。其不本质就是释放进程申请的系统资源。 进程终止的常见方式&#xff1a; 1、代码运行完毕且结果正确。 2、代码运行完毕但结果不正确。 3、代码没运行完&#xff0c;进程…

【Entity Framework】闲话EF中批量配置

【Entity Framework】闲话EF中批量配置 文章目录 【Entity Framework】闲话EF中批量配置一、概述二、OnModelCreating中的批量配置元数据API的缺点 三、预先约定配置忽略类型默认类型映射预先约定配置的限制约定添加新约定替换现有约定约定实现注意事项 四、何时使用每种方法进…

通过实例学C#之ArrayList

介绍 ArrayList对象可以容纳若干个具有相同类型的对象&#xff0c;那有人说&#xff0c;这和数组有什么区别呢。其区别大概可以分为以下几点&#xff1a; 1.数组效率较高&#xff0c;但其容量固定&#xff0c;而且没办法动态改变。 2.ArrayList容量可以动态增长&#xff0c;但…

使用go和消息队列优化投票功能

文章目录 1、优化方案与主要实现代码1.1、原系统的技术架构1.2、新系统的技术架构1.3、查看和投票接口实现1.4、数据入库MySQL协程实现1.5、路由配置1.6、启动程序入口实现 2、压测结果2.1、设置Jmeter线程组2.2、Jmeter聚合报告结果&#xff0c;支持11240/秒吞吐量2.3、Jmeter…

vue 一键更换主题颜色

这里提供简单的实现步骤&#xff0c;具体看自己怎么加到项目中 我展示的是vue2 vue3同理 在 App.vue 添加 入口处直接修改 #app { // 定义的全局修改颜色变量--themeColor:#008cff; } // 组件某些背景颜色需要跟着一起改变&#xff0c;其他也是同理 /deep/ .ant-btn-primar…

『FPGA通信接口』汇总目录

Welcome 大家好&#xff0c;欢迎来到瑾芳玉洁的博客&#xff01; &#x1f611;励志开源分享诗和代码&#xff0c;三餐却无汤&#xff0c;顿顿都被噎。 &#x1f62d;有幸结识那个值得被认真、被珍惜、被捧在手掌心的女孩&#xff0c;不出意外被敷衍、被唾弃、被埋在了垃圾堆。…

【Linux学习】Linux编辑器-vim使用

这里写目录标题 1. &#x1f320;vim的基本概念&#x1f320;2. vim的基本操作&#x1f320;3.vim异常处理&#x1f320;4. vim正常模式的相关命令&#x1f320;5. vim末&#xff08;底&#xff09;行模式相关命令 vi/vim都是多模式编辑器&#xff0c;不同的是vim是vi的升级版本…

开发与产品的战争之自动播放视频

开发与产品的战争之自动播放视频 起因 产品提了个需求&#xff0c;对于网站上的宣传视频&#xff0c;进入页面就自动播放。但是基于我对chromium内核的一些浅薄了解&#xff0c;我当时就给拒绝了: “浏览器不允许”。&#xff08;后续我们浏览器默认都是chromium内核的&#…

2024年华中杯数模竞赛A题完整解析(附代码)

2024年华中杯数模竞赛A题 基于动态优化的太阳能路灯光伏板朝向以最大化能量收集研究摘要问题重述问题分析模型假设符号说明 代码问题一 完整资料获取 基于动态优化的太阳能路灯光伏板朝向以最大化能量收集研究 摘要 随着可再生能源技术的发展&#xff0c;太阳能作为一种清洁的…

C++类与对象(中)②

目录 1.赋值运算符重载 1.1运算符重载 1.2赋值运算符重载 1.2.1赋值运算符重载格式 1.2.2赋值运算符只能重载成成员函数不能重载成全局函数 1.2.3同拷贝函数一样&#xff0c;如果类是形如日期类这样变量全是内置类型的&#xff0c;赋值运算符就必须自己实现&#xff0c;…

Spectre-v1 简介以及对应解决措施

文章目录 前言一、Variant 1: Exploiting Conditional Branches.二、 BACKGROUND2.1 Out-of-order Execution2.2 Speculative Execution2.3 Branch Prediction2.4 The Memory Hierarchy2.5 Microarchitectural Side-Channel Attacks2.6 Return-Oriented Programming 三、 ATTAC…

大学生简历大赛演讲稿(6篇)

大学生简历大赛演讲稿&#xff08;6篇&#xff09; 以下是六篇大学生简历大赛演讲稿的范文&#xff0c;供您参考&#xff1a; 范文一&#xff1a;展现真我&#xff0c;点亮未来 尊敬的评委、亲爱的同学们&#xff1a; 大家好&#xff01; 今天&#xff0c;我站在这里&#xf…

区块链实验室(35) - 编译solana for ARM64版

今天终于成功编译solana for arm64版&#xff0c;编译时间巨长。见下图所示。编译步骤详见solana网站https://github.com/solana-labs/solana和https://docs.solanalabs.com/。

【C语言】【数据结构】项目实践——贪吃蛇游戏(超详细)

前言 本篇博客我们来实现一个小游戏项目——贪吃蛇&#xff0c;相信肯定很多人都玩过&#xff0c;那么整个贪吃蛇是怎么实现出来的那&#xff0c;这个项目用到了很多方面的知识&#xff1a;C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32 API等。我们就通过这…

nodejs工具模块学习

util 是一个Node.js 核心模块&#xff0c;提供常用函数的集合&#xff1b; util.inspect(object,[showHidden],[depth],[colors]) 是一个将任意对象转换 为字符串的方法&#xff0c;通常用于调试和错误输出&#xff1b; 如果只有一个参数 object&#xff0c;是要转换的对象&…

网工内推 | 兴业银行总行正编,科技运维部,硕士以上学历

01 兴业银行 招聘岗位&#xff1a;安全渗透专家 职责描述&#xff1a; 1.负责牵头组织本行红蓝对抗、攻防演练等工作&#xff1b; 2.负责牵头制定有效的渗透测试方案&#xff0c;开展对本行防御体系的验证工作&#xff1b; 3.负责牵头组织本行各类应用系统的渗透测试与漏洞扫…
最新文章