docker基礎命令,常用操作
阿新 • • 發佈:2019-01-20
dea 數據 解釋 作者 push 進行 commit 生成 urn
docker基礎命令
使用docker鏡像
獲取鏡像
從docker registry獲取鏡像的命令是docker pull。命令格式是: docker pull [選項][docker registry地址] 倉庫名:標簽 docker register地址:地址的格式一般是 域名:端口,默認地址是docker hub 倉庫名:倉庫名是兩段格式,用戶名/軟件名,如果不寫用戶,默認docker hub用戶名是library,也就是官方鏡像
列出服務器所有的鏡像文件
# 列出所有的imaga文件 docker image ls 等同與 docker images 刪除所有的image文件 docker image rm [imagename]
docker命令學習
刪除docker鏡像(必須刪除依賴這個鏡像的容器記錄)
docker rmi 鏡像id/鏡像名
運行鏡像,且產生一個容器記錄,且進入容器空間內
docker run -it centos /bin/bash -it 交互式的終端,代表我可以在容器中輸入命令 /bin/bash 指定shell解釋器
創建一個容器,在容器內安裝一個vim工具
# 運行鏡像, docker run -it centos /bin/bash # 安裝vim yum install vim #退出 exit
提交這個容器,創建新的image
docker commit 059fdea031ba chaoyu/centos-vim # 059fdea031ba 為上述容器id, 後面的是新的image文件名
查看已提交的鏡像記錄
docker images
基於這個擁有vim的鏡像,創建新的容器
docker run -it 479 /bin/bash # 479 為擁有vim的鏡像id, 後續為路徑
導出當前系統的鏡像文件,可以傳輸給其他人
docker save shenzhenqishi1qi/centos-vim > /opt/centos-vim.tar.gz
.其他人或者自己可以導入這個鏡像文件
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
docker基礎命令,常用操作