docker 创建并运行容器的过程:
- 检查本地镜像存在?否则从公有仓库拉取。
- 利用镜像创建并启动一个容器
- 分配一个文件系统union,在此之上在套一层可读可写union文件系统。
- 利用宿主机的网桥接口,桥接一个虚拟接口倒容器中
- 从地址池分配一个ip给容器
- 执行指定的程序
- 程序执行完成后,容器终止。
案例:
- docker run -it ubuntu /bin/bash #运行容器,执行bash程序,进入容器终端界面。
- 如果本地有ubuntu镜像直接运行镜像创建并运行容器,否则从远程仓库拉取镜像
- -i 让容器保持标准输入
- -t 分配一个伪终端给容器
- -p 指定端口映射 宿主机:容器 ,例如 -p 6379:6379 意味着将宿主机的6378映射到容器的6379,通俗一点就是,通过宿主机 ip:6379就可以访问到容器的6379端口。
- --link 添加链接到另一个容器;例如:docker run it --link docker_redis:redis 将该容器链接到docker_redis容器上
- -v 挂载数据卷,可理解成,linux挂载U盘那样子。
- --name 给容器设置一个别名 docker run -d --name orther_name ubuntu echo helloword
- 自定义命名容器,这样赋予一个有意义的名字给它,便于我们记忆;
- 作为其他容器链接它的一个参考。
- 以后我们可以使用别名来操作容器 例如 docker start orther_name
- 守护态运行
- 如果想让容器在后台运行 可加上 -d 参数
- docker start 运行已终止的容器
- docker ps -a -q 可以查看容器消息 参数可选
- docker logs 可以查看容器的输出信息
- 如果用户使用后台的方式运行容器,将无法查看容器信息
- 可以使用一下命令
- docker attach
- docker attach ubuntu
- docker exec
- docker exec -it 容器id /bin/bash
- 或 nesenter工具 需要独立安装 在此不做介绍
- 删除容器
- docker rmi ubuntu
- -f 强制删除
- -l 删除容器链接,保留容器
- -v 删除容器的数据卷
- 导出容器 docker export CONTAINER ID
- CONTAINER ID 使用 docker ps -a 查看
- docker export ubuntu > ubuntu.tar
- 导入容器 docker import - 容器名字:容器tag
- cat ubuntu.tar | docker import - ubuntu:latest
- 终止容器
- docker stop ubuntu
- -t 10 设定10秒后关闭终止容器
- dokcer kill ubuntu
- docker stop 先发送SIGTERM信号,10秒后在发送SIGKILL信号终止容器
- docker kill 直接发送SIGKILL信号强制终止容器
- docker stop ubuntu
- 退出容器可以按 Ctrl+d 或输入 exit 后按回车
- 创建镜像
- 若启动容器设置别名时也就是 --name xxx,报别名已被占用---我们可以这样做:
- 执行 docker ps -l 找到别名对应的容器id ,姑且当为:[container id]
- docker rm [container id]
- 注意:容器的名稱是唯一的。如果已有一個叫 redis 的容器,當你要再次使用 redis 這個名稱的時候,需要先用
docker rm
來刪除之前建立的同名容器。 -
在執行
docker run
的時候如果新增--rm
標記,則容器在終止後會立刻刪除。注意,--rm
和-d
參數不能同時使用。例如:docker -it --link docker_redis:redis --rm redis redis-cli -h redis -p 6379 这样容器执行完毕,就会删除别名。
长路漫漫而修远兮,吾将上下而求索