製作自定義鏡像包的兩種方式
1、創建容器並對容器進行修改,然後打包容器爲鏡像
2、使用Dockerfile編排鏡像
自定義鏡像
1、創建一個容器 docker run -itd centos
2、進入容器進行修改配置 docker exec -it 容器id bash
停止容器,不是必須的
3、創建鏡像並驗證 docker commit 容器id 鏡像名稱:標籤
4、打包鏡像 docker save 鏡像名稱 > 包名.tar
使用 Dockerfile 編排鏡像
給容器配置 yum 源
查看宿主機的 yum 源配置
[rhel7]
name=rhel
baseurl=ftp://192.168.4.254/rhel7
enabled=1
gpgcheck=0
練習: 創建一個容器,配置 yum 源,並且安裝 ifconfig 命令
使用 Dockerfile 編排鏡像
FROM centos #基於centos鏡像進行編排(如沒有就搜索並下載,有就直接使用)
RUN rm -f /etc/yum.repos.d/*.repo #運行刪除文件命令
ADD local.repo /etc/yum.repos.d/local.repo #將當前目錄的local.repo文件複製添加到 docker裏的指定目錄
RUN yum install net-tools vim-enhanced psmisc iproute -y #運行安裝軟件命令
編排命令
docker build -t myos:latest . #開始編排,使用當前目錄下面的Dockerfile文件進行編排,編排後的鏡像名爲myos,標籤爲latest
基於 myos 創建 httpd 的鏡像
FROM myos
RUN yum install -y httpd
ENV EnvironmentFile=/etc/sysconfig/httpd
EXPOSE 80
CMD ["/usr/sbin/httpd", "-DFOREGROUND"]
Dockerfile語法格式
– FROM:基礎鏡像
– MAINTAINER:鏡像創建者信息
– EXPOSE:開放的端口
– ENV:設置變量
– ADD:複製文件到鏡像
– RUN:製作鏡像時執行的命令,可以有多個
– WORKDIR:定義容器默認工作目錄
– CMD:容器啓動時執行的命令,僅可以有一條CMD
– ENTRYPOINT 配置容器啓動後執行的命令,並且不可被 docker run 提供的參數覆蓋。每個 Dockerfile 中只能有一個 ENTRYPOINT,當指定多個時,只有最後一個起效。
– USER ,USER 命令用於設置運行容器的 UID。# Usage: USER [UID] ; USER 751
– VOLUME , VOLUME 命令用於讓你的容器訪問宿主機上的目錄。# Usage: VOLUME ["/dir_1", "/dir_2" ..] ; VOLUME ["/my_files"]
創建私有倉庫
1 添加配置文件 /etc/docker/daemon.json
touch /etc/docker/daemon.json
{
"insecure-registries" : ["192.168.4.10:5000"]
}
重啓 docker 服務
systemctl restart docker
2 啓動私有倉庫
docker run -d -p 5000:5000 registry
3 測試上傳鏡像到私有倉庫
3.1 標記一下哪個鏡像要上傳
docker tag busybox:latest 鏡像服務器ip:5000/busybox:latest
3.2 上傳鏡像
docker images
docker push 鏡像服務器ip:5000/busybox:latest
4 私有倉庫的使用
查看私有倉庫裏面的 鏡像
http://192.168.4.10:5000/v2/_catalog
查看私有倉庫裏面鏡像的標籤
http://192.168.4.10:5000/v2/myos/tags/list
5 使用私有倉庫運行容器
5.1 添加配置文件 /etc/docker/daemon.json
touch /etc/docker/daemon.json
{
"insecure-registries" : ["192.168.4.10:5000"]
}
5.2 重啓 docker 服務
systemctl restart docker
5.3 啓動容器
docker run -itd 192.168.4.10:5000/myos:latest
docker run -itd 192.168.4.10:5000/myos:python
容器的存儲與端口映射
存儲卷的映射
docker run -d -v /var/webroot:/var/www/html myos:httpd
博主個人博客網址 :http://blog.doveop.com/