linux docker 使用详解

docker 相对一vm 来说是更轻量级的 隔离,他和host 共享linux 和硬件 不需要虚拟hw。

在嵌入式中比较常用的是lxc

在linux 下是docker

1. 查看容器的root用户密码

docker logs <容器名or ID> 2>&1 | grep '^User: ' | tail -n1

因为docker容器启动时的root用户的密码是随机分配的。所以,通过这种方式就可以得到redmine容器的root用户的密码了

  1. 查看容器日志

docker logs -f <容器名orID>

3. 查看正在运行的容器

docker ps 查看运行的容器

docker ps -a为查看所有的容器,包括已经停止的。

4. 删除单个容器

docker rm <容器名orID>

删除所有容器

docker rm $(docker ps -a -q)

5. 停止、启动、杀死一个容器

docker stop <容器名orID>

docker start <容器名orID>

docker kill <容器名orID>

6. 查看所有镜像

docker images

7. 删除镜像

docker rm 镜像名:tag

删除所有镜像

docker rmi (docker images \| grep none \| awk '{print 3}' | sort -r)

8.运行一个新容器,同时为它命名、端口映射、文件夹映射。以redmine镜像为例

docker run --name redmine -p 9003:80 -p 9023:22 -d -v /var/redmine/files:/redmine/files -v /var/redmine/mysql:/var/lib/mysql /bin/bash

9. 拉取镜像

docker pull <镜像名:tag>

10. 当需要把一台机器上的镜像迁移到另一台机器的时候,需要保存镜像与加载镜像。

adocker save busybox-1 > /home/save.tar

使用scp将save.tar拷到机器b上,然后:

docker load < /home/save.tar

导出容器

docker export 7691a814370e > ubuntu.tar

导入容器

cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0

11. 构建自己的镜像docker build -t <镜像名> <Dockerfile路径>如Dockerfile在当前路径:

docker build -t new_image_name:tag .

12.从container中拷贝文件出来

docker cp 7bb0e258aefe:/etc/debian_version ./ (7bb0e258aefe是容器)

13. 查看仓库中含有ubuntu单词的image

Docker search ubuntu

14.将一个container固化为一个新的image

docker commit <container> new_image:tag

Docker编译自己的image的命令:

  1. docker pull <镜像名:tag> ##从仓库下载自己image

  2. docker build -t new_image_name:tag . ##编译自己的image

  3. docker images ##查看自己所有的image

  4. docker run -it image_name:tag -p 9003:22 -v /var/redmine/files:/redmine/files /bin/bash ##运行自己的image

想要制作自己的image 必须有原始的docker image 这个可以从github 上下载你想要的image (根据linux 版本等去选择)

然后再本地自己去install app 和开启一些服务。

然后你只需要commit 然后save 成新的image 就可以release 给别人使用了。

docker commit -m="has update" e218edb10161 ubuntu:v2: 提交镜像

=》 这里的 第一个参数 "-m"是更改的描述,第二个 参数"e218edb10161"是container 的id,第三个参数"ubuntu:v2" 是 提交的iamge 的名字和tag。 (容器名可以用docker ps 来查看,image 可以用docker image ls 来查看)

docker save -o /root/images/jenkins_image.tar jenkins/jenkins:latest : 导出docker编译环境

=》 这里第一个参数-o 是 生成的新image 第二个参数 是 要从container 中拉出来的image 名字和版本。

这里注意save 时 要保持docker 有足够的空间大于原来imamge 的大小 (docker 剩余空间大小 检查方法 docker info | grep "Docker Root Dir" 然后 df -hal 那个目录 比如 df -hal /var/lib/docker) 空间不够会报no left space 的error。

相关推荐
呉師傅6 分钟前
【使用技巧】Adobe Photoshop 2024调整缩放与布局125%后出现点菜单项漂移问题的简单处理
运维·服务器·windows·adobe·电脑·photoshop
云姜.7 分钟前
线程和进程的关系
java·linux·jvm
heartbeat..9 分钟前
JVM 性能调优流程实战:从开发规范到生产应急排查
java·运维·jvm·性能优化·设计规范
忆~遂愿27 分钟前
CANN metadef 核心解析:计算图原型定义、算子元数据抽象与异构系统互操作机制
docker·容器
小Tomkk36 分钟前
数据库 变更和版本控制管理工具 --Bytebase 安装部署(linux 安装篇)
linux·运维·数据库·ci/cd·bytebase
赌博羊36 分钟前
ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32‘ not found
linux·运维·gnu
木卫二号Coding38 分钟前
第七十九篇-E5-2680V4+V100-32G+llama-cpp编译运行+Qwen3-Next-80B
linux·llama
getapi1 小时前
Ubuntu 22.04 服务器的系统架构是否为 amd64 x86_64
linux·服务器·ubuntu
消失的旧时光-19431 小时前
Linux 入门核心命令清单(工程版)
linux·运维·服务器
艾莉丝努力练剑1 小时前
【Linux:文件】Ext系列文件系统(初阶)
大数据·linux·运维·服务器·c++·人工智能·算法