CentOS安装
该 centos-extras 库必须启用。默认情况下,此仓库是启用的,但是如果已禁用它,则需要重新启用它。
建议使用 overlay2 存储驱动程序。
卸载旧版本
较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
安装 Docker Engine-Community
安装所需的软件包。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 \https://download.docker.com/linux/centos/docker-ce.repo
安装最新版本的 Docker Engine-Community 和 containerd
sudo yum install docker-ce docker-ce-cli containerd.io
启动Docker
sudo systemctl start docker
检查安装成功
docker run hello-world
安装特定版本
列出并排序版本
yum list docker-ce --showduplicates | sort -rdocker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stabledocker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stabledocker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stabledocker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
安装指定版本
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
镜像加速
Ubuntu16.04+、Debian8+、CentOS7
对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):
{"registry-mirrors":["https://registry.docker-cn.com"]}
重启服务
sudo systemctl daemon-reloadsudo systemctl restart docker
检测加速生效
docker infoRegistry Mirrors:https://registry.docker-cn.com/
命令
镜像相关
docker pull postgres:12docker image lsdocker run --name foo-postgres -e POSTGRES_PASSWORD=foo -p 54322:5432 -d postgres:12docker run --name foo-postgres -e POSTGRES_PASSWORD=foo -p 54322:5432 -d postgres:12docker search nginx#通过Dockerfile构建镜像 推荐使用docker build -t foo/component:v2 .#提交镜像 不推荐使用docker commit -m="add component" -a="alice" ${container_id} foo/nginx:v2
容器相关
docker stop ${container_name}/${container_id}docker start #启动已停止的容器docker restartdocker logs #查看标准输出docker attach #进入容器docker exec #进入容器(推荐使用因为退出不会使容器停止)docker exec 95 java -versiondocker rm -f#导入导出容器快照docker export ${container_name}/${container_id} > centos.tarcat opt/centos.tar | docker import - foo/centos:v1docker import http://foo.com/bar.tgz foo/imagerepo
数据卷
docker volume createdocker volume inspect #显示数据卷详情docker volume lsdocker volume prune #删除所有未使用docker volume rm
docker run -v /data foo_containerdocker run -v vol:/data foo_containerdocker run -v /var/data:/data foo_container
必须绝对路径,没有则创建空目录,如果镜像之前有内容,则隐藏内容,与宿主机保持一致。
docker stack
docker swarm initdocker stack deploy -c stack.yml postgresdocker stack lsdocker stack rm postgresdocker service lsdocker stack ps flink #查看容器状态,排查问题
docker-compose
启动关闭
docker-compose up -ddocker-compose stop
docker exec -it [${CONTAINER ID}][${NAMES}] /bin/bash
Dockerfile编写
FROM debian:jessieADDRUN apt-get update;RUN mkdir /opt/componentENV HOME=/opt/componentENV PATH=${HOME}/bin:${PATH}VOLUME /var/logEXPOSE 80CMD
概念
registry > repository > image
镜像(Image)相当于一个root文件系统,Debian镜像就包含完整的最小root文件系统。
容器状态
状态有7种:
- created(已创建)
- restarting(重启中)
- running(运行中)
- removing(迁移中)
- paused(暂停)
- exited(停止)
- dead(死亡)
容器编排
Docker Stack
stack.yml编写
version: '3.1'services:image: nginxvolumes:- ./mysite.template:/etc/nginx/conf.d/mysite.templateports:- "8080:80"environment:- NGINX_HOST=luning.wang- NGINX_PORT=80command: /bin/bash -c "envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"ghost:image: ghost:3restart: alwaysports:- 80:2368environment:# see https://docs.ghost.org/docs/config#section-running-ghost-with-config-env-variablesdatabase__client: mysqldatabase__connection__host: dbdatabase__connection__user: rootdatabase__connection__password: foo_passworddatabase__connection__database: ghostdb:image: mysql:5.7restart: alwaysenvironment:MYSQL_ROOT_PASSWORD: foo_passwordfoo:links:- "jobmanager:jobmanager"
depend_on
自动创建网络,不需要links选项,depend_on其实是标记启动顺序。被依赖的容器RUNNING状态后在启动此容器。
deploy
1.endpoint_mode
2.labels
3.mode
- global:每个集节点只有一个容器
- replicated:指定容器数量(默认)
4.placement
5.replicas 容器运行数量
6. resources 支援限制
deploy:resources:limits:cpus: '0.50'memory: 50Mreservations:cpus: '0.25'memory: 20M
- restart_policy
8. update_config
k8s
参考资料
https://yeasy.gitbooks.io/docker_practice/
https://nickjanetakis.com/blog/benchmarking-debian-vs-alpine-as-a-base-docker-image
