Docker从入门到精通

1. Docker简介

Docker官方网址: https://docs.docker.com/  英文地址

Docker中文网址: http://www.docker.org.cn/ 中文地址

Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotClouw公司。Docker 自开源后受到广泛的关注和讨论,目前已有多个相关项目,逐断形成了围Docker的生态体系。dotCloud 公司后来也改名为Docker Ine。

Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。

Docker架构

Docker从入门到精通_第1张图片

2. Docker安装

要求:Docker 要求 CentOS 系统的内核版本在 3.10以上 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 

安装步骤:

① 通过 uname -r 命令查看你当前的内核版本

uname -r

② 使用 root 权限登录 Centos。确保 yum 包更新到最新

yum -y update

③ 卸载旧版本(如果安装过旧版本的话)

yum remove docker docker-common docker-selinux docker-engine

④ 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

yum install -y yum-utils device-mapper-persistent-data lvm2

⑤ 设置yum

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

⑥ 可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

⑦ 安装docker

sudo yum install -y docker-ce     #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.03.1

⑧ 启动并加入开机启动

systemctl start docker
systemctl enable docker

⑨ 验证安装是否成功(clientserver两部分表示docker安装启动都成功了)

docker version

3. 配置Docker阿里镜像加速

详细参考: https://cr.console.aliyun.com/cn-hangzhou/mirrors

Docker从入门到精通_第2张图片

进入上述网址,键入红框中的命令:

[root@localhost local]# sudo mkdir -p /etc/docker
[root@localhost local]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
> }
> EOF
{
  "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}

此时cat一下,可以查看到配置的镜像地址

[root@localhost local]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}

最后,键入以下命令,重启Docker即可:

[root@localhost local]# sudo systemctl daemon-reload
[root@localhost local]# sudo systemctl restart docker

4. Docker下载镜像文件

① 搜索镜像

[root@localhost local]# docker search java

可使用 docker search命令搜索存放在 Docker Hub(这是docker官方提供的存放所有docker镜像软件的地方,类似maven的中央仓库)中的镜像。执行该命令后, Docker就会在Docker Hub中搜索含有 java这个关键词的镜像仓库。

② 下载镜像(这里以下载java8为例)

[root@localhost local]# docker pull java:8

使用命令docker pull命令即可从 Docker Registry上下载镜像,执行该命令后,Docker会从 Docker Hub中的 java仓库下载最新版本的 Java镜像。如果要下载指定版本则在java后面加冒号指定版本。

③ 列出本地镜像(已下载的镜像)

[root@localhost local]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
java                8                   d23bdf5b1b1b        23 months ago       643MB

可以看到,刚才下载的java8已经在本地镜像列表中

5. Docker安装Nginx服务器

① 安装

[root@localhost local]# docker run -d -p 81:80 nginx  //不指定端口号默认以最新的进行下载

参数说明

-d 后台运行

-p 宿主机端口:容器端口     #开放容器端口到宿主机端口

浏览器访问http://Docker宿主机IP:81,即可访问成功:

Docker从入门到精通_第3张图片

② docker run 和 docker pull 的区别

docker run 会检测在本地images仓库有没有镜像文件,如果没有,就会去远程仓库下载,放到images,同时会创建一个容器运行,但必须指定端口号(一般docker run用的比较多)
docker pull只会下载镜像文件放到images里面去

③ docker ps 命令  --> 列出正在运行的容器

[root@localhost local]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
7f0b6cd60181        nginx               "nginx -g 'daemon of…"   14 minutes ago      Up 14 minutes       0.0.0.0:81->80/tcp   compassionate_northcutt

④ docker inspect containerid 命令  -->查看容器的信息

[root@localhost local]#  docker inspect  7f0b6cd60181 

可以看到以下信息:

Docker从入门到精通_第4张图片

此时通过curl命令可以访问到,而浏览器则访问不到。:

[root@localhost ~]# curl 172.17.0.2:80



Welcome to nginx!



Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

⑤ 其他命令

systemctl restart docker  重启docker

systemctl stop firewalld   关闭防火墙

6. Docker配置Nginx负载均衡

通过Docker安装的Nginx如何配置nginx.conf?

Docker通过容器运行Nginx-----安装的目录 在容器中

/容器id/etc/nginx

/容器id/etc/mysql

默认情况下安装在 容器的etc目录

Docker 安装的软件如何修改配置文件的?

答案:容器挂载外部配置文件 –v(使用挂载方式,外部的配置文件覆盖内部容器配置文件)

详细步骤:

① 创建挂载目录

# mkdir -p /data/nginx/{conf,conf.d,html,logs}

上传配置好的nginx.conf配置文件到/data/nginx/conf目录下

② 停止/删除正在运行的docker的nginx容器:

docker stop 容器名(names属性)

docker rm 容器id(container_id属性)

③ 启动容器

其中第一个红色为宿主机的nginx配置文件绝对路径

第二个红色为nignx的docker容器的nginx配置文件的绝对路径

docker run --name mynginx -d -p 80:80  -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  -v  /data/nginx/logs:/var/log/nginx -d docker.io/nginx

④ 进入nginx的docker容器(重点)

docker container exec -it f0b1c8ab3633 /bin/bash

备注:f0b1c8ab3633指的是docker ps查出来的nginx的容器id(container id属性)

可以发现,命令行的前缀变为了 root@4938c1288b47:/# 

nginx在docker容器的配置文件默认配置在虚拟容器的/etc/nginx目录下

⑤ 拓展

容器:即虚拟操作系统

宿主机的命令行:[root@localhost local]# 

docker容器的命令行:root@4938c1288b47:/# 

进入容器后,该docker是非常轻量的,默认没有vi插件,但也不必装,不建议直接在容器中更改配置文件等信息,所以采用挂载的方式进行容宿主机的配置文件和容器内的配置文件进行同步。

7. Docker常用命令

docker images  查看本地镜像文件

docker ps  查看正在运行的容器

docker ps –a  查看所有的容器

docker container exec -it container_id /bin/bash  进入到容器

exit  退出(docker容器中的命令,键入此命令,退回宿主机命令行)

docker version  查看版本

docker run -d -p 80:80 nginx  启动nginx容器

docker rmi imgage_id  删除镜像(docker imges查出来的结果)

docker rm 容器id  删除容器

docker stop 容器name  停止容器

 

 

你可能感兴趣的:(Docker,Linux)