Docker从安装到使用(根据Spring Cloud与Docker微服务实战一书总结)

目录

1.Docker简介

2.Docker版本

3.Docker安装

4.Docker常用命令

5.Docker容器常用命令


 

1.Docker是一个开源的容器引擎,它有助于更快地交付应用。Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用Docker,可更快地打包、测试以及部署应用程序,并可缩短从编写到部署运行代码的周期

2.Docker可分为两种版本:Docker EE(企业版)和Docker CE(社区版)。Docker CE是免费的Docker产品的名称,Docker CE包含了完整的Docker平台,非常适合开发人员和运维团队构建容器APP。

3. 安装Docker

3.1 CentOS安装:

在CentOS中,老版本Docker的软件包名是docker或docker-engie,而Docker CE的软件包名称是docker-ce。因此,若已安装过老版本的Docker,需使用如下命令卸载。

sudo yum remove docker \ docker-common \ docker-selinux \ docker-engine

需要注意的是,执行该命令只会卸载Docker本身,不会删除Docker存储的文件,例如镜像、容器、卷以及网络文件等。这些文件保存在/var/lib/docker目录中,需要手动删除。

安装仓库

3.1.1.执行以下命令,安装Docker所需的包。其中,yum-utils提供了yum-config-manager工具;device-mapper-persistent-data及lvm2则是devicemapper存储驱动所需的包。

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

 3.1.2.执行如下命令,安装stable仓库。必须安装stable仓库,即使你想安装edge或test仓库中的Docker构建版本。

sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo

注意后面的地址链接可以换成阿里云的路径:https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.1.3.[可选]执行如下命令,启用edge及test仓库。edge/test仓库其实也包含在了docker.repo文件中,但默认是禁用的,可使用以下命令启用。

sudo yum-config-manager --enable docker-ce-edge    #启用edge仓库

sudo yum-config-manager --enable docker-ce-test      #启用test仓库

若需再次禁用,可加上--disable标签。例如,执行如下命令即可禁用edge仓库。

 sudo yum-config-manager --disable docker-ce-edge

安装Docker CE 

3.2.1.执行以下命令,更新yum的包索引

sudo yum makecache fast

3.2.2.执行如下命令即可安装最新版本的Docker CE

sudo yum install docker-ce 

3.2.3.在生产环境中,可能需要指定想要安装的版本,此时可使用如下命令列出当前可用的Docker版本。

yum list docker-ce.x86_64 --showduplicates | sort -r 

列出版本后,可使用如下命令安装想要安装的Docker CE版本。

sudo yum install docker-ce-<VERSION> 

3.2.4.启动Docker。

sudo systemctl start docker 

3.2.5.验证安装是否正确。

sudo docker run hello-world 

然后Docker将下载测试镜像,并使用该镜像启动一个容器。如能够看到类似如下的输出,说明安装成功。(下图为转载借用)

Docker从安装到使用(根据Spring Cloud与Docker微服务实战一书总结) 3.2.6.升级Docker CE

sudo yum makecache fast

然后按照安装Docker的步骤,即可完成升级。

3.2.7.卸载

sudo yum remove docker-ce 

若需删除Docker存储的文件,例如镜像、容器、卷等信息,需执行如下命令:

sudo rm -rf /var/lib/docker 

4. Docker常用命令

4.1.1 搜索镜像

可使用docker search命令搜索存放在Docker Hub中的镜像.

命令格式: docker search [OPTIONS] TERM

示例:

docker search java

 执行该命令后,会在Docker Hub中搜索含有java 这个关键词的镜像仓库。

4.1.2 下载镜像

命令格式:docker pull [OPTIONS] NAME[:TAG|@DIGEST]

示例 1:

docker pull java

执行该命令后,Docker会从Docker Hub中的Java仓库下载最新版本的java镜像。

示例 2:该命令还可指定想要下载的镜像标签以及Docker Registry地址,例如

 docker pull reg.itmuch.com/java:7

这样就可从指定Docker Regitry中下载标签为7的Java镜像。

4.1.3  列出镜像

使用docker images命令即可列出已下载的镜像。

命令格式:docker images [OPTIONS] [REPOSITORY[:TAG]]

示例:

docker images

docker images java

docker images java:8

docker images --digests

docker images --filter "dangling=true"     #展示虚悬镜像

 4.1.4 删除本地镜像

使用docker rmi命令即可删除指定镜像。

命令格式:docker rmi [OPTIONS] IMAGE [IMAGE...]

示例1:删除指定名称的镜像

docker rmi hello-world

示例2:删除所有镜像

docker rmi -f $(docker images) 

4.1.5 保存镜像

使用docker save即可保存镜像。

命令格式:docker save [OPTIONS] IMAGE [IMAGE...]

示例:

#将busybox保存为busybox.tar

docker save busybox > busybox.tar

docker save --output busybox.tar busybox

4.1.6 加载镜像

使用docker load命令即可加载镜像。

命令格式:docker load [OPTIONS] 

示例:

#从busybox.tar文件中加载镜像。

docker load < busybox.tar

docker load --input busybox.tar 

4.1.7 构建镜像

通过Dockerfile构建镜像。

命令格式:docker build [OPTIONS] PATH | URL | -

示例:

 docker build -t itmuch/some-repo:some-tag .        #注意后面的点哦

5.Docker容器常用命令

5.1.1 新建并启动容器

使用docker run命令即可新建并启动一个容器。

示例1:

docker run java /bin/echo 'Hello World' 

这样终端会打印Hello World的字样,跟在本地直接执行/bin/echo 'Hello World'一样。

示例2:

docker run -d -p 91:80 nginx 

这样就可以启动一个Nginx容器。访问http://Docker宿主机IP:91/。会看到Nginx的欢迎页面。 

5.1.2 列出容器

使用docker ps命令即可列出运行中的容器。

命令格式:docker ps [OPTIONS]

示例:

docker ps

若需列出所有容器(包括已停止的容器),可使用-a参数。

5.1.3 停止容器

使用docker stop命令即可停止容器。

命令格式:docker stop [OPTIONS] CONTAINER [CONTAINER...]

示例:

docker stop 784fd3b294d7

其中 784fd3b294d7是容器ID,当然也可以使用docker stop 容器名称来停止指定容器。

5.1.4 强制停止容器

可使用docker kill命令发送SIGKILL信号来强制停止容器。

命令格式:docker kill [OPTIONS] CONTAINER [CONTAINER...]

示例:

docker kill 784fd3b294d7 

5.1.5 启动已停止的容器 

使用docker run命令即可新建并启动一个容器。对于已停止的容器,可使用docker start命令来启动。

命令格式:docker start [OPTIONS] CONTAINER [CONTAINER...]

示例:

docker start 784fd3b294d7 

5.1.6 重启容器

可使用docker restart命令来重启容器。该命令实际上是先执行了docker stop命令,然后执行了docker start命令。

命令格式:docker restart [OPTIONS] CONTAINER [CONTAINER...]

示例:

docker restart 784fd3b294d7 

5.1.7 进入容器

在某些场景下,可能需要进入运行中的容器。

使用docker attach命令进入容器。例如:

docker attach 784fd3b294d7  

在很多场景下,使用docker attach命令并不方便。当多个窗口同时attach到同一个容器时,所有窗口都会同步显示。同理,如果某个窗口发生阻塞,其他窗口也无法执行操作。

使用nsenter进入容器。

nsenter工具包含在util-linux2.23或更高版本中。为了连接到容器,需要找到容器第一个进程的PID,可通过以下命令获取:

docker ps       #先列出容器,获取到CONTAINER ID(容器ID)

docker inspect --format "${{State.Pid}}" 784fd3b294d7              #获取到PID

nsenter --target PID --mount --uts --ipc --net --pid

5.1.8 删除容器

使用docker rm命令即可删除指定容器。

命令格式:docker rm [OPTIONS] CONTAINER [CONTAINER...]

示例1:删除指定容器

 docker rm 784fd3b294d7 

该命令只能删除已停止的容器,如需删除正在运行的容器,可使用-f参数。

示例2:删除所有容器

docker rm -f $(docker ps -a -q) 

5.1.9 导出容器

使用docker export命令可将容器导出成一个压缩包文件。

命令格式:docker export [OPTIONS] CONTAINER

示例:

#将red_panda容器导出成latest.tar文件

docker export red_panda > latest.tar

docker export --output="latest.tar" red_panda

5.1.10 导入容器

使用docker import命令即可从归档文件导入内容并创建镜像。

命令格式:docker import [OPTIONS] file|URL| - [REPOSITORY[:TAG]]

示例:

#从nginx2.tar文件导入,并创建nginx镜像

docker import nginx2.tar nginx