? ? ? docker这个词听了很久,由于太懒,一直没有去了解。最近试着搞了一下,写一篇笔记,记录一下,大佬请绕行。(此处主要是根据菜鸟教程进行学习,其中实践出现问题之处,自己做了一些解决方式的记录。)
一、Centos安装docker
? 1. 使用命令安装docker ? ?
# curl -fsSL https://get.docker.com | bash -s docker --mirror aliyun
(此处使用的是阿里的docker下载地址)
? 2. 安装 Docker Engine-Community
# sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(此处是设置阿里仓库)
sudo yum install docker-ce docker-ce-cli containerd.io
docker -v
(查看一下版本,如果出现一行版本号则安装成功了)
? 3. 启动docker服务 ? ? 当信誓旦旦开始执行#sudo systemctl start docker 的时候,可能就抛出一个报错:System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down (操作时只遇到这一种错误)
- 解决方式:
? ? 3.1、首先是需要检查这个问题是docker导致的还是systemctl导致的。 ? ?用systemctl执行其他参数试一下,譬如systemctl status firewalld、systemctl start mysql、systemctl stop mysql、systemctl --version等等 ? ? 3.2、如果是systemctl命令导致的,那么可能是当前操作系统不支持该命令,也可能其他原因。 ? ? 进行尝试: ? ? (1)使用#sudo service start docker (或者可以百度一下自己的操作系统是否支持systemctl,以及当前系统需要用什么来进行操作服务) ? ? (2)在上面尝试无果后,发现docker -v 以及systemctl --version 都是可以执行的。反复百度后,最终…尝试了专治各种疑难杂症的“重启大法”。然后就ok了(ˉ▽ˉ)… ? ? (3)目前还未遇到其他问题,如果docker有问题,则卸载(卸载docker# yum remove docker-ce ;删除其他镜像等文件:# rm -rf /var/lib/docker ),重装再试一下。 ? 4. 第一个hello world ? ? 开始执行#docker run hello-world ? ? 4.1、首先报错:unable to find image 'hello-world:lastest' locally ,如图: ? ? 原因:错误很明确找不到这个镜像,那就是地址不对。需要配置国内的镜像,此处配置阿里的镜像地址 ? ? 解决方法: 在/etc/docker/daemon.json (默认是没有这个配置文件的,需要手动新建;默认docker路径是在这里,如果没有,则找一下路径,使用which 、find等命令) 新建之后,在里面写入:
{
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]
}
? ? 保存文件,并且执行 systemctl restart docker (重启一下docker)。并且使用 systemctl status docker 查看目前docker运行的状态 ,看是否处于启动状态。如图: ? ? 4.2、继续执行docker run hello-world,报错(docker:Error response from daemon: cannot start a stopped process: unknow ):
? ? 原因:缺少插件 ? ? 安装依赖:yum install libseccomp-devel ? ? 安装完成之后,继续执行 docker run hello-world ,此时成功,如图:
二、docker运行一个web
? ? 1、可以先参考菜鸟教程的docker hello world、docker镜像使用敲一些命令,熟悉一下 ? ? 2、在最后docker运行web项目的时候,此处的映射端口是用的随机映射端口,在教程后面有进行说明操作。不过在此处随机映射的端口,服务器上就需要查看防火墙是否对该端口放行,如果使用阿里、腾讯等服务器就需要根据这个端口设置安全组等操作。所以此处,可以使用指定端口号的命令
docker run -d -p 80:5000 training/webapp python app.py
解释: 将docker内部的5000端口映射到外部80端口上 -P :是容器内部端口随机映射到主机的高端口。 -p : 是容器内部端口绑定到指定的主机端口。
三、docker的一些理解
1、docker类似于一个vmware虚拟机,在它里面可以安装各种镜像(操作系统),而与vm不同的是,docker有更加便捷的命令,以及创建容器的时候可以公用本地的镜像,操作更加灵活; 2、镜像仓库类似于java之中的maven,或者node之中的npm,是一个中央仓库 3、docker可以随意拉取镜像,也可以自己制作镜像(导入和导出),像打包一个jar、或者node包那样,能够是系统灵活的随意部署。 深入的一些知识还有待继续学习,一个比较不错的链接(该链接之中还引入了许多大佬写的k8s相关的东西): Docker1 架构原理及简单使用
|