docker是什么?
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
为什么要用docker?
在没有用docker之前,我们需要在本地,测试,线上部署相同的环境,相同的软件每个环境都要安装一次,并且每来一个新同事,相同的环境有要重新安装一遍,很麻烦且过于重复。docker可以完美的解决这个问题,用docker之后我们只需要在本地,测试,线上分别安装相同的docker,然后在本地搭建环境,将搭建好的环境容器生成docker镜像,只要将这个docker镜像提供给测试和线上即可构建出相同的环境,在代码部署上我们可以利用docker数据卷将本地项目目录文件直接挂载到测试环境中。
docker在centos上的安装
安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
选择国内镜像地址,这里我们选择阿里云镜像
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装 Docker Engine-Community
sudo yum -y install docker-ce docker-ce-cli containerd.io
安装docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
常用的docker 命令
容器生命周期管理
- run
- start/stop/restart
- kill
- rm
- pause/unpause
- create
- exec
容器操作
- ps
- inspect
- top
- attach
- events
- logs
- wait
- export
- port
容器rootfs命令
- commit
- cp
- diff
镜像仓库
- login
- pull
- push
- search
本地镜像管理
- mages
- rmi
- tag
- build
- history
- save
- load
- import
info|version
- info
- version
什么是docker-compose
- Docker Compose 是一个工具,命令行工具。
- 这个工具可以通过yml文件定义多容器的docker应用
- 通过一条命令就可以根据yml文件的定义去创建或者管理这多个容器
常用docker-compose 命令
docker-compose up -d nginx 构建建启动nignx容器
docker-compose exec nginx bash 登录到nginx容器中
docker-compose down 删除所有nginx容器,镜像
docker-compose ps 显示所有容器
docker-compose restart nginx 重新启动nginx容器
docker-compose run --no-deps --rm php-fpm php -v 在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器
docker-compose build nginx 构建镜像 。
docker-compose build --no-cache nginx 不带缓存的构建。
docker-compose logs nginx 查看nginx的日志
docker-compose logs -f nginx 查看nginx的实时日志
docker-compose config -q 验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。
docker-compose events --json nginx 以json的形式输出nginx的docker日志
docker-compose pause nginx 暂停nignx容器
docker-compose unpause nginx 恢复ningx容器
docker-compose rm nginx 删除容器(删除前必须关闭容器)
docker-compose stop nginx 停止nignx容器
docker-compose start nginx 启动nignx容器
docker-compose.yml
docker-compose.yml配置详解 - 掘金
常见的问题汇总
1. dockerfile copy 和add 命令
copy 主要是复制宿主机文件到容器
add 命令如果是远程地址是不会自动解压的
2.volumes
可以挂载文件也可以挂载目录,如果是挂载文件宿主机必须要有对应创建的文件否则会把文件当 成目录创建