- 容器的概念
- Docker镜像
- Docker容器
- 容器的基本操作
- 查看容器
- 启动容器
- 启动已经终止的容
- 以守护进程的方式启动容器
- 停止容器
- 删除容器
- 进入容器
- 基于容器创建镜像
Docker大部分的操作都是围绕着它的三大核心概念:镜像、容器和仓库。因此,准备把握这三大核心概念对于掌握Docker技术尤为重要。
Docker镜像Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。
Docker容器例如:一个镜像可以包含一个基本你的操作系统环境,里面仅安装了Apache应用程序(或用户需要的其
它软件)。可以把它称为一个Apache镜像。
镜像是创建Docker容器的基础。
通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像,用户甚
至可以从网上下载一个已经做好的应用镜像直接使用。
容器就是运行镜像的实例. 镜像看作是静态的,容器是动态的。
Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。
容器是从镜像创建的应用运行实例。它可以启动、开始、停止、删除,而这些容器都是彼此相互隔离、
互不可见的。
可以把容器看做一个简易版本的Linux系统环境(包括root用户权限、进程空间、用户空间和网络空间等)
以及运行在其中的应用程序打包而成的盒子。
docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。
wuyou@unbutu:~$ docker Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers
可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。
例如我们要查看 docker images 指令的具体使用方法:
查看容器wuyou@unbutu:~$ docker images --help
示例一:
wuyou@unbutu:~$ docker ps
注意:
管理docker容器可以通过名称,也可以通过ID
示例二:
ps是显示正在运行的容器, -a是显示所有运行过的容器,包括已经不运行的容器
启动容器wuyou@unbutu:~$ docker ps -a
命令格式:
docker run <参数,可选> [docker_image] [执行的命令
docker run 其实 是两个命令的集合体 docker create + docker start
示例一: 启动一个镜像,输入信息后关闭容器
wuyou@unbutu:~$ docker run nginx /bin/echo "hello docker" hello docker
示例二: 启动nginx
wuyou@unbutu:~$ docker run nginx
查看容器信息
通过查看容器信息,获取容器的IP信息---------
wuyou@unbutu:~$ docker inspect boring_ride
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null
}
}
访问nginx
启动已经终止的容wuyou@unbutu:~$ curl http://172.17.0.2
在生产过程中,常常会出现运行和不运行的容器,我们使用 start 命令开起一个已关闭的容器
命令格式:
docker start [OPTIONS] CONTAINER [CONTAINER...]
示例:
wuyou@unbutu:~$ docker start boring_ride boring_ride wuyou@unbutu:~$
测试
wuyou@unbutu:~$ curl http://172.17.0.2以守护进程的方式启动容器Welcome to nginx! Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.Thank you for using nginx.
wuyou@unbutu:~$
更多的时候,需要让Docker容器在后台以守护形式运行。此时可以通过添加-d参数来实现
命令格式:
docker run -d [image_name] command …
示例:
wuyou@unbutu:~$ docker run -d nginx 1e25168a4e8563ede8396ab434f4fcc85effc5170aad22eeedd60c6d2c66bce5 wuyou@unbutu:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1e25168a4e85 nginx "nginx -g 'daemon of…" 7 seconds ago Up 6 seconds 80/tcp heuristic_clarke 98809071af66 nginx "nginx -g 'daemon of…" 17 minutes ago Up 3 minutes 80/tcp boring_ride wuyou@unbutu:~$停止容器
示例一: 正常停止容器
wuyou@unbutu:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1e25168a4e85 nginx "nginx -g 'daemon of…" 2 minutes ago Up 2 minutes 80/tcp heuristic_clarke wuyou@unbutu:~$ wuyou@unbutu:~$ wuyou@unbutu:~$ wuyou@unbutu:~$ docker stop 1e25168a4e85 1e25168a4e85 wuyou@unbutu:~$
示例二:非正常停止容器
删除容器wuyou@unbutu:~$ docker run -d nginx
示例一: 正常删除,删除已经关闭的
wuyou@unbutu:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
206bc8ad619a nginx “nginx -g 'daemon of…” 3 minutes
ago Exited (137) 2 minutes ago reverent_haibt
1e25168a4e85 nginx “nginx -g 'daemon of…” 6 minutes
ago Exited (0) 4 minutes ago
heuristic_clarke
7da6d85f2655 nginx “nginx -g 'daemon of…” 11 minutes
ago Exited (0) 10 minutes ago strange_neumann
8ea249ee5428 nginx “nginx -g 'daemon of…” 12 minutes
ago Exited (0) 12 minutes ago
compassionate_mcclintock
98809071af66 nginx “nginx -g 'daemon of…” 23 minutes
ago Exited (0) 4 minutes ago boring_ride
c5187780ca57 nginx “/bin/echo 'hello do…” 24 minutes
ago Exited (0) 24 minutes ago zen_goldstine
cf175bb13b8e hello-world “/hello” About an
hour ago Exited (0) About an hour ago busy_jepsen
wuyou@unbutu:~$ docker rm busy_jepsen
busy_jepsen
wuyou@unbutu:~$ docker ps -a
wuyou@unbutu:~$
示例二: 强制删除(删除正在运行的,不是运行的不能删除)
wuyou@unbutu:~$ docker run nginx
-f 强制删除
docker rm -f adoring_newton
示例三: 强制批量删除
删除全部的容器,不管运行的还是关闭的(慎用)
进入容器wuyou@unbutu:~$ docker rm -f $(docker ps -a -q)
示例一: 创建容器的同时进入容器
wuyou@unbutu:~$ docker run --name “myubuntu” -it ubuntu /bin/bash
wuyou@unbutu:~$ docker run --name nginx-1 -it nginx /bin/bash 说明: #docker 容器启动命令参数详解: #--name:给容器定义一个名称 #-i:则让容器的标准输入保持打开。 #-t:让docker分配一个伪终端,并绑定到容器的标准输入上 #/bin/bash:执行一个命令
示例二: 手工方式进入容器
wuyou@unbutu:~$ docker run -d nginx wuyou@unbutu:~$ docker exec -it clever_johnson /bin/bash
测试
wuyou@unbutu:~$ curl http://172.17.0.2
示例三:生产方式进入容器
docker.sh
创建脚本
wuyou@unbutu:~$ vim docker.sh
#!/bin/bash
# 定义进入仓库函数
docker_in(){
NAME_ID=$1
PID=$(docker inspect --format {{.State.Pid}} $NAME_ID)
sudo nsenter --target $PID --mount --uts --ipc --net --pid
}
docker_in $1
wuyou@unbutu:~$ chmod +x docker.sh
wuyou@unbutu:~$ ./docker.sh clever_johnson
- 下次跟新



