-
基本概念
- 鏡像
Docker 鏡像就是一個(gè)只讀的模板,鏡像可以用來創(chuàng)建 Docker 容器 - 容器
容器是從鏡像創(chuàng)建的運(yùn)行實(shí)例换薄。 它可以被啟動(dòng)换可、 開始色建、 停止、 刪除宦棺。 每個(gè)容器都是相互隔離的、 保證安全的平臺 - 倉庫
倉庫是集中存放鏡像文件的場所.
倉庫注冊服務(wù)器上往往存放著多個(gè)倉庫黔帕, 每個(gè)倉庫中又包含了多個(gè)鏡像代咸,每個(gè)鏡像有不同的標(biāo)簽(tag)最大的公開倉庫是 Docker Hub, 存放了數(shù)量龐大的鏡像供用戶下載成黄。 國內(nèi)的公開倉庫包括 Docker Pool等呐芥, 可以提供大陸用戶更穩(wěn)定快速的訪問。
push命令上傳到倉庫
pull命令拉取一個(gè)鏡像
-
CENTOS 7 安裝Docker
#安裝Docker
sudo yum install docker
#啟動(dòng)Docker服務(wù)
sudo service docker start
#隨系統(tǒng)自動(dòng)加載
sudo chkconfig docker on
鏡像
1. 從倉庫獲取鏡像
命令
docker pull ubuntu:12.04
上面命令相當(dāng)于
docker pull registry.hub.docker.com/ubuntu:12.04
docker pull nginx
#創(chuàng)建一個(gè)容器,讓其運(yùn)行bash應(yīng)用
docker run -t -i ubuntu:12.04 /bin/bash
docker run -it nginx /bin/bash
#列出本地鏡像
docker images
2. 管理本地主機(jī)上的鏡像
- 修改已有的鏡像
- 先啟動(dòng)容器得到容器ID
[root@www docker]# docker run -it nginx /bin/bash
root@5f42bff05683:/#
5f42bff05683即為容器ID
- 安裝其他的應(yīng)用
- 提交更新后的副本
[root@www docker]# docker commit -m "ADD TEST" -a "ZZJ" 5f42bff05683 myrepository/nginx:20180101
sha256:e365f0423f76ee746c7226f4e164fd6f98094e636d9928290694279eb55564cf
myrepository/nginx:20180101 為:
倉庫名:tag信息
- 利用Dockerfile來創(chuàng)建鏡像
mkdir springboot_hello
touch Dockerfile
Dockerfile文件內(nèi)容
#This is a comment
FROM ubuntu:14.04
MAINTAINER Docker Newbee <newbee@docker.com>
RUN apt-get -qq update
RUN apt-get -qqy install ruby ruby-dev
RUN gem install sinatra
- #表示注釋
- FROM 表示基于哪個(gè)鏡像
- MAINTAINER 是維護(hù)者的信息
- RUN表示在創(chuàng)建中運(yùn)行
編寫完Dockerfile后用docker build生成鏡像
docker build -t="ouruser/sinatra:v2" .
- -t 標(biāo)記來添加tag
- "." 是Dockerfile所在的路徑,可以替換為其他
- ADD命令復(fù)制本地文件到鏡像
- EXPOSE命令向外部開放端口
- 用CMD命令描述容器啟動(dòng)后運(yùn)行的程序
- 用docker tag 命令修改鏡像的標(biāo)簽
如:
# put my local web site in myApp folder to /var/www
ADD myApp /var/www
# expose httpd port
EXPOSE 80
>\# the command to run
CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]
docker tag 5db5f8471261 ouruser/sinatra:devel
鏡像不能超過127層
- 導(dǎo)入本地鏡像
cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.04
- 上傳鏡像
docker push ouruser/sinatra
- 存出鏡像(保存鏡像到本地文件)
sudo docker save -o ubuntu_14.04.tar ubuntu:14.04
- 載入鏡像(將本地保存出來的鏡像導(dǎo)入到鏡像庫)
docker load --input ubuntu_14.04.tar
或者
docker load < ubuntu_14.04.tar
- 移除本地鏡像
docker rmi training/sinatra:[tag]
- 移除容器
docker rm ...
注: 移除鏡像之前要先移除該鏡像的所有容器
3. 鏡像的基本原理
Union FS
Docker容器
容器是獨(dú)立運(yùn)行的一個(gè)或一組應(yīng)用奋岁, 以及它們的運(yùn)行態(tài)環(huán)境
-
啟動(dòng)容器
-
新建并啟動(dòng)容器
[root@www springboot_hello]# docker run -it docker.io/centos:latest /bin/echo "Hello World"
Docker run在后臺的標(biāo)準(zhǔn)操作有:
- 檢查本地是否存在指定的鏡像思瘟, 不存在就從公有倉庫下載
- 利用鏡像創(chuàng)建并啟動(dòng)一個(gè)容器
- 分配一個(gè)文件系統(tǒng), 并在只讀的鏡像層外面掛載一層可讀寫層
- 從宿主主機(jī)配置的網(wǎng)橋接口中橋接一個(gè)虛擬接口到容器中去
- 從地址池配置一個(gè) ip 地址給容器
- 執(zhí)行用戶指定的應(yīng)用程序
- 執(zhí)行完畢后容器被終止
-
啟動(dòng)已終止的容器
docker start
-
守護(hù)態(tài)運(yùn)行
docker run -d docker.io/centos:latest /bin/bash -c "while true ;do echo hello world done;"
docker ps
查看容器信息
docker logs
查看容器的輸出信息
-
停止容器
docker stop
當(dāng)Docker容器中指定的應(yīng)用終結(jié)時(shí)闻伶, 容器也自動(dòng)終止
docker ps -a
可看到終止?fàn)顟B(tài)的容器
docker restart
重啟一個(gè)容器-
進(jìn)入容器
-
docker attach
但是使用 attach 命令有時(shí)候并不方便滨攻。 當(dāng)多個(gè)窗口同時(shí) attach 到同一個(gè)容器的時(shí)候, 所有窗口都會同步顯示。 當(dāng)某個(gè)窗口因命令阻塞時(shí),其他窗口也無法執(zhí)行操作了光绕。 -
nsenter
安裝命令如下:
$ cd /tmp; curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz | tar
$ ./configure --without-ncurses
$ make nsenter && sudo cp nsenter /usr/local/bin
$ wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz; tar xzvf util-
$ cd util-linux-2.24
$ ./configure --without-ncurses && make nsenter
$ sudo cp nsenter /usr/local/bin
獲取進(jìn)程的PID
PID=$(docker inspect --format "{{ .State.Pid }}" <container>)
wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker;
https://github.com/yeasy/docker_practice
-
導(dǎo)出容器快照
docker export 7691a814370e > ubuntu.tar
-
導(dǎo)入容器快照
cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0
docker import http://example.com/exampleimage.tgz example/imagerepo
注:用戶既可以使用 docker load 來導(dǎo)入鏡像存儲文件到本地鏡像庫女嘲, 也可以使用 docker import 來導(dǎo)入一個(gè)容器快照到本地鏡像庫。 這兩者的區(qū)別在于容器快照文件將丟棄所有的歷史記錄和元數(shù)據(jù)信息(即僅保存容器當(dāng)時(shí)的快照狀態(tài)) 浸锨, 而鏡像存儲文件將保存完整記錄序愚, 體積也要大拓提。 此外, 從容器快照文件導(dǎo)入時(shí)可以重新指定標(biāo)簽等元數(shù)據(jù)信息愕鼓。
-
刪除容器
docker rm -f ...
docker rm -f $(docker ps -a -q)
docker images|grep none|awk '{print $3 }'|xargs docker rmi
Docker倉庫
倉庫(Repository) 是集中存放鏡像的地方
對于倉庫地址 dl.dockerpool.com/ubuntu 來說, dl.dockerpool.com 是注冊服務(wù)器地址慧起, ubuntu 是倉庫名
Docker Hub
- 登錄
可以通過執(zhí)行 docker login 命令來輸入用戶名菇晃、 密碼和郵箱來完成注冊和登錄。 注冊成功后完慧, 本地用戶目錄的 .dockercfg 中將保存用戶的認(rèn)證信息 - 基本操作
用戶無需登錄即可通過 docker search 命令來查找官方倉庫中的鏡像谋旦, 并利用 docker pull 命令來將它下載到本地
docker search centos
私有倉庫
docker-registry 是官方提供的工具, 可以用于構(gòu)建私有的鏡像倉庫屈尼。
-
安裝運(yùn)行 docker-registry
本地安裝
yum install -y python-devel libevent-devel python-pip gcc xz-devel
python-pip install docker-registry
No package python-pip available. 解決方法
sudo yum -y install epel-release
sudo yum -y install python-pip
sudo yum clean all
解決上面問題時(shí)又報(bào)錯(cuò)
Error: Package: python-pip-7.1.0-1.el6.noarch (epel)
Requires: python(abi) = 2.6
Installed: python-2.7.5-58.el7.x86_64 (@base)
python(abi) = 2.7
python(abi) = 2.7
Available: python34-3.4.5-4.el6.i686 (epel)
python(abi) = 3.4
所以安裝Python 2.6
CentOS 7 編譯安裝Python2.6.1
centos7 python多版本切換
-
在私有倉庫上傳册着、 下載、 搜索鏡像
- docker tag 標(biāo)記一個(gè)鏡像
格式為 :
docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
如: docker tag ba58 192.168.7.26:5000/test
- 使用 docker push 上傳標(biāo)記的鏡像
docker push 192.168.7.26:5000/test
- 用 curl 查看倉庫中的鏡像
- 另外一臺機(jī)器去下載這個(gè)鏡像
docker pull 192.168.7.26:5000/test
- 可以使用 這個(gè)腳本 批量上傳本地的鏡像到注冊服務(wù)器中脾歧, 默認(rèn)是本地注冊服務(wù)器 127.0.0.1:5000
wget https://github.com/yeasy/docker_practice/raw/master/_local/push_images.sh; sudo chmod a+x push
#!/bin/sh
# This script will upload the given local images to a registry server ($registry is the default value).
# See: https://github.com/yeasy/docker_practice/blob/master/_local/push_images.sh
# Usage: push_images image1 [image2...]
# Author: yeasy@github
# Create: 2014-09-23
#The registry server address where you want push the images into
registry=127.0.0.1:5000
### DO NOT MODIFY THE FOLLOWING PART, UNLESS YOU KNOW WHAT IT MEANS ###
echo_r () {
[ $# -ne 1 ] && return 0
echo -e "\033[31m$1\033[0m"
}
echo_g () {
[ $# -ne 1 ] && return 0
echo -e "\033[32m$1\033[0m"
}
echo_y () {
[ $# -ne 1 ] && return 0
echo -e "\033[33m$1\033[0m"
}
echo_b () {
[ $# -ne 1 ] && return 0
echo -e "\033[34m$1\033[0m"
}
usage() {
sudo docker images
echo "Usage: $0 registry1:tag1 [registry2:tag2...]"
}
[ $# -lt 1 ] && usage && exit
echo_b "The registry server is $registry"
for image in "$@"
do
echo_b "Uploading $image..."
sudo docker tag $image $registry/$image
sudo docker push $registry/$image
sudo docker rmi $registry/$image
echo_g "Done"
done
摘自:https://github.com/yeasy/docker_practice/blob/docker-legacy/_local/push_images.sh
Docker 數(shù)據(jù)管理
- 數(shù)據(jù)卷(Data volumes)
數(shù)據(jù)卷可以在容器之間共享和重用
對數(shù)據(jù)卷的修改會立馬生效
對數(shù)據(jù)卷的更新甲捏, 不會影響鏡像
卷會一直存在, 直到?jīng)]有容器使用
數(shù)據(jù)卷的使用鞭执, 類似于 Linux 下對目錄或文件進(jìn)行 mount
- 創(chuàng)建一個(gè)數(shù)據(jù)卷
docker run -d -P --name web -v /webapp training/webapp python app.py
注意:也可以在 Dockerfile 中使用 VOLUME 來添加一個(gè)或者多個(gè)新的卷到由該鏡像創(chuàng)建的任意容器司顿。
- 掛載一個(gè)主機(jī)目錄作為數(shù)據(jù)卷
docker run -d -P --name web -v /src/webapp:/opt/webapp:ro
training/webapp python app.py
注意:Dockerfile 中不支持這種用法, 這是因?yàn)?Dockerfile 是為了移植和分享用的兄纺。 然而大溜, 不同操作系統(tǒng)
的路徑格式不一樣, 所以目前還不能支持估脆。
- 掛載一個(gè)本地主機(jī)文件作為數(shù)據(jù)卷
docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash
這樣就可以記錄在容器輸入過的命令了钦奋。
- 數(shù)據(jù)卷容器(Data volume containers)
curl -L https://github.com/docker/compose/releases/download/1.2.0/docker-compose-uname -s
-`u
$ sudo chmod a+x /usr/local/bin/docker-compose
Docker鏡像和倉庫
-查看docker鏡像 docker images
- 搜索鏡像
docker search puppet
倉庫Docker Registry
- 利用鏡像直接搭建倉庫
docker run -p 5000:5000 registry:2
[利用阿里云 OSS 搭建私有 Docker 倉庫](http://morning.work/page/2016-01/deploying-your-own-private-docker-registry.html)
-
構(gòu)建鏡像
方式1 commit方式
`docker commit [容器ID] [目標(biāo)倉庫]/[鏡像名]:[tag] -m"描述" -a"作者"-
獲取容器ID
docker ps -l -q
方法2 Dockerfile方式
[root@registry docker_srm_portal]# more Dockerfile
# centos image
FROM centos
MAINTAINER xxx@xxx.com
#copy jdk and tomcat into image
ADD ./tomcat8.tar.gz /opt/
ADD ./jdk1.8.tar.gz /opt/
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#set environment variable
ENV JAVA_HOME /opt/jdk1.8
ENV PATH $JAVA_HOME/bin:$PATH
RUN chmod -R +x /opt/tomcat8/bin
# copy web
COPY ./ROOT.war /opt/tomcat8/webapps/
VOLUME ["/opt/tomcat8/logs"]
EXPOSE 8080
#define entry point which will be run first when the container starts up
ENTRYPOINT /opt/tomcat8/bin/startup.sh && tail -f /opt/tomcat8/logs/catalina.out
exec命令方式執(zhí)行run
RUN ["apt-get"," install","-y","nginx"]
- 刷新
ENV REFRESHED_AT 2018-01-01
RUN apt-get -qq update #刷新APT包的緩存
RUN yum -q makecache
- 構(gòu)建
docker build --no-cache -t="[倉庫]/[鏡像名]:[tag]" .
docker build --no-cache -t="[倉庫]/[鏡像名]:[tag]" . -f file_path
-
docker history
-
查看端口
docker ps -l
docker port d96f3be34108
啟動(dòng)容器
docker run -d -p 127.0.0.1:80:80 --name web_demo [倉庫]/[鏡像名]:[TAG] nginx -g "daemon off"
-
Dockerfile指令
-
CMD命令
CMD指令用于指定一個(gè)容器啟動(dòng)時(shí)要運(yùn)行的命令。CMD可以在容器啟動(dòng)時(shí)被替換疙赠。當(dāng)Dockerfile存在兩個(gè)或多個(gè)CMD指令時(shí)最有最后一個(gè)CMD指令生效付材。
指定要運(yùn)行的特定命令:docker run –it centos /bin/sh
添加CMD指令:
CMD[“/bin/true”]
給CMD指令傳遞參數(shù):
CMD[“/bin/bash”,”-l”]
如有多個(gè)命令或多個(gè)進(jìn)程可以使用CMD /bin/bash –l && /bin/true 或考慮類型Supervisor這樣的服務(wù)管理工具。
CMD ["/bin/bash","-l"]
CMD ["/bin/bash"]
-
ENTRYPOINT命令
ENTRYPOINT指令與CMD指令非常類似圃阳,很容易和CMD指令弄混厌衔。CMD指令可以在docker run 命令行中覆蓋CMD指令,有時(shí)候捍岳,我們希望容器會按照我們想象的那樣去工作富寿,這時(shí)候CMD就不太適合了睬隶。而ENTRYPOINT指令提供的命令不容易在啟動(dòng)時(shí)被覆蓋。實(shí)際上作喘,docker run 命令行中指定的任何參數(shù)都會被當(dāng)作參數(shù)再次傳遞給ENTRYPOINT指令中指定的命令
添加ENTRYPOINT指令:
ENTRYPOINT[“/usr/sbin/nginx”]
給ENTRYPOINT傳遞參數(shù):
ENTRYPOINT[“/usr/sbin/nginx”,”-g”,”daemon off;”]
與CMD組合使用:
ENTRYPOINT[“/usr/sbin/nginx”]
CMD[“-h”]
注意:與CMD指令一樣理疙,ENTRYPOINT也是以數(shù)組的方式來運(yùn)行,也可以通過增加 /bin/sh –c 來直接運(yùn)行命令泞坦。
如果用戶確實(shí)需要窖贤,用戶也可以在運(yùn)行時(shí)通過docker run 的 –entrypoint 標(biāo)志來覆蓋 ENTRYPOINT指令。
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off"]
CMD ["-h"]
可以用docker run 的--entrypoint 標(biāo)志覆蓋ENTRYPOINT命令
CMD和ENTRYPOINT 的主要區(qū)別是:ENTRYPOINT 提供的命令不容易在啟動(dòng)容器時(shí)被覆蓋
-
WORKDIR
切換工作目錄,ENTRYPOINT
和 CMD
在指定的工作目錄下執(zhí)行
WORKDIR /opt/
RUN bundle install
WORKDIR /webapp
ENTRYPOINT [ "rackup" ]
可以覆蓋:如docker run -it -w /var/log ubuntu pwd
-
ENV
設(shè)置環(huán)境變量
#一個(gè)ENV定義多個(gè)環(huán)境變量
ENV RVM_PATH=/home/rvm RVM_ARCHFLAGES="-arch i386"
ENV TARGET_DIR /opt/app
#可以引用已經(jīng)定義的環(huán)境變量
WORKDIR $TARGET_DIR
#–e 標(biāo)志來傳遞環(huán)境變量
docker run –it –e“WEB_PORT=8080”ubuntu env
運(yùn)行時(shí)也可指定,只在運(yùn)行時(shí)有效,如:docker run -it -e "WEB_PORT=8080" ubuntu env
-
USER
#不指定默認(rèn)為root
USER nginx:group
docker run 中可以用 -u 指定
-
VOLUME
VOLUME指令用來向基于鏡像創(chuàng)建的容器添加卷贰锁。一個(gè)卷可以存在于一個(gè)或者多個(gè)容器的特定的目錄赃梧,這個(gè)目錄可以繞過聯(lián)合文件系統(tǒng),并提供如下共享數(shù)據(jù)或者對數(shù)據(jù)進(jìn)行持久化功能豌熄。
1. 卷可以在容器間共享和重用授嘀。
2. 一個(gè)容器可以不是必須和其他容器共享卷。
3. 對卷的修改時(shí)立即生效的锣险。
4. 對卷的修改不會對更新鏡像產(chǎn)生影響蹄皱。
5. 卷會一直存在直到?jīng)]有任何容器在使用它。
添加VOLUME指令:
VOLUME[“/opt/tomcat7/logs”]
添加VOLUME指令指定多個(gè)卷
VOLUME[“/opt/tomcat7/logs”,”/data”]
VOLUME ["/opt/project"]
#指定多個(gè)卷
VOLUME ["/opt/project","data"]
docker cp 和 VOLUME 類似
#鏡像里復(fù)制出來
docker cp cas_sso_1:/opt/tomcat7/webapps/cas.war .
#宿主復(fù)制到容器
docker cp 1.txt cas_sso_1:/opt/tomcat7/webapps
-
ADD
將構(gòu)建目錄下的文件和目錄復(fù)制到鏡像中
ADD software.lic /opt/app/software.lic
#以目的的/判斷源是目錄還是文件
ADD /opt/app /var/local/app/ #以/結(jié)尾為目錄
#使用URL格式
ADD http://www.baidu.com/test.txt /root/test.txt
#自動(dòng)解壓gzip,bzip2,gz的包
ADD test.tar.gz /var/www/app
注意
為了讓鏡像盡量小芯肤,最好不要使用ADD指令從遠(yuǎn)程 URL 獲取包巷折,而是使用curl和wget。這樣你可以在文件提取完之后刪掉不再需要的文件崖咨,可以避免在鏡像中額外添加一層锻拘。(譯者注:ADD指令不能和其他指令合并,所以前者ADD指令會單獨(dú)產(chǎn)生一層鏡像击蹲。而后者可以將獲取署拟、提取、安裝歌豺、刪除合并到同一條RUN指令中推穷,只有一層鏡像。)
-
COPY
#只復(fù)制Dockerfile同目錄的,不解壓和提取,容器里面是絕對路徑
COPY config/ /etc/app/
#拷貝目錄:
COPY conf.d/ /etc/apache2/
#拷貝文件
COPY nginx.conf /usr/local/nginx/conf/nginx.conf
-
LABEL
添加元數(shù)據(jù),盡量所有的元數(shù)據(jù)都放到一條LABEL中,替代MAINTAINER
LABEL location="New York" type="Data Center"
LABEL multi.label1="value1" \
multi.label2="value2" \
other="value3"
查看元數(shù)據(jù)`docker inspect [倉庫名]/[鏡像名]
-
STOPSIGNAL
STOPSIGNAL 9
STOPSIGNAL SIGKILL
ARG指令用來定義可以在docker build 命令運(yùn)行時(shí)傳遞給構(gòu)建運(yùn)行時(shí)變量的指令类咧,在構(gòu)建時(shí)需要使用 –build-arg 標(biāo)志即可缨恒,用戶只能在構(gòu)建時(shí)指定在Dockerfile文件中定義過的參數(shù)。在Dockerfile定義這些參數(shù)后如未設(shè)置默認(rèn)值轮听,且在構(gòu)建時(shí)未傳入定義變量的值時(shí),構(gòu)建將失敗岭佳。
ARG build
ARG webapp_user=user
docker build --build-arg build=1234 -t [倉庫名]/[鏡像名] .
-
ONBUILD
ONBUILD ADD . /app/src
ONBUILD RUN cd /app/src && make
-
實(shí)例
[root@registry docker_srm_portal]# ll
total 245312
-rw-r--r-- 1 root root 193 Dec 26 01:45 docker-compose.yml
-rw-r--r-- 1 root root 565 Dec 26 01:49 Dockerfile
-rw-r--r-- 1 root root 185525916 Dec 19 10:32 jdk1.8.tar.gz
-rw-r--r-- 1 root root 57603854 Jan 15 10:56 ROOT.war
-rw-r--r-- 1 root root 8056699 Dec 27 18:48 tomcat8.tar.gz
[root@registry docker_srm_portal]# more Dockerfile
# centos image
FROM centos
MAINTAINER xxx@xxx.com
#copy jdk and tomcat into image
ADD ./tomcat8.tar.gz /opt/
ADD ./jdk1.8.tar.gz /opt/
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#set environment variable
ENV JAVA_HOME /opt/jdk1.8
ENV PATH $JAVA_HOME/bin:$PATH
RUN chmod -R +x /opt/tomcat8
# copy web
COPY ./ROOT.war /opt/tomcat8/webapps/
VOLUME ["/opt/tomcat8/logs"]
EXPOSE 8080
#define entry point which will be run first when the container starts up
ENTRYPOINT /opt/tomcat8/bin/startup.sh && tail -f /opt/tomcat8/logs/catalina.out
[root@registry docker_srm_portal]# more docker-compose.yml
version: '2'
services:
srm_portal:
image: 10.100.60.88:8080/srm_portal:1.0
ports:
- "8080:8080"
volumes:
- "./logs:/opt/tomcat8/logs"
- "./upload:/usr/upload"
-
查看
docker inspect 容器ID
-
刪除鏡像
docker rmi [倉庫名]/[鏡像名]
docker rmi `docker images -a -q`
docker images [倉庫名]/[鏡像名]
#使用新的Registry為鏡像打標(biāo)簽
docker tag 鏡像ID [主機(jī)名]:端口號/[倉庫名]/[鏡像名]
#推送到新的Registry
docker push [主機(jī)名]:端口號/[倉庫名]/[鏡像名]
資源鏈接
Docker 主站點(diǎn): https://www.docker.io
Docker 注冊中心API: http://docs.docker.com/reference/api/registry_api/
Docker Hub API: http://docs.docker.com/reference/api/docker-io_api/
Docker 遠(yuǎn)端應(yīng)用API: http://docs.docker.com/reference/api/docker_remote_api/
Dockerfile 參考:https://docs.docker.com/reference/builder/
Dockerfile 最佳實(shí)踐:https://docs.docker.com/articles/dockerfile_best-practices/