1. 去官網下載repo 2. 更改成國內鏡像baseurl=https://download.docker.com/linux/ 3. 有可能須要安裝依賴包 yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.66-1.el7.noarch.rpm 4. yum install docker-ce
1. /etc/docker/daemon.json { "registry-mirrors": ["https://registry.docker-cn.com"] } Docker鏡像加速 2. 啓動 # systemctl start docker 3. 查看 # docker help # docker info 4. Docker經常使用 # docker image --help # docker search nginx (https://hub.docker.com/) nginx 頂級倉庫 jwilder/nginx-proxy 私有倉庫 # docker image pull nginx:1.14-alpine (下載alpine image, alpine是一個體積特別小的Nginx版本,沒有任何調試工具,在實際工做中,根據自已的須要生成image) # docker pull quay.io/coreos/flannel:v0.10.0-amd64 (到quay.io網站下載鏡像,這個網站是經常使用的第三方鏡像) # docker image pull busybox:latest # docker image ls (顯示下載的image) # docker image ls --no-trunc (顯示詳細信息) # docker container --help # docker container ls (顯示容器) # docker container ps (顯示容器) # docker container run --help # docker network list (網絡查詢) docker0: 默認是NAT的網橋 # docker run --name b1 -it busybox:latest (以b1的名字運行image busybox,而且是交互式界面) / # ls (進入到busybox容器的shell) mkdir /data/html -p vim /data/html/index.html (在容器裏生成主頁) httpd -f -h /data/html (啓動b1容器裏和httpd) # docker inspect b1 (在host上查看b1容器的IP) # curl 172.17.0.2 (訪問b1容器的網頁) 在容器裏exit,退出容器 # docker ps -a (顯示全部容器,運行的和中止的) # docker container start -i -a b1 (啓動容器) # docker kill b1 (強制中止容器) # docker rm b1 (永久刪除容器b1) # docker run --name web1 -d nginx:1.14-alpine (啓動nginx容器,若是本地沒有下載nginx image,只要repo指定爲hub.docker.com, 會自動下載,在容器中的進程不能運行在後臺,由於是惟一進程,是支撐一個容器的骨架) # docker run --name kdvsor1 -d redis:4-alpine (運行redis容器) # docker exec -it kdvsor1 /bin/sh # redis-cli # docker logs web1 (在host中查看web1容器的日誌)
Docker鏡像含有啓動容器所須要的文件系統及其內容,所以,其主要做用建立並啓動docker容器。
1. bootfs:用於系統引導的文件系統,包括bootloader和kernel,容器啓動完成後會被卸載以節約內存資源。 2. rootfs:位於bootfs之上,表現爲docker容器的根文件系統。rootfs由內核掛載爲只讀模式,然後經過聯合掛載技術額外掛載一個可寫層; 位於下層的鏡像稱爲父鏡像,最底層的稱爲基礎鏡像 最上層爲可讀寫層,基下層均爲只讀層
啓動容器時,Docker Daemon會試圖從本地獲取相關的鏡像,本地鏡像不存在時,其將從Registry中下載該鏡像並保存到本地
Registry用於保存docker鏡像,包括鏡像的層次結構和元數據: 1. Sponsor Registry:第三方的registry,供客戶和Docker社區使用 2. Mirror Registry:第三方的registry,只讓客戶使用 3. Vendor Registry:由發佈Docker鏡像的供應商提供的registry 4. Private Registry:經過設有防火牆和額外的安全層的私有實體提供的registry 注意:每一個倉庫能夠包含多個Tag,可是每個Tag只能屬於一個倉庫
Docker Registry中的鏡像一般由研發人員製做,然後推送至公共或私有Registry上保存,供其餘人員使用,而後部署到生產環境
1. Dockerfile
2. 基於容器製做
3. Docker Hub automated buildshtml
# docker run --name b1 -it busybox # / # mkdir -p /data/html # / # vi /data/html//index.html # docker commit -p b1 (製做image,此鏡像仍是以bysybox的sh啓動) # docker tag 542b72efce7e linuxdevops/httpd:v1.0-1 (給鏡像標籤) # docker tag linuxdevops/httpd:v1.0-1 linuxdevops/httpd:latest (加另外一個標籤) # docker run --name t1 -it linuxdevops/httpd:v1.0-1 (啓動作的鏡像) # / # ls /data/html/index.html # docker commit -a "evanliang" -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' -p b1 linuxdevops/httpd:v1.0-2 # docker run --name t2 -it linuxdevops/httpd:v1.0-2 # curl 172.17.0.4 (新作的linuxdevops/httpd:v1.0-2能直接啓動httpd) 4. 在dockerhub上建立帳戶 # docker tag f43e5c3f987c liangjindong/httpd (tag名字必定要和dockerhub上建立的REPOSITORY名字一致) # docker login -u liangjindong (登陸dockerhub) Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded # docker push liangjindong/httpd (若是不帶tag,全部image孝會上傳到dockerhub) # 在dockerhub上,能夠看到
# 同時,能夠用國內阿里雲的鏡像服務dev.aliyun.com
# 配置鏡像加速:
針對Docker客戶端版本大於 1.10.0 的用戶
您能夠經過修改daemon配置文件/etc/docker/daemon.json來使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://sah48iqf.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
同時,能夠在阿里雲上建立鏡像倉庫,上傳:
# sudo docker tag 0dfafbbae68a registry.cn-beijing.aliyuncs.com/liangjindong/httpd:latest (用阿里雲指定的tag)
# sudo docker login --username=liangjindong registry.cn-beijing.aliyuncs.com (登陸)
# sudo docker push registry.cn-beijing.aliyuncs.com/liangjindong/httpd (上傳鏡像)
在阿里雲上檢查,成功
5. docker鏡像打包分發
# docker save -o myimages.gz liangjindong/httpd:latest liangjindong/httpd:v1.0
# docker load -i myimages.gz 把myimages.gz copy到另一臺docker服務器
鏡像打包分發須要提早把image本地準備好,不然運行docker run時還會去dockerhub默認的Registry下載。linux
集中存儲各類Docker鏡像 Github他Docker hub來實現鏡像的Automated Builds