什么是Docker?
Docker 是世界领先的软件容器平台。Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。
Docker的优势
容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。
1、更快速的交付和部署
2、更高效的虚拟化
3、更轻松的迁移和扩展
4、更简单的管理
Docker架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。
容器与镜像的关系类似于面向对象编程中的对象与类。
概念 | 说明 |
---|---|
Docker 镜像(Images) | Docker 镜像是用于创建 Docker 容器的模板。 |
Docker 容器(Container) | 容器是独立运行的一个或一组应用。 |
Docker 客户端(Client) | Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。 |
Docker 主机(Host) | 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 |
Docker 仓库(Registry) | Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。 |
Docker Machine | Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。 |
安装Docker
ubuntu版本:18.04
1、下载安装包
下载地址:https://download.docker.com/linux/ubuntu/dists/
,下载对应操作系统版本的docker-engine deb包,执行dpkg -i安装。
或者直接安装:
sudo wget -qO- https://get.docker.com/ | sh
sudo usermod -aG docker username # 让当前用户能运行docker命令
退出,然后重新登录,以便让权限生效。
2、加速镜像下载
修改/etc/docker/daemon.json
文件。
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
安装Docker-Compose
在github上下载docker-compose二进制配置文件,设置权限chmod 777 docker-compose,并且将docker-compose文件放置在/usr/local/bin目录下。
方法一:
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
方法二:
由于方法一下载时可能会失败,可以使用方法二。
sudo pip install docker-compose
sudo curl -L --fail https://github.com/docker/compose/releases/download/1.23.2/run.sh -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
测试:
docker-compose --version
用Docker安装Gitlab
1、获取镜像
docker pull gitlab/gitlab-ce:latest
2、启动Gitlab容器
docker run --detach \
--hostname st-gitlab.com \
--publish 8320:443 --publish 8321:80 --publish 8322:22 \
--name gitlab \
--restart always \
--volume /data/dockervol/gitlab/config:/etc/gitlab \
--volume /data/dockervol/gitlab/logs:/var/log/gitlab \
--volume /data/dockervol/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
3、测试
访问http://192.168.10.155:8321/
,设置root密码。
Docker常用命令
1、拉取docker镜像
docker pull image_name
2、查看宿主机上的镜像,Docker镜像保存在/var/lib/docker目录下:
docker images
3、删除镜像
docker rmi docker.io/tomcat:7.0.77-jre7 或者 docker rmi b39c68b7af30
- rmi tag: 删除指定的标签
- rmi imageId: 删除所有指向该镜像的标签
注意:当镜像的容器存在时,删除会报错,可以先删除容器,再删除镜像。
4、查看当前有哪些容器正在运行
docker ps
5、查看所有容器
docker ps -a
6、启动、停止、重启容器命令:
docker start container_name/container_id
docker stop container_name/container_id
docker restart container_name/container_id
7、后台启动一个容器后,如果想进入到这个容器,可以使用attach命令:
docker attach container_name/container_id
用该命令退出后会导致容器停止。
可以使用:
docker exec -it 775c7c9ee1e1 /bin/bash
# 或
docker exec -it 775c7c9ee1e1 /bin/sh
8、删除容器的命令:
docker rm container_name/container_id
docker rm container_id -v
可以在删除容器的同时删除卷,解决了spring-cloud-config 突然报错 cannot open git-upload-pack
9、查看当前系统Docker信息
docker info
10、杀死所有正在运行的容器
docker kill $(docker ps -a -q)
11、删除所有已经停止的容器
docker rm $(docker ps -a -q)
12、删除所有镜像
docker rmi $(docker images -q)
13、保存镜像到本地
docker save IMAGE(镜像)
docker save 9610cfc68e8d > /home/myubuntu-save-1204.tar
14、加载镜像
docker load -i /home/myubuntu-save-1204.tar
15、添加标签
docker tag imageid project/name:tag
16、查看镜像构建历史
docker history imageID --no-trunc
17、查看镜像详细信息
docker inspect imageID
18、清理镜像
我们在使用 Docker 一段时间后,系统一般都会残存一些临时的、没有被使用的镜像文件,可以通过以下命令进行清理:
docker image prune
它支持的子命令有:
- -a,–all: 删除所有没有用的镜像,而不仅仅是临时文件;
- -f,–force:强制删除镜像文件,无需弹出提示确认;
创建Docker镜像
Docker 创建镜像主要有三种:
- 基于已有的镜像创建;
- 基于 Dockerfile 来创建;
- 基于本地模板来导入;
基于已有的镜像创建
通过如下命令来创建:
docker container commit containerId 新镜像名称
支持的子命令如下:
- -a,–author=””: 作者信息;
- -c,–change=[]: 可以在提交的时候执行 Dockerfile 指令,如 CMD、ENTRYPOINT、ENV、EXPOSE、LABEL、ONBUILD、USER、VOLUME、WORIR 等;
- -m,–message=””: 提交信息;
- -p,–pause=true: 提交时,暂停容器运行。
基于 Dockerfile 创建
Docker-Compose常用命令
1、启动服务
docker-compose up -d 服务名
2、停止服务
docker-compose stop 服务名
3、查看日志
docker-compose logs -f 服务名