作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
我们在上一章,讲了虚拟化,虚拟化是把硬件虚拟化,然后创建出来的虚拟机完全隔离,而Docker则是软件(内核)虚拟化,他的隔离性会低于虚拟机。我们将通过3-4周来讲解Docker相关内容,由于涉及到内容较多,就不一一列出来具体的细节,主要从以下几个方面来讲解:
Docker基本情况
Docker基本命令(本小节属于)
Dockerfile
Docker镜像
Docker仓库
Docker原理
Docker网络&存储&日志
Docker-Compose
Docker番外篇
前面我们经过4个小节我们介绍了docker的基本情况,包括什么是docker,docker的几种安装方式,docker的详细信息和目录介绍,最后介绍了daemon.json这个配置文件。下面的几个小节,我们将介绍docker的相关操作命令。
Docker容器的生命周期里分为五种状态,其分别代表着:
Created:容器已经被创建,容器所需的相关资源已经准备就绪,但容器中的程序还未处于运行状态。
Running:容器正在运行,也即容器中的应用正在运行。
Paused:容器已暂停,表示容器中的所有程序都处于暂停状态。
Stopped:容器处于停止状态,占用的资源和沙盒环境都依然存在,只是容器中的应用程序均已停止。
Deleted:容器已删除,相关占用的资源及存储在Docker中的管理信息也都已释放和移除。
这里我们其实最常用的状态就是Running和Stopped,其他使用相对较少。
此图来源于互联网
容器生命周期命令
docker create : 创建一个新的容器但不启动它(一般不单独使用)。
[root@localhost ~]# docker create 192.168.31.43:5000/centos:7
4635cab4613b7b210315de4f999470fe1c55b71f35b63816b8a0967a7e1ce96f
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4635cab4613b 192.168.31.43:5000/centos:7 "/docker-entrypoint.…" 3 seconds ago Created blissful_hermann
docker start : 启动一个或多个已经被停止的容器
docker run : 创建一个新的容器并启动它(等于cerate+start)(使用最多)。
docker kill : 杀掉一个运行中的容器(类似kill -9)。
docker stop : 停止一个运行中的容器(类似先执行kill ,如果未成功再执行kill -9)。
docker restart : 重启容器。
docker rm : 删除一个或多个容器,如果运行中的容器需要加一个参数 -f才能删除。
docker pause : 暂停容器中所有的进程。
docker unpause : 恢复容器中所有的进程。
docker run :docker run里面最重要的命令之一,因为他是创建容器最常使用的命令,如果创建容器使用的镜像不存在,会先下载镜像。
-i 保持标准输入打开,允许用户输入命令。
-t 分配一个伪终端,使得用户可以在容器中看到输出并进行交互。
-it 创建容器并进入容器。
一般情况下-it都会放置在一起使用,这里没有解释前台和后台的问题,这个问题哦我们稍后单独来讲。
-d 后台运行。
--rm 退出时删除容器。
--restart=always docker 服务重启以后,容器是否会自动启动,如果不加这个参数则默认不会启动。
-h 容器主机名。
--name 容器的名字。
-e 环境变量,后面需要注入具体环境变量,比如:-e a=b。
-v 文件或者目录挂载,避免容器删除数据丢失。如果本地目录不存在,则会创建对应名字的目录。
-p 端口映射,把容器的端口暴露到主机对应的端口,比如-p 800:80(前面是主机端口,后面是容器端口)。
当然,这里的参数只是我比较常用的,其实还有更多的参数,这里并没有讲。而且这里的参数有些可以有多个,比如-v 和 -p等。
docker run \
-d \
--name nginx \
-p 80:80 \
-v /tmp:/tmp \
--restart=always \
192.168.31.43:5000/nginx
这个命令的意思启动一个容器,具有下面的属性:后台运行,指定容器的名字为name,服务器80端口映射到容器内部80端口,服务器的/tmp目录映射到容器内部/tmp目录,容器会随着docker服务启动自动启动容器,使用的镜像名字。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。