linux学习-docker学习之dockerfile(代码片段)

丢爸 丢爸     2023-01-15     494

关键词:

dockerfile命令
  • FROM:基础镜像
    • FROM centos:6.9
    • FROM centos@ImageID
  • RUN:构建镜像过程中运行的命令
    • bash程序–使用&&连接多个命令
#仅限bash程序,多个命令通过&&连接
RUN cd /etc/yum.repos.d && mkdir bak && mv *.repo bak/ && echo '[local]\\nname=linuxbase\\nbaseurl=ftp://192.168.88.101/centos6new\\ngpgcheck=0\\nenabled=1\\n'>/etc/yum.repos.d/local.repo && yum ma
kecache fast && yum install -y openssh-server
  • 非bash程序–通过[]来写,第一个参数为命令,后面通过,分隔书写参数,此处方式可以将程序命令写入bash脚本,通过执行脚本实现相应功能
RUN ["mysqld","--initialize-insecure","--user=mysql","--basedir=/usr/local/mysql","--datadir=/data/mysql/data"]
  • CMD :使用镜像启动容器时运行的命令
  • EXPOSE :暴露端口
  • COPY:拷贝文件至镜像
  • ADD:拷贝文件至镜像(可以实现解压压缩文件)

dockerfile构建centos_sshd

使用dockerfile创建centos6.9_sshd
#创建目录存放dockerfile
[root@docker ~]# mkdir -p /opt/dockerfile/centos6.9
#创建dockerfile文件
[root@docker centos6.9]# vim dockerfile
# CentOS6.10-SSHDv1.0
FROM centos@f1af727749c4
RUN cd /etc/yum.repos.d && mkdir bak && mv *.repo bak/ && echo -e "[local]\\nname=linuxbase\\nbaseurl=ftp://192.168.88.101/centos6new\\ngpgcheck=0\\nenabled=1\\n">/etc/yum.repos.d/local.repo && yum ma
kecache fast && yum install -y openssh-server
RUN echo "123456" | passwd --stdin root
RUN /etc/init.d/sshd start && /etc/init.d/sshd stop
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]

通过dockerfile生成镜像
[root@docker centos6.9]# docker image build -t "tye/centos6.9-sshd:v1.0" ./
[root@docker centos6.9]# docker image ls
REPOSITORY           TAG       IMAGE ID       CREATED              SIZE
tye/centos6.9-sshd   v1.0      51762c7dec10   About a minute ago   332MB
centos               6.10      f1af727749c4   4 weeks ago          194MB
centos               7         eeb6ee3f44bd   4 weeks ago          204MB
centos               latest    5d0da3dc9764   4 weeks ago          231MB
nginx                1.14      295c7be07902   2 years ago          109MB
ubuntu               15.10     9b9cb95443b5   5 years ago          137MB
#可以通过--rm参数实现容器关闭后自动销毁
[root@docker centos6.9]# docker container run -it --rm b3072f59a537 /bin/bash
#删除镜像时,使用以下命令可以删除掉通过dockerfile生成的中间镜像(前提是先删除正式镜像后,才能删除中间镜像,否则会报错)
[root@docker ~]# docker image rmi `docker image ls -a | grep 'none' | awk 'print $3'`
通过新创建的镜像启动容器
[root@docker centos6.9]# docker run -d -p 222:22 51762c7dec10
d74c1bcd77410c9812e6dbf148c4a55dcf8bd083e3787ee098aa0485344f3c73
[root@docker centos6.9]# docker container ls
CONTAINER ID   IMAGE                 COMMAND               CREATED              STATUS              PORTS                                   NAMES
d74c1bcd7741   51762c7dec10          "/usr/sbin/sshd -D"   3 seconds ago        Up 3 seconds        0.0.0.0:222->22/tcp, :::222->22/tcp     distracted_jepsen
查看连接情况
#通过ssh连接宿主机的222端口,可以连接表示容器的sshd服务正常
[C:\\~]$ ssh 192.168.88.101 222
Connecting to 192.168.88.101:222...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

WARNING! The remote SSH server rejected X11 forwarding request.
[root@d74c1bcd7741 ~]# 

dockerfile构建lamp

#dockerfile---lamp
# centos6.10_sshd_LAMP
#基础镜像
FROM centos:6.10
#配置本地yum源
RUN cd /etc/yum.repos.d && mkdir bak && mv *.repo bak/ && echo -e "[local]\\nname=linuxbase\\nbaseurl=ftp://192.168.88.101/centos6new\\ngpgcheck=0\\nenabled=1\\n">/etc/yum.repos.d/local.repo && yum makecache fast && yum install -y openssh-server httpd mysql mysql-server php php-mysql
#启动sshd服务,并创建root密码
RUN /etc/init.d/sshd start && /etc/init.d/sshd stop && echo '123456' | passwd --stdin root
#初使化mysql,并创建授权用户和discuz数据库
RUN /etc/init.d/mysqld start && mysql -e "grant all on *.* to root@'%' identified by '123456';" && mysql -e "grant all on *.* to discuz@'%' identified by '123456';" && mysql -e "create database discuz charset utf8;"
RUN /etc/init.d/httpd start
#拷贝php测试文件至httpd网站目录下
COPY index.php /var/www/html/
#拷贝discuz压缩文件至httpd网站目录下并解压
ADD bbs.tar /var/www/html/
#拷贝启动脚本至一个目录,为后面CMD启动做准备
COPY init.sh /var/www/html/
#暴露sshd,mysqld,httpd端口
EXPOSE 22
EXPOSE 3306
EXPOSE 80
CMD ["/bin/bash","/var/www/html/init.sh"]

#init.sh内容如下
#!/bin/bash
/etc/init.d/mysqld start
/etc/init.d/httpd start
/usr/sbin/sshd -D

linux学习-docker学习之数据卷(代码片段)

Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层。如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,... 查看详情

linux快速入门打开你的学习之道

相信看到这篇文章的你一定是想要学习Linux,或者已经在学习Linux的人了,那我们就可以一起探讨一下,学习Linux如何快速入门呢?首先,希望大家弄清楚自己为什么要学习Linux,有的人是因为兴趣,有的人是因为Linux比较好找工... 查看详情

linux学习-kubernetes学习之kubectl命令(代码片段)

kubernetes版本1.22.3问题1:Errorfromserver:Get"https://192.168.88.103:10250/containerLogs/default/client/client":dialtcp192.168.88.103:10250:connect:noroutetohost解决方法#经查看因为192.168.88.103上面fi 查看详情

docker学习之数据管理

Docker数据管理如何在Docker内部以及容器之间管理数据,在容器中管理数据主要有两种方式:数据卷(Volumes)挂载主机目录(Bindmounts)数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性:数据... 查看详情

docker学习之docker-compose(代码片段)

docker-compose安装1.Mac/Windows:安装docker的时候附带安装了。2.Linux:curlhttps://github.com/docker/composeLinux安装docker-composecurl-Lhttps://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname-s)-$(uname-m)>/usr/local/bin/docker-compose直接将对应平台的... 查看详情

docker学习之docker容器基本使用

Docker学习之Docker容器基本使用新建容器并启动命令格式:dockerrun--optionsrepository:tag后台运行命令格式:-d已存在的容器相关操作启动:dockercontainerstartcontainerid停止:dockercontainerstopcontainerid重启:dockercontainerrestartcontainerid查看后台... 查看详情

docker学习之初识container

查看详情

linux学习-kubernetes学习之kubernetes安装部署(代码片段)

基于Centos7.5下kubeadm安装和部署kubernetes使用三台虚拟机进行部署(一台master,两台node)虚拟机IPmaster:192.168.88.101node1:192.168.88.102node2:192.168.88.103修改/etc/hosts配置#在三台虚拟机的/etc/hosts文件中添加主机名解析192.168.8 查看详情

python3-学习之linux极简教程(学习准备)(代码片段)

前言:此篇文章是为Python学习做铺垫,主要学习内容:01.操作系统历史概述02.购买和连接云服务器03.Bash和Linux命令04.获取命令的帮助05.文件操作相关命令-106.文件操作相关命令-207.使用包管理工具安装软件08.配置阿里云防火... 查看详情

docker学习之-什么是docker

docker是一个用来装应用的容器,就想杯子可以装水,笔筒可以装笔,书包可以放书一样,可以把网站放到docker里,可以把任何应用放到docker里。  查看详情

docker学习之仓库

仓库Repository是集中存放镜像的地方。Docker官方目前维护公共仓库叫dockerhub,可以在https://cloud.docker.com免费注册账号;DockerHub登录执行命令dockerlogin 交互式输入用户名密码登录dockerhub退出登录dockerlogout拉取镜像pulldockersearch<NAME&g... 查看详情

从零入门机器学习之linux系统详解

...。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,科大讯飞比赛第三名,CCF比赛第四名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过... 查看详情

从零入门机器学习之linux系统详解

...。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,科大讯飞比赛第三名,CCF比赛第四名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过... 查看详情

docker学习之镜像

Docker运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker会从镜像仓库下载该镜像。获取镜像#dockerpullubuntu:16.04运行#dockerrun-itubuntu:16.04bash-i交互式操作-t建立终端bash进入交互式shell[email protected]:/# iduid=0(root... 查看详情

docker学习之--日常命令

1、查看镜像sudodockerimages  sudopulldocker.io#下载镜像  sudopushdocker.io#上传镜像  sudodocker save -o centos_with_net.tar  镜像Id#把一个镜像保存在本地  sudodocker load <centos_with_net. 查看详情

机器学习之寻找合适的学习方法

...以为往后的时间都是奉献给java了,却不想到闯入了机器学习的殿堂。那年夏天,烈日炎炎,穿越1000公里来到陌生的城市漂泊,希望这一切都是值得的。  本人java出身,略懂c,linux,数据库,技术渣渣一枚。  希望人生的每一... 查看详情

docker安全学习之——docker基础知识

前言:本篇以Nginx镜像的制作过程为例,介绍了Docker容器的基础知识。一、手工制作一个包含nginx服务的镜像并启动容器我使用的centos7.6,目前提供的docker版本为1.13.1,版本是比较老的,因此我从互联上下载了比较新的20.10.9相关... 查看详情

linux学习之centos--虚拟机下的centos如何上网

...5377/archive/2013/04/05/3001148.html 这篇随笔应该说跟CentOS的学习关系不是很大,但是却关系到了我接下来的CentOS学习。。。。。。自从在虚拟机中安装了CentOS以来,就想着能不能在虚拟机里面和宿主windows一样上网,当时可是花费... 查看详情