简介
- 从概念到上手了解Docker
概念
- Docker作为一个软件集装箱化平台,可以让开发者构建应用程序时,将它与其依赖环境一起打包到一个容器中,很容易地发布和应用到任意平台中
- 例如,我们的某个应用要依赖的环境包括
- 配置文件
- 代码
- tomcat
- JDK
- 操作系统
- 现在的物理服务器是很强大的,跑一个应用太浪费,但如果有多个应用,某个应用的内存泄漏会牵连到其他
- 这个问题可以使用虚拟机隔离来解决,但是一个虚拟机就需要一套完整的OS,浪费资源
- 所以Docker出现了,一个壳负责一个应用,一个机器上可以有几十个壳,共享OS、启动速度快、隔离
- 总结:可以把Docker理解为轻量级的可移植的虚拟机,无论是在本地还是部署到服务器,能保证环境一致且应用间隔离
Developers Love Docker. Businesses Trust It.
- 使用前
- 使用后
- Docker 提供了一组应用打包、传输和部署的方法,以便你能更好地在容器内运行任何应用
- 使用前
安装
- 在
RedHat7.2
操作系统中安装- 可以使用
uname -r
查看内核版本,应该是不能低于内核版本高于 3.10
- 查看红帽版本号``
- 可以使用
- 依次执行如下命令
yum install -y yum-utils device-mapper-persistent-data lvm2 # yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sed -i 's/$releasever/7/g' /etc/yum.repos.d/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io # 静静等待 systemctl start docker systemctl enable docker
- 启动时报错:
Job for docker.service failed because the control process...
- 执行
docker version
会看到Cannot connect to the Docker daemon...
- 目前看应该是网络原因,搭建网桥?防火墙的原因?daemon进程启动?
- 这么安装有问题,试试下面的方法:
yum remove podman-docker yum remove podman yum remove buildah sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce --nobest sudo systemctl enable --now docker sudo usermod -aG docker $USER # 把用户$USER追加到docker组中 sudo systemctl disable firewalld
- 执行
使用
- docker的常见命令
- 启动:
systemctl start docker
- 关闭:
systemctl stop docker
- docker的镜像称为image,类似于操作系统快照,是一个搭建好的运行环境(静态)
- 容器是container(动态),是image的实例,他们之间类似于类和实例化对象之间的关系
- 配置好证书后可以从仓库pull镜像:
docker pull
,使用docker images
查看已经拉取的镜像 - 在该image上启动一个容器:
docker run -t -i -w /home/dev/nba --name local_iso ci_builder_rhel72 /bin/bash
ci_builder_rhel72
是镜像名称--name
设置container名称-t
:进入终端-i
:通过容器的STDIN获取交互式连接,这两个参数一般一起使用:-idt
-d
:后台运行,退出容器也不会stop-w
:决定进入容器后的目录/bin/bash
:在container中启动一个shell- 此时应该能看到:
[root@790cfafd543d nba]#
,这个790…是创建时返回的ID
- 查看container进程:
docker ps
,可以加-a
参数
- 退出可以使用
ctrl + d
,或者exit
- 再次进入使用
docker start -a local_iso
,-a
表示docker attach
- 一般会分两步,start&attach,一起执行会卡顿而且退出不stopped,不清楚原因!
- 这种方法进入,推出后container会stopped,ps会发现没了
docker exec -it local_iso /bin/bash
,这种方法推出后container不退出