docker 安裝
https://docs.docker.com/engine/installation/linux/docker-ce/centos/#uninstall-docker-ce
http://blog.csdn.net/wh211212/article/details/78662605
- 卸載舊版本
$ sudo yum remove docker \
docker-common \
docker-selinux \
docker-engine
- 設(shè)置Docker CE存儲庫
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
- 更新yum包的索引
$ sudo yum makecache fast
- 列出docker可用的版本
$ yum list docker-ce --showduplicates | sort -r
- 安裝指定版本
//$ sudo yum install <FULLY-QUALIFIED-PACKAGE-NAME>
$ sudo yum install docker-ce-17.09.0.ce
| Note: The version string is the package name plus the version up to the first hyphen. In the example above, the fully qualified package name is docker-ce-17.06.1.ce
- 啟動Docker
$ sudo systemctl start docker
- 驗證docker
$ sudo docker run hello-world
- 查看docker版本
docker version
- 卸載Docker CE
sudo yum remove docker-ce
sudo rm -rf /var/lib/docker
配置鏡像加速器
進入阿里云docker庫首頁https://dev.aliyun.com/
進入管理中心-->鏡像加速器宰啦, 按照操作文檔配置加速器
docker 鏡像命令
- 搜索鏡像
//$ docker search <鏡像名稱>
$ docker search java
- 下載鏡像
//$ docker pull <鏡像名稱>
$ docker pull java
- 列出鏡像
$ docker images
- 刪除鏡像
//$ docker rmi <鏡像名稱>
$ docker rmi java
$ docker rmi -f java //強制刪除
docker 容器命令
- 新建并啟動容器
$ docker run
$ docker run java /bin/echo 'Hello world'
$ docker run -d -p 91:80 nginx
// -d 后臺運行
// -p 宿主機端口:容器端口
- 列出容器
$ docker ps
- 停止容器
$ docker stop <container id>
- 強制停止容器
$ docker kill <container id>
- 啟動停止的容器
$ docker start <container id>
- 重啟容器
$ docker restart <container id>
- 刪除容器
$ docker rm <container id>
- 刪除所有容器
$ docker rm -f $(docker ps -a -q)
- 進入容器
//方法一
$ docker attach <container id>
注:可通過 Ctrl+p 然后 Ctrl+q 組合鍵退出 attach 終端。
方法二
$ docker exec
$ docker exec -it <container> bash|sh
$ docker exec -it b06fae9dcf21 /bin/bash
// 執(zhí)行 exit 退出容器
Dockerfile 命令
- Dockerfile由4個部分組成:基礎(chǔ)鏡像信息,維護者信息唐全,鏡像操作指令和容器啟動指令,每一行都是一個指令凌节。注釋都是以“#”開始的.
# Version 0.1
# 基礎(chǔ)鏡像
FROM java:8
# 維護者信息
MAINTAINER zhangyongli
# 鏡像操作命令
RUN apt-get -yqq update && apt-get install -yqq apache2 && apt-get clean
# 容器啟動命令
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
- FROM指令
指定即將制作的鏡像施掏,繼承哪位鏡像谎倔。
FROM <image> 或 FROM <image>:<tag>
- MAINTAINER指令
指定維護者信息
MAINTAINER <name>
- RUN指令
執(zhí)行shell命令的鸟辅,當解析Dockerfile時氛什,遇到RUN指令,將自動翻譯為/bin/sh -c “xxxx”
RUN <command>
- CMD指令
指啟動容器時執(zhí)行的命令匪凉,每個Dockerfile只能有一條CMD指令枪眉,如果指定了多條CMD,只有最后一條會被執(zhí)行再层。
CMD command param1 param2
CMD [“executable”,”param1”,”param2”]
CMD [“param1”,”param2”]
- ENV指令
指定一個環(huán)境變量,會被后續(xù)的RUN指令使用贸铜,并在容器運行時保持。
ENV <key> <value>
- ADD指令
復(fù)制指定<src>到容器中的<dest>中聂受,可以是Dockerfile所在目錄的一個相對路徑萨脑,也可以是一個URL,還可以是一個tar文件(自動解壓為目錄)
ADD <src> <dest>
- COPY指令
復(fù)制本地主機<src>到容器中的<dest>中饺饭,當使用本地目錄為源目錄時渤早,推薦使用
COPY <src> <dest>
構(gòu)建鏡像
進入Dockerfile目錄,執(zhí)行
docker build -t 鏡像名稱:tag標識 .
啟動鏡像
docker run -d -p 80:80 --name 別名 鏡像名稱:tag標識
推送鏡像
http://blog.51cto.com/wzlinux/2045716
推送鏡像(Registry2)
- 安裝私有倉庫
docker run -d -p 5000:5000 --restart=always --name registry2 registry:2
-
設(shè)置Insecure registries
重新打標簽
docker tag <container> [registry-host]:[port]/[username]/name:tag
- 推送鏡像
docker push [registry-host]:[port]/[username]/name:tag
- 拉取鏡像
docker pull [registry-host]:[port]/[username]/name:tag
- 查看私有倉庫的鏡像
http://[registry-host]:[port]/v2/_catalog
http://[registry-host]:[port]/v2/[container]/tags/list
http://192.168.0.153:5000/v2/_catalog
http://192.168.0.153:5000/v2/mxrcorp/mxr-eureka-server/tags/list
end