文章目录
镜像管理基础
// 提示:此操作需要建立在已经安装docker的基础上操作
先拉取centos镜像然后,在创建一个HTTPD容器
[root@192 ~]# docker pull centos
[root@192 ~]# docker images
[root@192 ~]# docker run -tid --name httpd centos
3f26116ea842060f1ee1dc4cf27f4b0e226dc7c3677ee000872e9a02496540de
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f26116ea842 centos "/bin/bash" 20 seconds ago Up 19 seconds httpd
[root@192 ~]#
进入到这个容器
[root@192 ~]# docker exec -it 3f26116ea842 /bin/bash
[root@3f26116ea842 /]#
配置一下阿里云的yum源
[root@3f26116ea842 yum.repos.d]# ls
CentOS-Linux-AppStream.repo CentOS-Linux-FastTrack.repo
CentOS-Linux-BaseOS.repo CentOS-Linux-HighAvailability.repo
CentOS-Linux-ContinuousRelease.repo CentOS-Linux-Media.repo
CentOS-Linux-Debuginfo.repo CentOS-Linux-Plus.repo
CentOS-Linux-Devel.repo CentOS-Linux-PowerTools.repo
CentOS-Linux-Extras.repo CentOS-Linux-Sources.repo
[root@3f26116ea842 yum.repos.d]# rm -rf *
[root@3f26116ea842 yum.repos.d]# ls
[root@3f26116ea842 yum.repos.d]#
[root@3f26116ea842 yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:--100 2495 100 2495 0 0 5709 0 --:--:-- --:--:-- --:--:-- 5696
[root@3f26116ea842 yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/[root@2a78bfed50b5 yum.repos.d]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
Failed to set locale, defaulting to C.UTF-8
CentOS-8.5.2111 - Base - mirrors.aliyun 4.5 MB/s | 4.6 MB 00:01
CentOS-8.5.2111 - Extras - mirrors.aliy 58 kB/s | 10 kB 00:00
CentOS-8.5.2111 - AppStream - mirrors.a 7.1 MB/s | 8.4 MB 00:01
epel-release-latest-8.noarch.rpm 152 kB/s | 24 kB 00:00
Dependencies resolved.
========================================================================
Package Arch Version Repository Size
========================================================================
Installing:
epel-release noarch 8-16.el8 @commandline 24 k
Transaction Summary
========================================================================
Install 1 Package
Total size: 24 k
Installed size: 34 k
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : epel-release-8-16.el8.noarch 1/1
Running scriptlet: epel-release-8-16.el8.noarch 1/1
Many EPEL packages require the CodeReady Builder (CRB) repository.
It is recommended that you run /usr/bin/crb enable to enable the CRB repository.
Verifying : epel-release-8-16.el8.noarch 1/1
Installed:
epel-release-8-16.el8.noarch
Complete!
[root@3f26116ea842 yum.repos.d]#
CentOS-Base.repo
[root@3f26116ea842 yum.repos.d]# sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
[root@3f26116ea842 yum.repos.d]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
[root@3f26116ea842 yum.repos.d]# yum clean all
Failed to set locale, defaulting to C.UTF-8
18 files removed
[root@3f26116ea842 yum.repos.d]# yum makecache
Failed to set locale, defaulting to C.UTF-8
CentOS-8.5.2111 - Base - mirrors.aliyun 5.1 MB/s | 4.6 MB 00:00
CentOS-8.5.2111 - Extras - mirrors.aliy 85 kB/s | 10 kB 00:00
CentOS-8.5.2111 - AppStream - mirrors.a 6.5 MB/s | 8.4 MB 00:01
Extra Packages for Enterprise Linux Mod 792 kB/s | 341 kB 00:00
Extra Packages for Enterprise Linux 8 - 7.7 MB/s | 13 MB 00:01
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Metadata cache created.
[root@3f26116ea842 yum.repos.d]#
开启另一台终端,下载httpd的源码包
wget https://downloads.apache.org/httpd/httpd-2.4.54.tar.gz
wget https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz
wget https://downloads.apache.org/httpd/httpd-2.4.53.tar.gz
[root@192 ~]# ls
anaconda-ks.cfg apr-util-1.6.1.tar.gz
apr-1.7.0.tar.gz httpd-2.4.54.tar.gz
[root@192 ~]#
把一些安装apache需要的包复制到容器里面
[root@192 ~]# docker cp apr-1.7.0.tar.gz httpd:/root
[root@192 ~]# docker cp apr-util-1.6.1.tar.gz httpd:/root
[root@192 ~]# docker cp httpd-2.4.54.tar.gz httpd:/root
[root@192 ~]#
[root@3f26116ea842 ~]# ls /root
anaconda-ks.cfg apr-1.7.0.tar.gz httpd-2.4.54.tar.gz
anaconda-post.log apr-util-1.6.1.tar.gz original-ks.cfg
[root@3f26116ea842 ~]#
安装需要的工具包
[root@3f26116ea842 ~]# yum groups mark -y install 'Development Tools'
[root@3f26116ea842 ~]# yum -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ make
[root@3f26116ea842 ~]# useradd -r -M -s /sbin/nologin apache
[root@3f26116ea842 ~]#
编译apache
编译apr
[root@3f26116ea842 ~]# tar xf apr-1.7.0.tar.gz
[root@3f26116ea842 ~]# cd apr-1.7.0
[root@3f26116ea842 apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@3f26116ea842 apr-1.7.0]# make
[root@3f26116ea842 apr-1.7.0]# make install
编译apr-util
[root@3f26116ea842 ~]# tar xf apr-util-1.6.1.tar.gz
[root@3f26116ea842 ~]# cd apr-util-1.6.1
[root@3f26116ea842 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
[root@3f26116ea842 apr-util-1.6.1]# make
[root@3f26116ea842 apr-util-1.6.1]# make install
编译httpd
[root@3f26116ea842 ~]# tar xf httpd-2.4.54.tar.gz
[root@3f26116ea842 ~]# cd httpd-2.4.54
./configure --prefix=/usr/local/apache --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
[root@3f26116ea842 httpd-2.4.54]# make
[root@3f26116ea842 httpd-2.4.54]# make install
设置环境变量
[root@3f26116ea842 ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/apache.sh
[root@3f26116ea842 ~]# source /etc/profile.d/apache.sh
[root@3f26116ea842 ~]# which httpd
/usr/local/apache/bin/httpd
[root@3f26116ea842 ~]# ln -s /usr/local/apache/include/ /usr/include/apache
[root@3f26116ea842 ~]# vi /usr/local/apache/conf/httpd.conf
ServerName www.example.com:80 //此行取消注释
[root@3f26116ea842 ~]# apachectl start
[root@3f26116ea842 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
[root@3f26116ea842 ~]# vi start.sh
[root@3f26116ea842 ~]# cat start.sh
#!/bin/sh
/usr/local/apache/bin/httpd
/bin/bash
[root@3f26116ea842 ~]# chmod a+x start.sh
[root@3f26116ea842 ~]#
制作httpd镜像并创建一个能够访问web网站的容器
制作httpd的镜像
[root@192 ~]# docker commit -a 'sean <2710027506@qq.com>' -c 'CMD ["/usr/local/apache/bin/httpd","-D","FOREGROUND"]' -p http httpd:v0.1
sha256:fee06c8cc8280543b37e18f8b39fa658ac975c6b6602730d4daa72fc587b9e25
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd v0.1 fee06c8cc828 8 seconds ago 650MB
centos latest 5d0da3dc9764 10 months ago 231MB
使用httpd的镜像创建新的容器并设置一个web网站
[root@192 ~]# docker run -d --name web -p 80:80 httpd:v0.1
1108e730811b739a82b5d8030b310a2b342f7bef948d01a2688a6b1fb94cc453
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1108e730811b httpd:v0.1 "/usr/local/apache/b…" 6 seconds ago Up 5 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp web
3f26116ea842 centos "/bin/bash" 16 minutes ago Up 16 minutes http
[root@192 ~]#
上传镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd v0.1 fee06c8cc828 10 hours ago 650MB
centos latest 5d0da3dc9764 10 months ago 231MB
[root@localhost ~]# docker tag fee06c8cc828 0b8d572d1c7d/httpd:v0.1
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
0b8d572d1c7d/httpd v0.1 fee06c8cc828 10 hours ago 650MB
httpd v0.1 fee06c8cc828 10 hours ago 650MB
centos latest 5d0da3dc9764 10 months ago 231MB
[root@localhost ~]# docker push 0b8d572d1c7d/httpd:v0.1
The push refers to repository [docker.io/0b8d572d1c7d/httpd]
17aa4b240083: Pushed
74ddd0ec08fa: Mounted from library/centos
v0.1: digest: sha256:05a4fbeff8864fd9a98bff4488e65ef4d32f1148190f3b6c2061120f8979d17b size: 742
[root@localhost ~]#