獲取鏡像python
從docker registry獲取鏡像的命令是docker pull。命令格式是: docker pull [選項][docker registry地址] 倉庫名:標籤 docker register地址:地址的格式通常是 域名:端口,默認地址是docker hub 倉庫名:倉庫名是兩段格式,用戶名/軟件名,若是不寫用戶,默認docker hub用戶名是library,也就是官方鏡像
列出服務器全部的鏡像文件linux
# 列出全部的imaga文件 docker image ls 等同與 docker images 刪除全部的image文件 docker image rm [imagename]
刪除docker鏡像(必須刪除依賴這個鏡像的容器記錄)web
docker rmi 鏡像id/鏡像名
運行鏡像,且產生一個容器記錄,且進入容器空間內docker
docker run -it centos /bin/bash -it 交互式的終端,表明我能夠在容器中輸入命令 /bin/bash 指定shell解釋器
建立一個容器,在容器內安裝一個vim工具shell
# 運行鏡像, docker run -it centos /bin/bash # 安裝vim yum install vim #退出 exit
提交這個容器,建立新的imagejson
docker commit 059fdea031ba chaoyu/centos-vim # 059fdea031ba 爲上述容器id, 後面的是新的image文件名
查看已提交的鏡像記錄flask
docker images
基於這個擁有vim的鏡像,建立新的容器ubuntu
docker run -it 479 /bin/bash # 479 爲擁有vim的鏡像id, 後續爲路徑
導出當前系統的鏡像文件,能夠傳輸給其餘人vim
docker save shenzhenqishi1qi/centos-vim > /opt/centos-vim.tar.gz
.其餘人或者本身能夠導入這個鏡像文件centos
docker load < /opt/centos-vim.tar.gz
建立啓動容器的方式有2種
1.基於鏡像建立新的容器 2.對於已運行的容器,進行啓停 docker stop 容器id docker start 容器id
運行centos鏡像生成容器並執行 echo hehe
#這條命令意思是:建立一個只運行一次的容器 docker run centos /bin/echo "hehe"
運行一個容器記錄,且給與名字
docker run --name mydocker -it centos /bin/bash#啓動一個bash終端,容許用戶進行交互
運行一個ubuntu容器
1.查看系統的版本信息 cat /etc/redhat-release #這個命令查看紅帽系列的系統 cat /etc/os-release 2.運行一個ubuntu容器 docker run -it ubuntu /bin/bash
刪除容器記錄
docker rm 容器id docker -aq #列出全部容器記錄的id docker stop `docker ps -aq` #中止全部正在運行的容器 docker rm `docker ps -aq` #一次性刪除全部容器記錄 docker rmi `docker images -aq` #一次性刪除全部本地的鏡像記錄
暴露容器端口,端口映射
-P 參數會隨機映射端口到容器開放的網絡端口 docker run -d -P training/webapp python app.py -d 後臺運行 -P 端口映射, 隨機映射 ,物理機的隨機端口:容器內暴露的端口 若是本地沒有鏡像文件,docker run會自動幫咱們下載鏡像 在docker run centos [root@qishione ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e3e0be2b22a8 training/webapp "python app.py" 2 seconds ago Up 1 second 0.0.0.0:32769->5000/tcp qishiweb 只要我訪問宿主機的32769端口也就是訪問到了容器內的5000端口
指定端口映射,啓動容器應用
docker run -d -p 9999:5000 --name my9999webapp training/webapp python app.py
training/webapp 這個鏡像文件,咱們基於這個鏡像,運行了一個flask web app
1.基於ubuntu 14.04的操做系統 FROM ubuntu:14.04 2.默認進入了/opt/webapp目錄 RUN cd /opt/webapp 3.在這個目錄下存放了Procfile app.py requirements.txt tests.py 4.經過容器內的命令,運行一個後臺程序 python app.py 5.最終這個鏡像,生成了一個web容器 6.數據掛載 -v 宿主機的文件夾:容器內的文件夾 -p 端口映射 宿主機的端口:容器內的端口 7. docker port 82e 查看容器的端口映射關係
發佈docker鏡像到docker hub
1.登陸odcker hub倉庫,註冊一個用戶,用於存放本身的docker鏡像 2.在linux中登陸docker docker login #輸入帳號密碼 3.修改本地鏡像的名字,推送到docker hub docker tag docker.io/hello-world yuchao163/qishi1qi-hello-docker 4.推送本地鏡像到共有倉庫 docker push yuchao163/qishi1qi-hello-docker 5.仍和人均可以隨意下載這個鏡像 docker pull yuchao163/qishi1qi-hello-docker
搭建私有docker倉庫,提交本地鏡像
1.下載一個docker官方私有倉庫鏡像 docker pull registry 2.運行一個docker私有容器倉庫 docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry -d 後臺運行 -p 端口映射 宿主機的5000:容器內的5000 -v 數據卷掛載 宿主機的 /opt/data/registry :/var/lib/registry registry 鏡像名 3.修改docker的配置文件,讓他支持http方式,上傳私有鏡像 vim /etc/daemon.json 寫入以下內容 { "registry-mirrors": ["http://f1361db2.m.daocloud.io"], "insecure-registries":["192.168.11.37:5000"] } 4.修改docker的服務配置文件 vim /lib/systemd/system/docker.service 找到[service]這一代碼區域塊,寫入以下參數 [Service] EnvironmentFile=-/etc/docker/daemon.json 5.從新加載docker服務 systemctl daemon-reload 6.重啓docker服務 重啓docker服務,全部的容器都會掛掉 重啓docker服務,全部的容器都會掛掉 重啓docker服務,全部的容器都會掛掉 systemctl restart docker 7.修改本地鏡像的tag標記,往本身的私有倉庫推送 docker tag docker.io/yuchao163/hello-world-docker 192.168.11.37:5000/xiayuhao 8.下載私有倉庫的鏡像 docker pull 192.168.11.37:5000/xiayuhao
編寫dockerfile,構建本身的鏡像,運行flask程序
1.在宿主機中,編寫一個flask代碼文件,和Dockerfile cd /opt/dockertest/ touch flasktest.py from flask import Flask app=Flask(__name__) @app.route('/') def hello(): return "i love china" if __name__=="__main__": app.run(host='0.0.0.0',port=8080) 2.構建dockerfile 1.指引一個基礎的系統鏡像centos 2.定義做者標籤 3.解決環境依賴關係,安裝python-setuptools 4.安裝flask模塊 easy_install flask 5.準備代碼文件到容器中 COPY flasktest.py /opt/ 6.切換到/opt目錄下 workdir /opt 7.運行代碼 python flasktest.py 3.dockerfile內容以下 [root@qishione dockertest]# cat Dockerfile FROM centos LABEL maintainer="深圳騎士1期" RUN yum install python-setuptools -y RUN easy_install flask COPY flasktest.py /opt/ WORKDIR /opt EXPOSE 8080 CMD ["python","flasktest.py"] 4.構建鏡像文件,找到當前目錄的Dockerfile,開始構建 docker build -t qishi1qi/flask-web . 5.基於這個鏡像,生成容器實例 docker run -d -p 7777:8080 945 6.推送這個鏡像到私有倉庫 docker tag qishi1qi/flask-web 192.168.11.37:5000/qishi1qi-flaskweb docker push 192.168.11.37:5000/qishi1qi-flaskweb