mac下安装Docker
brew cask install docker
启动docker:进入launchpad,双击docker图标即可启动
Linux下安装Docker
https://yeasy.gitbooks.io/docker_practice/install/centos.html (CentOS)https://yeasy.gitbooks.io/docker_practice/install/ubuntu.html (Ubuntu)
Windows下安装Docker
https://yeasy.gitbooks.io/docker_practice/install/windows.html
Docker 概念
镜像:一个特殊的文件系统,提供容器运行所需的程序、库、资源等。可以把它看作一个类。
容器:容器的实质是进程,每个进程最好占用一个容器,比如 jenkins,wiki,jira,gitlab单独放在不同容器中。可以把它看作是镜像的一个实例。
仓库:相当于git的远程仓库,有公开的,也有私有的,表现形式是 :,每个标签即为一个远程镜像。
网络:Docker 允许通过外部访问容器或者容器互联的方式来提供网络服务。有多种网络模式。
数据管理:分为数据卷(volume)和挂载主机两种方式
Docker 常用命令
启动docker
安装docker的时候已经提到如何启动docker
镜像操作
docker search 在官方仓库查找镜像
获得镜像
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
# docker方式获取jenkinsdocker pull jenkins/jenkins:lts
运行镜像(启动容器)
docker run [选项] IMAGE [命令][参数..]
# 启动jenkinsdocker run -d -v jenkins_home:/var/jenkins_home -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts# -d :–detach 后台运行容器# -v :–volume 绑定挂载目录# -p : 绑定端口,主机端口:容器端口 8080是web端口,50000是从属服务器使用端口
列出镜像
docker image ls 列出全部镜像
docker image ls 列出部分镜像
# 列表包含了 仓库名、标签、镜像 ID、创建时间 以及 所占用的空间。REPOSITORY TAG IMAGE ID CREATED SIZEb3log/solo latest deba8aac9495 4 days ago 150MB
镜像体积
docker system df
虚悬镜像
仓库名和标签都为 的镜像
docker image ls -f dangling=true 查看虚拟镜像
docker image prune 删除虚拟镜像
删除本地镜像
docker image rm [选项] [ …] 删除本地镜像
docker image rm $(docker image ls -q image_name) 成批删除镜像,用在某个镜像可能有不同tag,但想全部删除的情况
Dockerfile
作用:定制镜像
构建镜像:docker build [上下文路径/URL/-],(docker build -t -f . 是常用命令)
Dockerfile 常用指令:
FROM 指定基础镜像
RUN 执行命令
# 举个例子# stretch 是空白镜像FROM debian:stretch# RUN最多是42层,所以不要滥用RUN,一个RUN一般是一个步骤,比如下方的编译、安装 redis 可执行文件可以放在一个步骤里执行,用 && 可以串联命令RUN buildDeps=’gcc libc6-dev make wget’ && apt-get update && apt-get install -y $buildDeps && wget -O redis.tar.gz “http://download.redis.io/releases/redis-5.0.3.tar.gz” && mkdir -p /usr/src/redis && tar -xzf redis.tar.gz -C /usr/src/redis –strip-components=1 && make -C /usr/src/redis && make -C /usr/src/redis install && rm -rf /var/lib/apt/lists/* && rm redis.tar.gz && rm -r /usr/src/redis && apt-get purge -y –auto-remove $buildDeps
COPY [–chown=:] … 复制文件
- 源路径可以有很多个,甚至可以用通配符
- 源路径是相对路径
- 目标路径可以是绝对路径,也可以是相对于工作目录的相对路径
ADD [–chown=:] … 比COPY更高级的复制文件
- 源路径可以是URL、压缩文件(会自动解压到目标路径)
CMD 容器启动命令
- shell 格式: CMD
- exec 格式: CMD [“可执行文件”, “参数1”, “参数2″…]
- 参数列表格式:CMD [“参数1”, “参数2″…]。指定ENTRYPOINT指令后,用CMD指定具体参数
- 注意:CMD 的命令不能是后台运行的命令!例如,不能是 CMD service nginx start
- 注意:CMD 推荐使用exec格式编写
- 注意:一个Dockerfile只能有一个CMD指令