Docker理解与安装

什么是Docker

Docker 图标鲸鱼背着集装箱,码头工人,整体搬运,是一种虚拟化技术,虚拟机,通过与操作系统协商独占硬件资源(磁盘内存等)独立一个进程,里面软件需要想普通软件一样安装,所谓运行软件,将文件中的内容搬运到内存中,让cpu进行运算(各个任务之间需要调度),以前虚拟出2个不干扰的程序(2个tomcat),除了tomcat本身需要的资源,还需要虚拟机的操作系统额外占用的资源,将虚拟任务 虚拟成线程让docker管理,真实机器操作系统只需要和docker交互就可以了。

实现所谓的虚拟技术,就是资源可用, 磁盘可访问(docker安装有自己的文件夹,安装的虚拟线程tomcat 也就在这个文件里面保存文件,cpu 虚拟线程找docker进程协调资源,docker的进程找操作系统协调资源,网络各个虚拟线程和docker进程之间是桥接关系,docker安装完成会装一个虚拟网卡)

Docker安装

yum 安装

1
yum install docker

启动Docker

1
systemctl start docker

安装好后 配置国内镜像源

1
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
1
2
3
4
5
6
7
8
9
vi  /etc/docker/daemon.json

{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}

查看已下载的镜像(就是静态的模板软件)

1
docker images

拉取Redis镜像

1
docker pull redis

创建一个容器的时候,docker 会自动对它进行命名

-P 是容器内部端口随机映射到主机的端口。

-p 是容器内部端口绑定到指定的主机端口,默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp

–name 命名容器。

-d:指定 docker 网络类型,有 bridge、overlay。

-v $PWD/test:/test:将主机中当前目录下的test 挂载到容器的 /test。

运行Redis容器

1
docker run --name redis -d -p 6379:6379 redis:latest

查看所有的容器

1
docker ps -a

启动Redis容器

1
docker start redis

物理机访问

可以进入 运行中的容器 容器名字 不能进 就使用ID

1
docker exec -it redis /bin/bash

进入容器 没有vi命令 编辑需要安装vim

如果直接敲apt-get install vim命令则会有如下提示

我们需要先敲入apt-get update命令,这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。

然后使用apt-get install vim安装vim。

海外源 网络慢

1
2
3
4
5
6
mv /etc/apt/sources.list /etc/apt/sources.list.bak
echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >>
/etc/apt/sources.list
echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list

如果要发布项目 建立好 test 项目与 html 文件 拷贝test目录到docker中的tomcat的webapps中,需要主要查看docker中 tomcat的安装路径(pwd)

1
docker cp /usr/local/tomcat/webapps tomcat:/usr/local/tomcat/webapps/

将容器中的文件拷贝出来

1
2
docker cp nginx:/etc/nginx/nginx.conf /usr/ftp/nginx.conf
docker cp /usr/ftp/nginx.conf nginx:/etc/nginx/nginx.conf

私服搭建

为什么要搭建本地仓库?

Docker 运行软件是由镜像 images 产生container 容器来运行,本来是从docker中央仓库或者镜像仓库。

如果自己在公司局域网中要快速搭建docker环境就需要搭建本地仓库,搭建本地仓库的电脑可以把公共仓库中的镜像直接上传到本地仓库,也可以把自己修改了配置的容器打包成自己的镜像上传到本地仓库就大大节约了下载和每一台都要重新配置的时间

docker下载registry软件

1
docker pull daocloud.io/library/registry:latest

查看镜像

1
docker images

生成容器和端口映射

1
docker run -d -p 5000:5000 --restart=always --name myregistry daocloud.io/library/registry:latest

将容器打包贴自己的标签 例如 我设置自定义名字为 redis 标tag也可以理解为版本号my

1
docker tag docker.io/tomcat:latest localhost:5000/redis:my

推送到指定仓库

1
docker push localhost:5000/redis:my

查看指定仓库的资源

1
curl http://localhost:5000/v2/_catalog

查看指定镜像的版本

1
curl http://192.168.139.123:5000/v2/redis/tags/list

其他电脑如何获取资源

其他机器要从指定的仓库拉取镜像,首先要保证上述的网址能够打开

http://192.168.139.123:5000/v2/redis/tags/list

修改本地docker deamon.json

1
vi /etc/docker/daemon.json

在默认资源的后面添加指定仓库

1
2
3
4
5
6
7
8
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
],
"insecure-registries":["192.168.139.123:5000"]
}

从指定仓库拉取 指定版本的指定镜像 ,名称要全部正确

1
docker pull 192.168.139.123/redis:my

配置 DNS

我们可以在宿主机的 /etc/docker/daemon.json 文件中增加以下内容来设置全部容器的 DNS:

1
2
3
4
5
6
{
"dns" : [
"114.114.114.114",
"8.8.8.8"
]
}

设置后,启动容器的 DNS 会自动配置为 114.114.114.114 和 8.8.8.8。

配置完,需要重启 docker 才能生效。

查看容器的 DNS 是否生效可以使用以下命令,它会输出容器的 DNS 信息:

1
docker run -it --rm centos cat etc/resolv.conf

Docker理解与安装
https://yftxhy.site/2022/11/30/Docker理解与安装/
作者
Taozi
发布于
2022年11月30日
许可协议