架构

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

docker不同容器可以挂载到同一个目录吗_nginx


docker不同容器可以挂载到同一个目录吗_docker_02

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

  1. Docker 容器通过 Docker 镜像来创建。
  2. 容器与镜像的关系类似于面向对象编程中的对象与类。容器是动态的运行实例。

本地主机安装了docker, docker引擎服务器端会以守护进程运行。我们可以通过客户端命令操作docker。对应镜像会先在本地检索,没有会去网络中心仓库检索下载,然后运行即为容器。这样对于打包应用和运行很方便。

Linux可以直接下载重定向到shell安装

sudo wget -qO- https://get.docker.com/ | sh

apt也自带了docker源,但是版本比较老就是

sudo apt instll docker.io

然后可以如下给用户授予docker使用的超级权限

sudo usermod -aG docker your-user


实战

  1. 信息、版本
docker info        # 查看docker信息
docker verion      # 查看客户端和服务端(引擎)版本
  1. 查看本地的docker镜像
docker images

docker不同容器可以挂载到同一个目录吗_Docker_03


3. 删除本地镜像

docker rmi 名字/id

rm是删除容器,rmi是删除镜像,要删除镜像,需要先删掉其所有容器实例(即便停止运行的也不行,一定要删掉),不然报错如下:
Error response from daemon: conflict: unable to delete 7042885a156a (must be forced) - image is being used by stopped container da58bfa16f38

  1. 查看容器
# 查看在运行的容器
docker ps
# 查看所有历史容器
docker ps -a
  1. 停止运行的容器
docker stop 容器id
  1. 删除容器
docker rm 容器id

# 删除所有停止了的容器
docker rm $(docker ps -qf status=exited)
# 删除所有镜像,语法类似SQL的子查询, -q是只返回容器id
docker rm `docker ps -a -q`
  1. 运行镜像->容器
docker run [option] 镜像名

# 如运行nginx, 将80端口映射到8080端口,运行成功,可以输入localhost:8080打开nginx主页
docker run -p 8080:80 -d nginx

docker不同容器可以挂载到同一个目录吗_nginx_04

有些镜像运行是一定要加参数配置的。会先在本地检索,没有去中心仓库下载

  1. 复制修改容器
# 复制进入容器
docker cp 文件 容器id://路径
# 从容器复制出来
docker cp 容器id:/etc/nginx/nginx.conf /home/..
# 如以下修改nginx首页
docker cp index.html 84a00fc6f89c://usr/share/nginx/html/

注意:只是修改了容器,可以直接看到变化。但是镜像没有被修改。所有下次运行还是没有变化。

  1. 修改容器提交到新镜像
docker commit -m "注释" 容器id 新镜像名字

docker不同容器可以挂载到同一个目录吗_docker架构与简单实战_05