一、Docker是干什么的?
Docker是一种容器化技术,它利用Linux内核中的命名空间、控制组、联合文件系统等基础技术,将应用程序及其依赖项打包为容器,使应用程序能够在任何地方一致地运行。Docker可以将整个应用程序及其依赖项打包成一个可移植的容器,从而在开发、测试和生产环境中的所有计算机上确保应用程序的一致性。
二、用Docker搭建环境的步骤
使用Docker搭建环境的步骤如下:
- 安装Docker
- 编写Dockerfile,用于定义环境
- 构建镜像
- 运行容器
- 进入容器进行开发或测试
三、Docker安装
Docker的安装可以参考官方文档,具体步骤如下:
- 安装Docker CE的依赖项
- 添加Docker官方GPG密钥
- 添加Docker APT仓库
- 更新APT软件包索引
- 安装Docker CE 以下是安装Docker CE的示例代码:
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce
四、搭建Docker环境
Docker环境的搭建需要编写Dockerfile文件,以下是一个Node.js环境的Dockerfile示例:
FROM node:8.11.4
RUN npm install -g nodemon
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm", "start" ]
其中,FROM
指定了使用的基础镜像,RUN
用于运行命令,WORKDIR
指定了工作目录,COPY
用于拷贝文件,EXPOSE
指定了暴露的端口号,CMD
指定容器启动后要执行的命令。
使用以下命令构建镜像:
docker build -t mynodeapp .
使用以下命令启动容器:
docker run -d -p 3000:3000 mynodeapp
访问 http://localhost:3000
即可访问。
五、Docker命令
以下是一些常用的Docker命令:
docker build
: 构建镜像docker run
: 启动容器docker ps
: 列出正在运行的容器docker stop
: 停止容器docker rm
: 删除容器docker rmi
: 删除镜像 可以使用以下命令查看Docker命令的完整列表:
docker --help
六、Docker开发环境搭建
如果需要在本地开发,可以使用以下步骤搭建Docker开发环境:
- 创建Dockerfile文件
- 构建镜像
- 启动容器
- 在容器内进行开发 以下是Dockerfile文件的示例:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y \
curl \
git \
vim \
python \
python-pip \
software-properties-common
RUN apt-get update && apt-get install -y nodejs npm
RUN npm install -g nodemon
RUN mkdir /app
WORKDIR /app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8000
CMD [ "/bin/bash" ]
可以看到,该示例Dockerfile文件安装了 curl
、git
、vim
、python
、pip
、Node.js
、nodemon
等开发所需的各种工具和依赖项。
使用以下命令构建镜像:
docker build -t mydevenv .
使用以下命令启动容器,将宿主机的 /app
目录挂载到容器内:
docker run -it -v /app:/app mydevenv
进入容器后,就可以在容器内进行开发了。
七、Docker官网
Docker的官网地址是 https://www.docker.com/,官网提供了丰富的文档和教程,可以帮助我们更好地了解和使用Docker。
八、Docker搭建测试环境
Docker可以帮助我们快速搭建测试环境,以下是一个搭建MySQL测试环境的示例:
docker run --name my-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7
使用以上命令启动一个MySQL容器,其root密码为 my-secret-pw
。
九、Docker和虚拟机的区别
Docker和传统的虚拟机相比,有以下几个显著的区别:
- 虚拟机通过Hypervisor在物理主机上虚拟出多个虚拟机,每个虚拟机都有自己的操作系统及其依赖项,因此需要占用较多的资源;而Docker容器共享宿主机的操作系统,因此可以更高效地利用主机资源。
- Docker容器具有更好的可移植性和复用性,因为容器一致性保证了应用在任何Docker环境中的运行。
- 虚拟机的启动速度较慢,需要几分钟的时间,而Docker容器的启动速度非常快,仅需几秒钟。
十、Docker面试题
以下是几个常见的和Docker环境搭建相关的面试题:
- 什么是Docker?
- 如何安装Docker?
- Docker和虚拟机有什么区别?
- 如何构建Docker镜像?
- 如何启动Docker容器?
- 如何进入Docker容器进行开发或测试?