Docker: 将重复的事情简单化,避免相同的工作重复做。缩短代码从开发、测试到部署、上线运行的周期,让我们的应用程序具备可移植性、易于构建、并易于协作。

1. Docker介绍

  • Docker 是一个开源的软件部署解决方案。
  • Docker 也是轻量级的应用容器框架。
  • Docker 可以打包、发布、运行任何的应用。
  • Docker 就像一个盒子,里面可以装很多物件,如果需要某些物件,可以直接将该盒子拿走,而不需要从该盒子中一件一件的取。
  • Docker 是一个客户端-服务端(C/S)架构程序。

其中包含三个重要概念:

  • 镜像(Image)   【程序打包的文件,将重复的工作进行封装】

        类似于虚拟机中的镜像,是一个独立的系统,包含运行容器的所有程序,同时也可以创建新的容器。例如,一个镜像可以是一个Ubantu系统,然后这个系统中可以有诸多软件。

  • 容器(Container)   【运行镜像的】

        类似于一个VM虚拟机,可以启动、运行等。每个容器之间都是相互隔离的。

  • 仓库(Repository)   【存放镜像的】

        类似于Github,用于镜像托管的。

2. Docker安装(ubuntu 18.04)

2.1.源码安装Docker CE

cd docker源码目录
sudo apt-key add gpg
sudo dpkg -i docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb

DOCKER容器管理工具 docker容器应用_docker

 先把文件上传到虚拟机中。

DOCKER容器管理工具 docker容器应用_DOCKER容器管理工具_02

DOCKER容器管理工具 docker容器应用_运维_03

2.2.检查Docker CE是否安装正确

sudo docker run hello-world

出现如下信息,表示安装成功.  【此镜像非常小,只有几KB】 

DOCKER容器管理工具 docker容器应用_容器_04

 2.3.启动与停止

  • 安装完成Docker后,默认已经启动了docker服务。
# 启动docker
sudo service docker start
# 重启docker
sudo service docker restart
# 停止docker
sudo service docker stop

DOCKER容器管理工具 docker容器应用_docker_05

 3. Docker镜像操作

3.1.镜像列表

sudo docker image ls

DOCKER容器管理工具 docker容器应用_docker_06

* REPOSITORY:镜像所在的仓库名称 
* TAG:镜像标签 
* IMAGEID:镜像ID 
* CREATED:镜像的创建日期(不是获取该镜像的日期) 
* SIZE:镜像大小

3.2.从仓库拉取镜像

# 官方镜像
sudo docker image pull 镜像名称 或者 sudo docker image pull library/镜像名称
sudo docker image pull ubuntu 或者 sudo docker image pull library/ubuntu
sudo docker image pull ubuntu:16.04 或者 sudo docker image pull library/ubuntu:16.04
 
# 个人镜像
sudo docker image pull 仓库名称/镜像名称
sudo docker image pull itcast/fastdfs

DOCKER容器管理工具 docker容器应用_运维_07

DOCKER容器管理工具 docker容器应用_容器_08

DOCKER容器管理工具 docker容器应用_运维_09

DOCKER容器管理工具 docker容器应用_容器_10

3.3.删除镜像

sudo docker image rm 镜像名或镜像ID
sudo docker image rm hello-world
sudo docker image rm fce289e99eb9

【删除的前提是:这个对象没有创建容器。镜像正在运行时是不能删除的】

DOCKER容器管理工具 docker容器应用_docker_11

DOCKER容器管理工具 docker容器应用_Docker_12

 4. Docker容器操作

4.1.容器列表

# 查看正在运行的容器
sudo docker container ls
# 查看所有的容器
sudo docker container ls --all

DOCKER容器管理工具 docker容器应用_运维_13

4.2.创建容器

sudo docker run [option] 镜像名 [向启动容器中传入的命令]
常用可选参数说明:
* -i 表示以《交互模式》运行容器。
* -t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
* --name 为创建的容器命名。
* -v 表示目录映射关系,即宿主机目录:容器中目录。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。 
* -d 会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器)。 
* -p 表示端口映射,即宿主机端口:容器中端口。
* --network=host 表示将主机的网络环境映射到容器中,使容器的网络与主机相同。  【访问数据库时会用到】

4.3.交互式容器

sudo docker run -it --name=ubuntu1 ubuntu /bin/bash

DOCKER容器管理工具 docker容器应用_Docker_14

DOCKER容器管理工具 docker容器应用_DOCKER容器管理工具_15

DOCKER容器管理工具 docker容器应用_运维_16

DOCKER容器管理工具 docker容器应用_docker_17

在容器中可以随意执行linux命令,就是一个ubuntu的环境。
当执行 exit 命令退出时,该容器随之停止。

4.4.守护式容器

# 开启守护式容器
sudo docker run -dit --name=ubuntu2 ubuntu

DOCKER容器管理工具 docker容器应用_容器_18

DOCKER容器管理工具 docker容器应用_docker_19

# 进入到容器内部交互环境
sudo docker exec -it 容器名或容器id 进入后执行的第一个命令
sudo docker exec -it ubuntu2 /bin/bash

DOCKER容器管理工具 docker容器应用_Docker_20

如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。
在容器内部执行 exit 命令退出时,该容器也随之停止。退出后仍在后台运行着

4.5.停止和启动容器

# 停止容器
sudo docker container stop 容器名或容器id
# kill掉容器      【如果stop不管用的话,则直接用kill】
sudo docker container kill 容器名或容器id
# 启动容器
sudo docker container start 容器名或容器id

DOCKER容器管理工具 docker容器应用_Docker_21

 4.6.删除容器

  • 正在运行的容器无法直接删除。停止的镜像可以删除掉
sudo docker container rm 容器名或容器id

DOCKER容器管理工具 docker容器应用_docker_22

 4.7.容器制作成镜像

  • 为保证已经配置完成的环境可以重复利用,可以将容器制作成镜像。
# 将容器制作成镜像
sudo docker commit 容器名 镜像名

DOCKER容器管理工具 docker容器应用_运维_23

# 镜像打包备份
sudo docker save -o 保存的文件名 镜像名

【只有打包后才能发送】

DOCKER容器管理工具 docker容器应用_Docker_24

# 镜像解压
sudo docker load -i 文件路径/备份文件

DOCKER容器管理工具 docker容器应用_Docker_25