Docker运行原理

Docker容器状态流转.png
 在这幅图中,我们可以看到,Docker 容器的生命周期里分为五种状态,其分别代表着:
   Created:容器已经被创建,容器所需的相关资源已经准备就绪,但容器中的程序还未处于运行状态。
   Running:容器正在运行,也就是容器中的应用正在运行。
   Paused:容器已暂停,表示容器中的所有程序都处于暂停 ( 不是停止 ) 状态。
   Stopped:容器处于停止状态,占用的资源和沙盒环境都依然存在,只是容器中的应用程序均已停止。
   Deleted:容器已删除,相关占用的资源及存储在 Docker 中的管理信息也都已释放和移除。

创建容器

docker create nginx1.12

[root@iZ2ze3gye2rcpntgyzryzbZ ~]# docker create mysql
27e4914213a2a7ea1c3408edd68681e68f1ef3730a4a71a370ee7d564f00559a

docker create --name mysql0 mysql

[root@iZ2ze3gye2rcpntgyzryzbZ ~]# docker create --name mysql0 mysql
a33806d65b3d862eea01c4a6db0d66597280c471d77848ce5d6a8890b3432cf7

启动容器

docker start mysql0

[root@iZ2ze3gye2rcpntgyzryzbZ ~]# docker start mysql0
mysql0

在 Docker 里,还允许我们通过 docker run 这个命令将 docker create 和 docker start 这两步操作合成为一步,进一步提高工作效率。

docker run --name mysql0 -d mysql (-d 或 --detach 这个选项告诉 Docker 在启动后将程序与控制台分离,使其进入“后台”运行。)

docker run --name mysql0 -d mysql
89f2b769498a50f5c35a314ab82300ce9945cbb69da9cda4b022646125db8ca7

查看容器内容

docker ps -a (-a或-all表示查看所有)

[root@iZ2ze3gye2rcpntgyzryzbZ ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
6647f2a5fdcc        redis               "docker-entrypoint.s…"   9 seconds ago       Up 8 seconds               6379/tcp            redis
a33806d65b3d        mysql               "docker-entrypoint.s…"   12 minutes ago      Exited (1) 5 minutes ago                       mysql0
27e4914213a2        mysql               "docker-entrypoint.s…"   14 minutes ago      Created                                        quirky_noether

停止和删除容器

docker stop mysql0 容器停止

mysql0
[root@iZ2ze3gye2rcpntgyzryzbZ ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
6647f2a5fdcc        redis               "docker-entrypoint.s…"   6 minutes ago       Up 6 minutes                6379/tcp            redis
a33806d65b3d        mysql               "docker-entrypoint.s…"   19 minutes ago      Exited (1) 32 seconds ago                       mysql0
27e4914213a2        mysql               "docker-entrypoint.s…"   21 minutes ago      Created                                         quirky_noether

docker rm mysql0 删除容器

[root@iZ2ze3gye2rcpntgyzryzbZ ~]# docker rm mysql0
mysql0
[root@iZ2ze3gye2rcpntgyzryzbZ ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
6647f2a5fdcc        redis               "docker-entrypoint.s…"   7 minutes ago       Up 7 minutes        6379/tcp            redis
27e4914213a2        mysql               "docker-entrypoint.s…"   22 minutes ago      Created                                 quirky_noether

进入容器

docker exec

[root@iZ2ze3gye2rcpntgyzryzbZ ~]# docker exec redis more /etc/hostname
::::::::::::::
/etc/hostname
::::::::::::::
6647f2a5fdcc
通过bash或sh进入容器内部
[root@iZ2ze3gye2rcpntgyzryzbZ ~]# docker exec -it redis bash
root@6647f2a5fdcc:/data# 
     在借助 docker exec 进入容器的时候,我们需要特别注意命令中的两个选项不可或缺,即 -i 和 -t ( 它们俩可以利用简写机制合并成 -it )。
 其中 -i ( --interactive ) 表示保持我们的输入流,只有使用它才能保证控制台程序能够正确识别我们的命令。而 -t      ( --tty ) 表示启用一个伪终端,形成我
 们与 bash 的交互,如果没有它,我们无法看到 bash 内部的执行结果。

衔接到容器

docker attach redis

你可能感兴趣的:(Docker运行原理)