dockerfile(1)
dockerfile(1)
文章目录
- dockerfile(1)
- 一、整理ubuntu的软件包管理命令和服务管理命令
- ubuntu的软件包管理命令和服务管理命令
- apt-get命令
- apt-cache命令:
- 服务管理
- service
- systemctl
- 二、整理alpine的软件包管理命令和服务管理命令
- 简介
- apk包管理命令
- 三、使用dockerfile,alpine作为基础镜像,部署nginx。
- 1、apk 安装nginx
- 2、源代码编译安装nginx
一、整理ubuntu的软件包管理命令和服务管理命令
ubuntu的软件包管理命令和服务管理命令
apt-get命令
apt-get是debian,ubuntu发行版的包管理工具,与红帽中的yum工具非常类似,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。apt-get在安装包的时候是根据/etc/apt/sources.list文件中指定的源来寻找的安装包,你可以根据自己的需要对这个文件进行修改。
apt-get命令一般需要root权限执行,所以一般跟着sudo命令。
- sudo apt-get install package 安装包
- sudo apt-get install package - - reinstall 重新安装包
- sudo apt-get -f install 修复安装"-f = ——fix-missing"
- sudo apt-get remove package 删除包
- sudo apt-get remove package - - purge 删除包,包括删除配置文件等
- sudo apt-get autoremove package 删除包及其依赖的软件包
- sudo apt-get update 更新源
- sudo apt-get upgrade 更新已安装的包
- sudo apt-get dist-upgrade 升级系统
- sudo apt-get dselect-upgrade 使用 dselect 升级
- sudo apt-get build-dep package 安装相关的编译环境
- sudo apt-get source package 下载该包的源代码
- sudo apt-get clean && sudo apt-get autoclean 清理无用的包
- sudo apt-get check 检查是否有损坏的依赖
apt-get包含的常用的一些工具:
工具 | 说明 |
---|---|
install | 其后加上软件包名,用于安装一个软件包 |
update | 从软件源镜像服务器上下载/更新用于更新本地软件源的软件包列表 |
upgrade | 升级本地可更新的全部软件包,但存在依赖问题时将不会升级,通常会在更新之前执行一次update |
dist-upgrade | 解决依赖关系并升级(存在一定危险性) |
remove | 移除已安装的软件包,包括与被移除软件包有依赖关系的软件包,但不包含软件包的配置文件 |
autoremove | 移除之前被其他软件包依赖,但现在不再被使用的软件包 |
purge | 与remove相同,但会完全移除软件包,包含其配置文件 |
clean | 移除下载到本地的已经安装的软件包,默认保存在/var/cache/apt/archives/ |
autoclean | 移除已安装的软件的旧版本软件包 |
apt-get常用的参数:
参数 | 说明 |
---|---|
-y | 自动回应是否安装软件包的选项,在一些自动化安装脚本中使用这个参数将十分有用 |
-s | 模拟安装 |
-q | 静默安装方式,指定多个q或者-q=#,#表示数字,用于设定静默级别,这在你不想要在安装软件包时屏幕输出过多时很有用 |
-f | 修复损坏的依赖关系 |
-d | 只下载不安装 |
–reinstall | 重新安装已经安装但可能存在问题的软件包 |
–install-suggests | 同时安装APT给出的建议安装的软件包 |
apt-cache命令:
apt-cache主要用于搜索包。
- sudo apt-cache search package 搜索包
- sudo apt-cache show package 获取包的相关信息,如说明、大小、版本等
- sudo apt-cache showpkg package 显示软件包信息,包括包的依赖关系,包的提供者,
- sudo apt-cache pkgnames 打印软件包列表中所有包的名字
- sudo apt-cache dumpavail 打印软件包列表中所有包的简介信息
- sudo apt-cache depends package 了解使用依赖
- sudo apt-cache rdepends package 是查看该包被哪些包依赖
服务管理
历史版本中的 Linux 对服务的操作是通过 service 来完成的;
目前 Linux 新的发行版已经内置了systemctl 来操作服务。
service
可通过sercice SCRIPT COMMAND命令管理服务,SCRIPT 为/etc/init.d/中存放的可执行脚本文件:
- service SCRIPT start:启动服务
- service SCRIPT stop:停止服务
- service SCRIPT restart:重启服务
- service SCRIPT status:查看状态服务
此外还可以用service --status-all显示出所有系统服务列表,其中”+”代表服务正在运行,而”-“代表服务处于关闭状态,”?”代表根本没有状态。
用户可以添加自定义服务,将相应脚本放置于/etc/init.d/文件夹下
systemctl
- systemctl status:显示系统状态
- systemctl start 服务:立即激活服务
- systemctl stop 服务:立即停止服务
- systemctl restart 服务:重启服务
- systemctl enable 服务:开机自动激活服务
- systemctl disable 服务:取消开机自动激活服务
- systemctl daemon-reload:重新载入 systemd,扫描新的或有变动的服务
能用 systemctl 管理的服务需要有一个.service文件,在 Ubuntu 中,通常该文件位于/etc/systemd/system文件夹下。
二、整理alpine的软件包管理命令和服务管理命令
简介
Alpine Linux 是一个社区开发的面向安全应用的轻量级Linux发行版,关注安全,性能和资源效能。 Alpine 的意思是“高山的”,它采用了musl libc和busybox以减小系统的体积和运行时资源消耗,同时Alpine 还提供了包管理工具 apk 查询和安装软件包。
apk包管理命令
- apk --help可以查看完整的包管理命令
- apk info 列出所有已安装的软件包
- -a:显示完整的软件包信息
- -e:检测软件包的安装
- -L:列出软件包的内容
- -R:列出指定包的依赖
- -s:显示软件包大小
- -d:显示软件包的描述
- –who-owns:显示指定文件属于的包
- apk del:删除一个软件
- apk apk update 更新最新本地镜像源
- apk upgrade 升级软件
- apk search 搜索可用软件包,搜索之前最好先更新镜像源
- bash-4.3# apk search #查找所以可用软件包
- bash-4.3# apk search -v #查找所以可用软件包及其描述内容
- bash-4.3# apk search -v ‘acf*’ #通过软件包名称查找软件包
- bash-4.3# apk search -v -d ‘docker’ #通过描述文件查找特定的软件包
- apk add 从仓库中安装最新软件包,并自动安装必须的依赖包,也可以从第三方仓库添加软件包
- bash-4.3# apk add curl busybox-extras #软件以空格分开这里,这里列举我们用的最多的curl和telnet
- bash-4.3# apk add --no-cache curl
- bash-4.3# apk add mongodb --update-cache --repository http://mirrors.ustc.edu.cn/alpine/v3.6/main/ --allow-untrusted #从指定镜像源拉取
- 安装指定版本软件包
- bash-4.3# apk add mongodb=4.0.5-r0
- bash-4.3# apk add ‘mongodb<4.0.5’
- bash-4.3# apk add ‘mongodb>4.0.5’
- 升级指定软件包
- bash-4.3# apk add --upgrade busybox #升级指定软件包
三、使用dockerfile,alpine作为基础镜像,部署nginx。
1、apk 安装nginx
1.拉取alpine的镜像
[root@yyy ~]# docker pull alpine:latest
latest: Pulling from library/alpine
59bf1c3509f3: Pull complete
Digest: sha256:21a3deaa0d32a8057914f36584b5288d2e5ecc984380bc0118285c70fa8c9300
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
[root@yyy ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kod a1 67525234891f 10 hours ago 566MB
kod z1 67525234891f 10 hours ago 566MB
alpine latest c059bfaa849c 9 months ago 5.59MB
centos 7 eeb6ee3f44bd 11 months ago 204MB
2.编写dockerfile
[root@yyy ~]# cat dockerfile
FROM alpine:latest
RUN echo "https://mirrors.aliyun.com/alpine/v3.11/main/" > /etc/apk/repositories && \
echo "https://mirrors.aliyun.com/alpine/v3.11/community/" >> /etc/apk/repositories :&& \
apk add nginx && mkdir /run/nginx
EXPOSE 80
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
3.构建镜像,镜像名称为nginx:v1
[root@yyy ~]# docker build -t nginx:v1 .Successfully built 28903cc1935f
Successfully tagged nginx:v1[root@yyy ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx v1 28903cc1935f 12 seconds ago 7.72MB
alpine latest c059bfaa849c 9 months ago 5.59MB
4.运行容器,指定映射端口80:80
[root@yyy ~]# docker run -d --name zhengbichao -p 80:80 nginx:v1
9d08e7159077af19a036fd9cface19eaca6cff138947670295a598fac9213323
[root@yyy ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d08e7159077 nginx:v1 "/usr/sbin/nginx -g …" 5 seconds ago Up 4 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp zhengbichao
[root@yyy ~]#
5.进入容器
[root@yyy ~]# docker exec -it zhengbichao /bin/sh
/ # cd /etc/nginx/conf.d/
/etc/nginx/conf.d # ll
/bin/sh: ll: not found
/etc/nginx/conf.d # ls
default.conf
/etc/nginx/conf.d # cat default.conf
# This is a default site configuration which will simply return 404, preventing
# chance access to any other virtualhost.server {listen 80 default_server;listen [::]:80 default_server;# Everything is a 404location / {index index.html; (更改这里)}# You may need this to prevent return 404 recursion.location = /404.html {internal;}
}/etc/nginx/conf.d # nginx -s reload
2、源代码编译安装nginx
1.将nginx-1.16.1.tar.gz,pcre-8.44.tar.gz拖进虚拟机
[root@yyy ~]# rz -E
rz waiting to receive.
[root@yyy ~]# rz -E
rz waiting to receive.
[root@yyy ~]# ll
total 3060
-rw-r--r--. 1 root root 289 Aug 31 21:32 dockerfile
-rw-r--r--. 1 root root 1032630 Aug 31 09:57 nginx-1.16.1.tar.gz
-rw-r--r--. 1 root root 2090750 Aug 31 09:57 pcre-8.44.tar.gz
2.编写Dockerfile
[root@yyy ~]# cat Dockerfile
FROM alpine:latest
ADD nginx-1.16.1.tar.gz /home/
ADD pcre-8.44.tar.gz /home/
RUN echo http://mirrors.aliyun.com/alpine/v3.10/main/ > /etc/apk/repositories && \echo http://mirrors.aliyun.com/alpine/v3.10/community/ >> /etc/apk/repositories
RUN apk update && apk upgrade && \apk add gcc g++ make && \addgroup -S nginx && \adduser -DHS -s /sbin/nologin -G nginx nginx && \cd /home/nginx-1.16.1 && \./configure --prefix=/usr/local/nginx --with-pcre=/home/pcre-8.44 --without-http_gzip_module && \make && make install && \ln -s /usr/local/nginx/sbin/nginx /usr/sbin/ && \mkdir -p /usr/local/nginx/conf/vhost/
EXPOSE 80
CMD ["/usr/sbin/nginx","-g","daemon off;"]
3.构建镜像,镜像名称为nginx:z1
[root@yyy ~]# docker build -t nginx:z1 .Successfully built cd67ed7f9b24
Successfully tagged nginx:z1[root@yyy ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx z1 cd67ed7f9b24 46 seconds ago 197MB
nginx v1 28903cc1935f About an hour ago 7.72MB
alpine latest c059bfaa849c 9 months ago 5.59MB
4.运行容器,指定映射端口80:80
[root@yyy ~]# docker run -d --name zhengbichao -p 80:80 nginx:z1
303a50c8b7d7561dabec454cde7669ee20aabf367b254b5b911015db7ac966fd
[root@yyy ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
303a50c8b7d7 nginx:z1 "/usr/sbin/nginx -g …" 2 seconds ago Up 1 second 0.0.0.0:80->80/tcp, :::80->80/tcp zhengbichao
dockerfile(1)相关推荐
- 【VMCloud云平台】拥抱Docker(六)关于DockerFile(1)
之前我们说过通过Docker pull来下载Images创建容器,这一次我们来聊下如何通过DockerFile创建Images再创建容器,Dockerfile也是Docker中的重点,使用Docker ...
- Docker学习总结(2)——Docker实战之入门以及Dockerfile(二)
csphere/php-fpm:5.4 # cd docker-training/php-fpm/ # ls Dockerfile
- Docker学习(8)——构建镜像(Dockerfile、commit)
前言 在前面的文章里我们已经详细介绍了构建镜像的两种常用方式,下面我们将具体看看如何实际操作,以及镜像的优化方式. 一.commit封装镜像 以ubuntu的镜像为例: 1.导入ubuntu镜像 [r ...
- docker学习(八)深入浅出理解 dockerFille
dockerFile是什么 一条条指令参数构成的文件 是构建镜像的新方法 dockerFile(原材料):面向开发 -> docker(交付品)镜像为交付标准-> docker容器(运行态 ...
- Docker(二):Docker常用命令之镜像的创建:Dockerfile 与 commit
相关阅读: Docker(一):Docker的安装与常用命令 Docker(二):Docker常用命令之镜像的创建:Dockerfile 与 commit Docker(三):Docker镜像导入与导 ...
- 从零开始学习docker(零)简单介绍Dockerfile
如果不使用docker,面临的问题有: 部署非常慢 成本非常高 资源浪费 难于迁移和扩展 可能会被限定硬件厂商 虚拟化技术的优点: 虚拟化技术出现以后,一个物理机可以部署多个App,每个App独立运行 ...
- Docker(五)如何构建Dockerfile
摘自 https://mp.weixin.qq.com/s/_hq9dPe6390htN8BTkoQeQ 一.Dockerfile的指令集 由于Dockerfile中所有的命令都是以下格式:INSTR ...
- 『中级篇』Dockerfile详解(17)
一般的,Dockerfile 分为四部分:基础镜像信息.维护者信息.镜像操作指令和容器启动时执行指令. ####官网学习 https://docs.docker.com/engine/referenc ...
- Docker解析及轻量级PaaS平台演练(三)--Dockerfile编写
在本篇中将介绍Dockerfile的编写 除了通过修改Image,创建Container,在打包成Image来创建我们需要的Image之外 我们还可以编写Dockerfile文件,通过build来创建 ...
最新文章
- 4.html 头部随笔
- 实验楼项目课学习笔记-jQuery翻转拼图游戏
- springboot web项目_Vue、Spring Boot开发小而完整的Web前后端分离项目实战12
- 黑马程序员——Java集合基础知识之Map
- ActiveMq Windows 配置优化
- 深度学习数据集中数据差异大_使用差异隐私来利用大数据并保留隐私
- GDAL源码剖析(一)
- C# 图书管理系统(MySQL)——代码(四)
- 服务器虚拟化对硬件有要求,虚拟主机对硬件有要求吗
- 互联网企业的职位职位之间的相互关系
- 视觉素材-10 个值得珍藏的高清桌面壁纸网站
- 博士申请 | 美国北卡州立大学胥栋宽老师招收深度学习方向全奖博士/硕士/博后...
- Android中获取系统所认为的最小滑动距离TouchSlop
- 让他们有事可做( 云中漫步zai)
- 软件性能测试的几种方法
- 视频号运营的6个小技巧你都知道哪些?国仁楠哥
- Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL ser
- 【音频特征】语音特征小结
- 我们真的需要会议耳机吗?
- SpringCloud - 服务注册中心
热门文章
- 计算机显示usb无法识别,计算机不断弹出无法识别的USB设备的解决方案
- ideapad720s在接通电源情况下,关机后自动重启的解决办法
- 弘辽科技:拼多多再出“新招”
- ORA-04063: package body “SYS.DBMS_DATAPUMP“ has errors
- CS224N Assignment3 #3: Dependency Parsing(2022 winter)
- 习惯养成android软件,六款有助于养成良好习惯的APP(安卓)
- db2 jdbc 连接池_【转】java jdbc连接db2
- 还在花冤枉钱找人做电子签名?看这儿,教你制作纯手写电子签名
- 纯css实现的娃娃机web前端html页面源码
- 将数据库中用户表 名称设置对应的拼音账号sql