docker起步入门,docker的学习与使用笔记


你会常常为了安装一些例如nginx、redis、mysql等程序而感到困扰吗?没错,大家都觉得每次安装这些东西需要配置一大堆而感到困扰。docker则是一款能够解决该困扰的神器工具。本文将介绍docker的起步使用,拉取并运行一个nginx容器的笔记。



docker的logo是一只鲸鱼,上面载着大量的集装箱:





一些蹩脚的解释:



  1. docker镜像:

将一些程序,比如nginx、redis甚至是自己写的程序运用docker定的规则进行打包。打包后的镜像可以很方便的移植,不用担心文件的遗漏等不可预知的问题。


  1. docker容器:

一个类似于虚拟机的程序,所有的docker镜像都运行在docker容器中,这样无论未来移植在哪个平台(操作系统),docker镜像内的程序环境都是不受影响的。


  1. docker仓库:

一个用来保存各种docker镜像的平台,有一些公开的平台,里面有官方制作好的镜像,可以直接通过命令下载下来后直接在本地docker容器中运行。




docker的安装



windows平台


下载地址:https://www.docker.com/products/docker-desktop


傻瓜式安装:下一步 -> 下一步 -> 下一步 ……


检查安装是否成功:启动cmd或powershell,使用命令


$ docker version




Mac平台


下载地址:https://www.docker.com/products/docker-desktop


莫得钱买不起mac,安装方式参见百度baidu.com



Linux平台(Cent OS、ubuntu)


系统:Cent OS


1. 检查系统内核版本,要求系统内核版本大于3.10


$ uname -r



2. 使用root权限登入终端


$ sudo



3. 卸载旧版本


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



4. 安装需要的软件包


$ yum install -y yum-utils \
device-mapper-persistent-data \
lvm2



5. 设置yum源


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



6. 安装docker


$ yum install -y docker-ce



7. 启动docker服务


$ systemctl start docker.service



8. 查看docker安装版本(验证安装是否成功)


$ docker version



系统:ubuntu


1. 检查系统内核版本,要求系统内核版本大于3.10


$ uname -r



2. 使用root权限登入终端


$ su



3. 更新apt-get


$ apt-get update



4. 安装docker


- 使用Ubuntu的软件包安装(与下二选一)

$ apt-get install -y docker.io


- 获取官网安装最新版本(与上二选一)

$ curl -s https://get.docker.com|sh



5. 启动docker服务


$ service docker start



6. 查看docker安装版本(验证安装是否成功)


$ docker version




docker拉取远程镜像



docker镜像有很多平台,笔者使用的是https://hub.daocloud.io/速度很快,而且很好用


打开网站,搜索想要拉取的镜像,这里举例nginx。



点击打开镜像详细页面后,我们可以找到镜像的拉取地址:



复制,粘贴在我们得终端中。


  1. 使用这样的命令我们就可以拉取一个镜像到本地
$ docker pull daocloud.io/library/nginx:1.13.0-alpine



  1. 然后我们可以使用以下命令查看一下本机当前所拥有的镜像
$ docker images



我们可以看到nginx的镜像已经拉取到我们的镜像库中了。



  1. 接下来如果你想要删除掉这个镜像,可以使用以下命令
$ docker rmi [IMAGE ID]

IMAGE ID:即是上图中该镜像的ID



  1. 接下来我们需要启动这个镜像,使用如下命令进行启动(前台启动)
$ docker run daocloud.io/library/nginx


除此外,我们可以通过加一些参数改变启动的的方式,例如:


# 后台启动
$ docker run -d daocloud.io/library/nginx

# 将运行软件的容器内的端口映射出来的启动(指定将容器内部的80端口映射到本地计算机的8080端口上)
$ docker run -d -p 8080:80 daocloud.io/library/nginx

# 将容器使用的端口映射到本地计算机的随机端口上(在查看进程中找到这个随机端口进行访问)
$ docker run -d -P daocloud.io/library/nginx



  1. 我们可以再打开一个终端,使用一个命令来查看这个进程
$ docker ps



我们可以看到如果我们使用了 -P 启动了容器后,docker将容器内部的80端口映射到了本地的32768端口。


既然docker镜像在启动时都会创建一个docker容器,那么我们怎么才可以看到这个docker创建的容器列表呢?



  1. 查看docker启动过的容器列表
$ docker ps -a

列表里包含的是运行中和已经被停止运行的容器。


笔者在上面描述了docker容器非常的类似一个虚拟机,而我们的程序(nginx)就是运行在容器中的。那么我们有没有办法可以进入这个虚拟机呢中做一些操作呢?当然可以!



  1. 进入docker容器并分配一个伪终端
$ docker exec -it [CONTAINER ID] bash

CONTAINER ID:进程列表中容器的id



然后你会发现你仿佛进入了一个新的世界,就像是一个全新的计算机——



这是一个类似linux的操作系统,而我们的nginx就是运行在其中的,同样我们可以在里面使用linux命令做一些操作。



  1. 离开docker容器
$ exit


现在呢,如果你想关闭这个nginx的容器了。那么如果你是前台启动的,可直接使用 ctrl + c 停止容器的运行,但如果你是后台启动的,你可能会需要以下命令:



  1. 停止docker容器
$ docker stop [CONTAINER ID]

CONTAINER ID:进程列表中容器的id


当然,还存在一种不太雅观的进程停止方式,那就是



  1. 强制停止docker容器进程
$ docker kill [CONTAINER ID]

CONTAINER ID:进程列表中容器的id


现在呢,我们可以再通过 docker ps 查看一下我们的进程列表,发现已经没有进程在活动了,但是我们再查看一下容器列表,我们可以找到我们启动过的容器,怎么删除这些容器呢?



  1. 移除docker容器
$ docker rm [CONTAINER ID]

CONTAINER ID:进程列表中容器的id




最后有一个小技巧需要注意的是: docker中很多的操作都是通过id来判断操作哪个容器的,但是这时候输入繁杂且长的id会显得很麻烦。


当需要操作的镜像不是很多或者容器不是很多的情况下,我们可以判断当这个id的前几位互不相同时,我们可以使用前几位的id来代替整体id,docker将会自动识别出唯一的那项结果。


举例:


容器列表中存在如下两个id


第一个容器id:b8651fa57446

第二个容器id:c8b493a024b1


当我们要执行移除第一个容器时,我们可输入命令:

docker rm b8


b8为第一个容器id的前两位














作者:筱剑Beta

2019-12-20 14:27:08.0编辑

2019-07-16 14:42:08.0创作

所属分类:Docker

linux
cent os
docker
nginx
发布

街角有人祝福,巷口有人哭,这里却没人评论ε=(´ο`*)))