Docker

docker

疫情期间在家办公,docker搭建工作环境应用整理。很多也是来自简书和网络。这里给需要的人~

docker的宿主系统是centos,为什么可以运行ubuntu的镜像呢?

首先需要区分Linux内核与Linux发行版

    Linux内核是Linux操作系统的核心, 负责硬件管理, 比如管理内存、管理磁盘(文件系统)、管理CPU(进程)等等...

    Linux发行版是在Linux内核的基础上添加了一些工具软件,比如图形界面、函数库、软件包管理系统等等...

CentOS与Ubuntu是不同的Linux发行版, 它们都是基于Linux内核, 只是添加的工具软件不同。比如, 他们的软件包管理系统不同, CentOS使用yum命令安装软件, 而Ubuntu使用apt-get命令安装软件。

因此CentOS与Ubuntu的内核是相同的(版本可能不同), 只是所安装的软件不同, 即文件系统不同。

Docker容器技术是基于Linux内核实现的, 它主要用到了两个内核模块:

    Namespace: 用于容器的隔离, 例如PID Namespace使得容器中的进程无法感知宿主机以及其他容器中的进程。

    Cgroups: 用于容器的资源控制, 比如限制容器所使用的内存大小或者CPU个数。

在CentOS上运行基于Ubuntu镜像的容器时, 容器使用了CentOS主机的内核以及Ubuntu镜像, Ubuntu镜像中安装了Ubuntu的各种软件(apt-get)。

基础镜像

根据Dockerfile制作:

//www.greatytc.com/p/482aed037ac4

//Dockerfile制作镜像   入口点和CMD的区别,入口点可以携带docker run的参数, RUN 指令,用于运行程序,但二者运行的时间点不同;CMD 在docker run 时运行,而非docker build;

sudo docker build -t xxx/xxx:1.0 .      //制作命令,后面的.为当前Dockerfile所在目录

https://hub.docker.com///官方镜像web

https://blog.csdn.net/nklinsirui/article/details/80967677

docker 运行ubuntu镜像

https://www.cnblogs.com/lsgxeva/p/8746644.html

docker run ubuntu    /   docker pull ubuntu    //获取

docker run -i -t ubuntu /bin/bash    //运行

docker镜像没有ifconfig,ping

apt-get update

apt install net-tools       # ifconfig 

apt install iputils-ping     # ping

docker 制作新镜像

docker commit <container id> <image name>    

sudo docker commit 85074428a3dc ifconfig-ubuntu

把正在用的系统制作成镜像:

https://blog.csdn.net/tiantao2012/article/details/82425660

1.选定制作成镜像的系统

2.系统进行格式转化并压缩,执行如下命令,生成一个镜像的centos7-base.tar的文件

tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos7-base.tar /

3.docker import 导入   把镜像文件centos7-base.tar放到装有docker的系统上

docker import      centos7-base.tar         自定义images名字

4.docker images 查看后使用即可

docker run -it  --name    images名字        /bin/bash

docker镜像导出导入

$ sudo docker save -o /home/user/images/ubuntu_14.04.tar ubuntu:14.04  //导出

$ sudo docker load --input ubuntu_14.04.tar//导入

docker容器导入导出

docker export

docker import

docker import/export 和load/save 区别

docker save images_name:将一个镜像导出为文件,再使用docker load命令将文件导入为一个镜像,会保存该镜像的的所有历史记录。比docker export命令导出的文件大,很好理解,因为会保存镜像的所有历史记录。

docker export container_id:将一个容器导出为文件,再使用docker import命令将容器导入成为一个新的镜像,但是相比docker save命令,容器文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照。

docker与宿主机copy

1、从容器里面拷文件到宿主机?

     答:在宿主机里面执行以下命令

             docker cp 容器名:要拷贝的文件在容器里面的路径       要拷贝到宿主机的相应路径 

     示例: 假设容器名为testtomcat,要从容器里面拷贝的文件路为:/usr/local/tomcat/webapps/test/js/test.js,  现在要将test.js从容器里面拷到宿主机的/opt路径下面,那么命令应该怎么写呢?

     答案:在宿主机上面执行命令

docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt

2、从宿主机拷文件到容器里面

      答:在宿主机里面执行如下命令

              docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径

       示例:假设容器名为testtomcat,现在要将宿主机/opt/test.js文件拷贝到容器里面的/usr/local/tomcat/webapps/test/js路径下面,那么命令该怎么写呢?

       答案:在宿主机上面执行如下命令     

docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js

3.需要注意的是,不管容器有没有启动,拷贝命令都会生效。

docker pull的镜像保存在哪里?

https://www.cnblogs.com/Rightsec/p/10222950.html

https://blog.csdn.net/ncdx111/article/details/79878098//docker 本地镜像导入,导出

docker java镜像选型参考

https://blog.csdn.net/boling_cavalry/article/details/94320638

docker pull openjdk:8-jdk-slim

docker run...

docker run  Imageid     //根据image运行容器

docker ps  ;   docker ps -a    //查询容器,-a显示所有包括没有运行的容器

docker start 容器id   //启动已经exit的容器

docker exec -it 容器id bash  //bash 交互执行已经启动的容器,注意-it 的位置,如果不能执行,将-it放到前面

TIPs:退出时,使用[ctrl + D],这样会结束docker当前线程,容器结束,可以使用[ctrl + P + Q]退出而不终止容器运行  //持续运行

持续运行:

docker run -p 80:8090 -it -d xxx/xxx:1.2 /bin/bash   //这个方式会启动后台持续运行,记得加-d和/bin/bash运行

docker run -it imageid     //这个方式会有一个/bin/bash启动,因而docker start时会持续运行

docker start containerid  //启动

docker restart containerid  //重启

docker attach containerid  //附着

docker rm containerid  // 删除容器

docker rmi imageid       //删除image,-f 强制

docker run mysql

https://www.cnblogs.com/haoprogrammer/p/11008786.html

# docker pull mysql:5.7.26    //拉取mysql镜像

# docker run -p 3306:3306 --name mysql-5.7.26 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26//启动mysql 容器

# docker exec -it mysql-5.7.26 bash //启动容器bash

mysql -uroot -p123456    //运行mysql

other ref:

docker run -p 13306:3306 --name my-mysql -v $PWD/conf:/etc/mysql -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26

-v $PWD/conf:/etc/mysql将主机当前目录下的 conf/ 挂载到容器的 /etc/mysql       (conf目录为mysql的配置文件,不挂载也没问题)

docker mysql容器重启后数据会丢失,commit也不行,需要映射host目录,参考: 数据持久化:https://blog.csdn.net/weixin_39791387/article/details/93375560

docker container配置修改

docker container update --restart=always 容器名字 #更改restart项为always,经测试,这个配置支持os重启后自动启动

docker container update --restart=no   容器名字   #取消自动重启

docker维护

docker inspect 容器id  //查看容器的配置,如ip地址,端口等

docker中启动关闭删除所有的容器命令

docker中 启动所有的容器命令

dockerstart $(docker ps -a | awk'{ print$1}'| tail -n +2)

docker中 关闭所有的容器命令

dockerstop $(docker ps -a | awk'{ print$1}'| tail -n +2)

docker中 删除所有的容器命令            -f//强制

dockerrm $(docker ps -a | awk'{ print$1}'| tail -n +2)

docker中 删除所有的镜像  

dockerrmi $(docker images | awk'{print$3}'|tail -n +2)

tail -n +2 表示从第二行开始读取

docker构建多平台镜像

//www.greatytc.com/p/ff865a5a051b

docker日志

https://blog.csdn.net/warrior_0319/article/details/79713155

docker资源限制

https://blog.csdn.net/wuyundong123/article/details/103401930//ubuntu 开启资源限制

docker拷贝本地文件或者文件夹到容器

docker cp /home/xxx targetContainerId:/home/xxx

搭建本地镜像库

https://blog.csdn.net/tellmewhyto/article/details/80822188

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351