這些是個人筆記,都是記錄的核心概念和使用方法
使用docker搭建開發環境將近1年了,自我感受docker的強大並不是如此,不過沒有機會將docker部署生產環境,有位架構師曾說過,最新的未必是最好的,架構要選擇最佳的,請你們也慎重。linux
Docker鏡像相似於虛擬機鏡像。每一個鏡像包括了一個基本的操做系統環境web
Docker容器相似於一個輕量級的沙箱,Docker利用容器來運行和隔離應用。能夠把容器看作一個簡易版的linux系統環境docker
Docker倉庫相似於代碼倉庫,它是Dokcer集中存放鏡像文件的場所shell
生產環境中使用Docker的過程當中,每每須要對數據進行持久化,或者須要在多個容器之間進行數據共享,這必然要涉及容器的數據管理操做
容器中管理數據主要有兩種方式:安全
docker run -d -P --name web -v /localhost-path:/server-path NAME:TAG
要讓外部訪問這些應用時,能夠經過-P或-p參數來指定端口映射。當使用-P標記時,docker會隨機映射一個49000~49900的端口到內部容器開放的網絡端口
docker run -d -P NAME:TAG
docker run -d -p 5000:5000 NAME:TAG
-p 能夠標記多個端口
docker run -d -p 5000:5000 -p 3000:80 NAME:TAG
docker run -d -p 127.0.0.1:5000:5000 NAME:TAG
使用IP::ContainerPort 綁定localhost的任意端口到容器的5000端口,本地主機會自動分配一個端口
docker run -d -p 127.0.0.1::5000 NAME:TAG
還可使用udp標記來指定udp端口網絡
docker run -d -p 127.0.0.1:5000:5000/udp NAME:TAG
docker port nostalgic_morse PORT
使用--name標記能夠爲容器自定義命名
docker run -d -P --name web NAME:TAG
docker inspect -f "{{ .Name }}" 容器id
使用--link參數可讓容器之間安全的進行交互
docker run -d --name db NAME:TAG docker run -d -P --name web --link db:db NAME:TAG
docker pull NAME[:TAG]
docker run -it NAME:TAG SERVICE
docker images
docker tag NAME:TAG NEWNAME:TAG
docker inspect NAME:TAG
docker history NAME:TAG
docker search NAME
docker rmi IMAGE
docker rm 容器ID
docker commit [OPTIONS] CONTAINER [REPOSITOPUY[:TAG]] -a , --author="" // 做者信息 -c , --change=[] -m , --message="" // 提交消息 -p , --pause=true // 提交時暫停容器運行 docker commit -m "added a new file " -a "crazy" 58fe3bd5b3e6 test:0.1
cat 本地包 | docker import - 導入的鏡像名稱
docker save -o 導出文件名 導出的鏡像
docker load --input 本地鏡像名稱 // 或者 docker load < 本地鏡像名稱
docker inspect NAME:TAG
docker stop $(docker ps -q)
docker rm $(docker ps -aq)
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
docker rmi $(docker images -q | awk '/^<none>/ { print $3 }')
docker rmi $(docker images -q)
感謝看完個人這篇白話文,這是我學習docker的過程,都是一些關鍵的命令和概念,但願能夠幫到你,有什麼問題能夠評論區討論,互相學習架構