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 -r
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-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-reload
sudo systemctl restart docker
检测加速生效
docker info
Registry Mirrors:
https://registry.docker-cn.com/
命令
镜像相关
docker pull postgres:12
docker image ls
docker run --name foo-postgres -e POSTGRES_PASSWORD=foo -p 54322:5432 -d postgres:12
docker run --name foo-postgres -e POSTGRES_PASSWORD=foo -p 54322:5432 -d postgres:12
docker 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 restart
docker logs #查看标准输出
docker attach #进入容器
docker exec #进入容器(推荐使用因为退出不会使容器停止)
docker exec 95 java -version
docker rm -f
#导入导出容器快照
docker export ${container_name}/${container_id} > centos.tar
cat opt/centos.tar | docker import - foo/centos:v1
docker import http://foo.com/bar.tgz foo/imagerepo
数据卷
docker volume create
docker volume inspect #显示数据卷详情
docker volume ls
docker volume prune #删除所有未使用
docker volume rm
docker run -v /data foo_container
docker run -v vol:/data foo_container
docker run -v /var/data:/data foo_container
必须绝对路径,没有则创建空目录,如果镜像之前有内容,则隐藏内容,与宿主机保持一致。
docker stack
docker swarm init
docker stack deploy -c stack.yml postgres
docker stack ls
docker stack rm postgres
docker service ls
docker stack ps flink #查看容器状态,排查问题
docker-compose
启动关闭
docker-compose up -d
docker-compose stop
docker exec -it [${CONTAINER ID}][${NAMES}] /bin/bash
Dockerfile编写
FROM debian:jessie
ADD
RUN apt-get update;
RUN mkdir /opt/component
ENV HOME=/opt/component
ENV PATH=${HOME}/bin:${PATH}
VOLUME /var/log
EXPOSE 80
CMD
概念
registry > repository > image
镜像(Image)相当于一个root文件系统,Debian镜像就包含完整的最小root文件系统。
容器状态
状态有7种:
- created(已创建)
- restarting(重启中)
- running(运行中)
- removing(迁移中)
- paused(暂停)
- exited(停止)
- dead(死亡)
容器编排
Docker Stack
stack.yml编写
version: '3.1'
services:
image: nginx
volumes:
- ./mysite.template:/etc/nginx/conf.d/mysite.template
ports:
- "8080:80"
environment:
- NGINX_HOST=luning.wang
- NGINX_PORT=80
command: /bin/bash -c "envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"
ghost:
image: ghost:3
restart: always
ports:
- 80:2368
environment:
# see https://docs.ghost.org/docs/config#section-running-ghost-with-config-env-variables
database__client: mysql
database__connection__host: db
database__connection__user: root
database__connection__password: foo_password
database__connection__database: ghost
db:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: foo_password
foo:
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: 50M
reservations:
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