安装与配置
安装
Centos
安装命令如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
实在不行就用人肉安装
卸载旧版本
yum remove -y docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
安装准备:
yum install -y yum-utils \device-mapper-persistent-data \lvm2
添加源 ```shell yum-config-manager \ —add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager —add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4. 安装Docker-ce```shellyum update -y && yum install -y docker-cesystemctl start docker.service
启动Docker
方法1
$ sudo systemctl enable docker$ sudo systemctl start docker
方法2
service docker start
docker配置
- 修改配置文件:
/etc/docker/daemon.json(如果没有daemon.json文件,需要自己新建一下) - 修改完成后,重载配置文件:
systemctl daemon-reload - 重启docker:
sudo systemctl restart docker - 查看docker状态:
systemctl status docker(查看docker状态的步骤非必需,但建议养成这个好习惯。)
镜像源管理
可以通过此配置,设置国内镜像源,实现提速的效果。
{"registry-mirrors": ["https://md4nbj2f.mirror.aliyuncs.com"]}
安全地址配置
如果是自己搭建的docker镜像仓库,可能并没有配置https,则需要在此增加配置。
{"insecure-registries" : ["docker-registry.chenhao.com"]}
日志最大存储限制
如果不配置它,可能会导致/var/lib/docker/tmp/containers目录中的容器日志过大,挤占系统盘空间。
{"log-driver": "json-file","log-opts": {"max-size": "10m","max-file": "10"}}
登录镜像仓库
sudo docker login --username=<name> --password=<password> <storageUrl>
容器与宿主环境的文件互传
拷贝容器内文件
docker cp <容器名称>:<容器内的文件路径> <主机上的目标路径>
例如:docker cp nginx:/etc/nginx /data/docker/nginx
拷贝宿主环境的文件到容器中
docker cp <主机上的目标路径> <容器名称>:<容器内的文件路径>
例如:docker cp /data/docker/nginx nginx:/etc/nginx
使用Dockerfile创建镜像
docker build -t <imageName>:<tagName> .
在宿主机执行docker容器中的shell脚本或命令
docker exec -it <容器名称> /bin/bash -c 'echo $PATH'
docker清理
删除所有未被容器使用的镜像:
$ docker image prune -a
删除所有停止运行的容器:
$ docker container prune
删除所有未被挂载的卷:
$ docker volume prune
删除所有网络:
$ docker network prune
删除 docker 所有资源
$ docker system prune
进入已经停止的容器内部
通过如下命令查看需要进入进程的容器 ID
- 查看所有容器进程:
docker ps -a - 记住容器的id或者name,用于后续启动异常的容器保存为镜像
- 启动异常的容器保存为镜像:
docker commit <name or containerId> <newName> - 进入新容器:
docker run -it <newName> /bin/bash
查看日志
Help
$ docker logs [OPTIONS] CONTAINEROptions:--details 显示更多的信息-f, --follow 跟踪实时日志--since string 显示自某个timestamp之后的日志,或相对时间,如40m(即40分钟)--tail string 从日志末尾显示多少行日志, 默认是all-t, --timestamps 显示时间戳--until string 显示自某个timestamp之前的日志,或相对时间,如40m(即40分钟)
案例
- 查看最近30分钟的日志:
$ docker logs --since 30m CONTAINER_ID - 查看某时间之后的日志:
$ docker logs -t --since="2019-11-02T13:23:37" CONTAINER_ID - 查看某时间段日志:
$ docker logs -t --since="2019-11-02T13:23:37" --until "2019-11-03T12:23:37" CONTAINER_ID
docker-compose
基本使用
- 保证项目根目录下有
docker-compose.yml文件 - 运行
docker-compose up启动- 建议使用
docker-compose up -d关闭后可以自动删除。
- 建议使用
- 运行
docker-compose down关闭
命令选项
-f, --file FILE指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。-p, --project-name NAME指定项目名称,默认将使用所在目录名称作为项目名。--x-networking使用 Docker 的可拔插网络后端特性--x-network-driver DRIVER指定网络后端的驱动,默认为 bridge--verbose输出更多调试信息。-v, --version打印版本并退出。
批量操作
- 启动所有容器:
docker start $(docker ps -a -q) - 关闭所有容器:
docker stop ``$(docker ps -a -q) - 删除所有容器:
docker rm ``$(docker ps -a -q) - 删除所有镜像(慎用):
docker rmi $(docker images | awk '{print $3}' |tail -n +2)
ps:可以用docker ps -a | awk '{ print $1}' | tail -n +2代替docker ps -a -q。
常用服务部署
nginx
- 运行临时容器:
docker run -d --name nginx nginx - 拷贝出配置文件到宿主机(做持久化):
docker cp nginx:/etc/nginx /data/docker/nginx - 停止临时容器:
docker stop nginx && docker rm nginx - 运行最终使用的容器:
docker run -d --name nginx --net=host -v /data/docker/nginx:/etc/nginx nginx
gitlab runner
运行runner
sudo docker run -d --net=host --name gitlab-runner --restart always \-v /data/docker/gitlab-runner/config:/etc/gitlab-runner \-v /var/run/docker.sock:/var/run/docker.sock \-v /etc/localtime:/etc/localtime \gitlab/gitlab-runner:latest
注册runner
docker run --rm -it -v /data/docker/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register
