Docker入门

Posted by Kaka Blog on January 17, 2019

什么是Docker?

Docker 是世界领先的软件容器平台。Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。

Docker的优势

容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。

1、更快速的交付和部署

2、更高效的虚拟化

3、更轻松的迁移和扩展

4、更简单的管理

Docker架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

img

概念 说明
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 创建镜像主要有三种:

  1. 基于已有的镜像创建;
  2. 基于 Dockerfile 来创建;
  3. 基于本地模板来导入;

基于已有的镜像创建

通过如下命令来创建:

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 服务名

参考

Get Docker CE for Ubuntu

Docker(一):Docker入门教程

Docker 架构

Install Docker Compose