安装与配置
安装
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
```shell
yum update -y && yum install -y docker-ce
systemctl 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] CONTAINER
Options:
--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