1.docker的基本使用
2024-10-20 16:24:26
1.简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口
在之前的项目部署中,我们需要在linux服务器上安装python,nginx,uwsgi,redis, ,mysql等等,这是一个非常耗时的过程,可能要花费一天的时间,如果我们在以后迁移到其他服务器怎么办,难道要重新部署一次吗?!!!
为此我们可以使用docker技术,将所有的部署放在docker中,然后将docker打包,如果以后需要迁移,直接将镜像发送到服务器,一键启动
1.1 Docker的应用场景
Web 应用的自动化打包和发布。
自动化测试和持续集成、发布。
1.2 相关链接
Docker 官网:https://www.docker.com
Github Docker 源码:https://github.com/docker/docker-ce
2.docker的生命周期概念
镜像:一个系统的只读版本,例如一个微型的centos或者ubuntu系统
容器:容器进程,应用程序以后封装在容器中运行,相互隔离
仓库:存储镜像的一个仓库地址,便于和他人共享镜像文件
我们基于镜像运行容器,一个镜像可以运行多个容器实例,这样的话多个容器内的环境也是一模一样的
3.安装docker
3.1 下载
使用官方安装脚本自动安装
# 下载curl
sudo apt install curl
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
3.2 确保docker服务已打开
# 查看docker服务状态
sudo service docker status
# 重启docker服务
sudo service docker restart
# 关闭docker
sudo service docker stop
# 开启docker服务
sudo service docker start
3.3 测试docker是否成功安装
sudo docker run hello-world
显示如下下界面代表安装成功
4 卸载docker
删除安装包:
sudo apt-get purge docker-ce
删除镜像、容器、配置文件等内容:
sudo rm -rf /var/lib/docker
5 操作docker
docker服务操作
sudo service docker start # 开启docker服务
sudo service docker stop # 关闭docker服务
sudo service docker restart # 重启docker服务
sudo service docker status # 查看docker服务状态
5.1 查看所有镜像
sudo docker images
包括:镜像名称 镜像ID 镜像创建时间 镜像大小
5.2 查看容器
docker ps # 查看存活的容器
docker ps -a # 查看所有容器,包括已退出的容器
5.3 运行docker
在运行一个镜像的时候,如果容器中没有存活的进程,容器就会直接挂掉
# 简单运行一下,通常会执行一下容器就会挂掉
docker run 镜像名称
# 交互式的运行一个的docker容器,-i:交互式命令, -t:开启一个终端
docker run -it 镜像名称 /bin/bash # 后台运行一个docker容器,并指定运行shell代码 -d:让容器后台运行, -c:运行的shell命令
docker run -d 镜像名称 /bin/sh -c "while true;do echo 辛苦了,学习linux; sleep 1;done" # 运行容器并指定名称
docker run --name xxx -it 镜像名称 /bin/bash # 运行容器并指定端口映射
docker run --name xxx -it 镜像名称 -p 6000:5000
# 运行容器并指定端口映射,文件夹映射
docker run --name xxx -it 镜像名称 -p 6000:5000 -v 宿主机目录:容器目录 -e 环境变量key:环境变量velue
# 运行容器并制定端口映射,文件夹映射和环境PATH映射
docker run --name xxx -it 镜像名称 -p 6000:5000 -v 宿主机目录:容器目录 -e
# 进入一个存活的容器 docker exec -it 容器id /bin/bash # 容器重启 docker restart 容器id # 容器停止 docker stop 容器id # 容器启动 docker start 容器id
sudo docker run -d --name kunmzhao -e PYTHONPATH=/home/auto/code/tng-synlite -v /host/path/to/broad-tests:/broad-tests -v /home/mars/kunmzhao/ata_script:/ata_scripts_containers.cisco.com/synergy_lite/runnertest:3.6.15
5.4 docker镜像的获取
方式一:dockerhub获取,先搜索后下载
docker search 镜像名称docker pull 镜像名称
方式二:自己制作docker commit 容器id 新镜像名称
5.5 删除镜像
# 删除镜像要确保没有使用该镜像的容器,否则失败
docker rmi 镜像id # 批量删除镜像
docker rmi `docker iamges -aq`
5.6 删除容器
# 确保容器是未运行的
docker rm 容器id # 批量删除容器
docker rm `docker ps -aq`
5.7 查看指定容器的运行日志
docker logs 容器id
docker logs -f 容器id #实时刷新容器内的日志,例如检测nginx等日志信息
5.8 镜像的制作,导出及导入
- 镜像制作
docker commit 容器ID 镜像名称
- 镜像导出
docker save 镜像id > 镜像的压缩文件
- 镜像导入
初次导入镜像没有tag,添加一个即可
docker load < 镜像的压缩文件
docker tag 镜像id 镜像新名称
最新文章
- supervisor的配置
- Linux查看文件编码格式及文件编码转换
- android开发艺术探索
- Android 开发中使用Intent传递数据的方法
- ios 加载本地html css文件 ps:css和html必须在同一文件夹下面
- Python脚本控制的WebDriver 常用操作 <;十四>; 处理button dropdown 的定位
- 获取json对象的id或者根据name获取id
- lnux内核的malloc实现(Oracle的cache buffer影子)
- mockito学习笔记
- VMWare Workstation:局域网PC连接虚拟机里的远程桌面或端口
- mysql笔记6之数据类型
- PHP根据URL提取根域名
- WPF中的imagesource 和内存图片的处理
- 【解决问题】SSH连不上Ubuntu虚拟机解决办法
- Mac 下 Eclipse 添加 Dynamic Web Project 并配置 Tomcat
- CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-5安装JDK及安装mysql数据库
- MT【253】仿射和蒙日圆
- bzoj2212[Poi2011]Tree Rotations [线段树合并]
- CSS初始化示例代码
- 常见的CSS属性和值CascadingStyleSheets
热门文章
- Android 自动取色并设置沉浸式状态栏
- 【JDBC】学习路径10-c3p0数据源的使用(JDBC完结)
- 【Java】学习路径34-文件IO练习题
- .net core + eureka + spring boot 服务注册与调用
- SpringBoot使用自定义注解+AOP+Redis实现接口限流
- ASP.NET MVC 对于视图引擎的优化
- Java 异步编程 (5 种异步实现方式详解)
- 传输层协议(tcp ip和udp 三次握手 四次握手)
- Kubernetes DevOps: Gitlab
- 复现CVE-2022-10270(向日葵远程代码执行漏洞)