一、docker介绍
docker的文章介绍得太多了,在此不赘述了。
可以在CSDN里搜索“10分钟看懂Docker和K8S,docker k8s 区别”,大白话写的非常通俗易懂。搞技术的都不太喜欢那种文绉绉的东东。
下面截取文章的一些经典语句。
在容器技术之前,业界的网红是虚拟机。虚拟机技术的代表,是VMWare和OpenStack。
Docker的两句口号:第一句,是“Build, Ship and Run", 第二句口号就是:“Build once,Run anywhere(搭建一次,到处能用)”
Docker技术的三大核心概念,分别是:
镜像(Image)
容器(Container)
仓库(Repository)
二、安装docker
1、删除本机已安装的Docker
[root@bogon ~]# yum remove docker \
docker-client
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-selinux
docker-engine-selinux
docker-engine
Loaded plugins: fastestmirror, langpacks
No Match for argument: docker
No Match for argument: docker-client
No Match for argument: docker-common
No Match for argument: docker-latest
No Match for argument: docker-latest-logrotate
No Match for argument: docker-logrotate
No Match for argument: docker-selinux
No Match for argument: docker-engine-selinux
No Match for argument: docker-engine
No Packages marked for removal
2、关闭防火墙
[root@bogon ~]# systemctl stop firewalld.service
3、Set up repository
[root@bogon ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
4、配置阿里云Docker Yum源
[root@bogon ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror, langpacks
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
5、查看Docker版本
[root@bogon ~]# yum list docker-ce --showduplicates
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
6、安装Docker较新版本
[root@bogon ~]# yum install docker-ce-18.03.0.ce
或安装Docker最新版本,无需加版本号:
[root@bogon ~]#yum install docker-ce
7、启动docker服务
systemctl enable docker
systemctl start docker
8、查看docker版本,看到有服务器和客户端信息就行了。
[root@bogon ~]# docker version
Client:
Version: 18.03.0-ce
API version: 1.37
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:09:15 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.03.0-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:13:03 2018
OS/Arch: linux/amd64
Experimental: false
9、检查发现,本机的系统版本和内核版本都更新了。
[root@bogon ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
[root@bogon ~]# uname -a
Linux bogon 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
10、设置docker获取镜像的加速源。
这个很重要,默认的国外源几乎是无法使用的,下镜像时会卡的一匹,(通过docker我们可以拉取网上已经有的各种镜像如redis,nginx等)
这里我们选择了阿里云的加速地址:
[root@bogon ~]# vi -p /etc/docker/daemon.json
{
"registry-mirrors":["https://bjtzu1jb.mirror.aliyuncs.com"]
}
[root@bogon ~]#docker info
在靠近下面的信息里,看到已经拿到了阿里云的加速地址
Registry Mirrors:
https://bjtzu1jb.mirror.aliyuncs.com/
11、再次启动docker服务
[root@bogon ~]# systemctl restart docker
[root@bogon ~]#systemctl enable docker
至此docker安装完成了。
三、docker镜像、容器相关命令
1、停止、重启、和开机启动docker
systemctl enable docker
systemctl stop docker
systemctl restart docker
systemctl start docker
2、搜索镜像
参数如下:
NAME:镜像的仓库名
DESCRIPTION:镜像描述
STARS:用户评价,即用户欢迎程度
OFFICIAL:是否官方
3、拉取镜像,如果不加版本,会下载lastst版本
[root@bogon ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
123275d6e508: Pull complete
6cd6a943ce27: Pull complete
a50b5ac4a7fb: Pull complete
Digest: sha256:d81f010955749350ef31a119fb94b180fde8b2f157da351ff5667ae037968b28
Status: Downloaded newer image for nginx:latest
4、查看镜像
查看镜像
[root@bogon ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest e791337790a6 4 days ago 127MB
可以看到我们刚才下载的镜像,这些镜像都是存储在Docker宿主机的/var/lib/docker目录下,参数如下:
REPOSITORY:镜像名称
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像的创建日期(不是获取该镜像的日期)
SIZE:镜像大小
需要注意的是根据镜像id可以确定唯一一个镜像(可以理解为身份证),而镜像名+标签才能确定唯一一个镜像。
5、创建容器
[root@bogon ~]# docker create --name huawei01 nginx
09e74e4b4cd170fc64c3107c742691c16333a85e10855570ce461b2f4e70208f
6、查看活跃中的容器
[root@bogon ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@bogon ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
09e74e4b4cd1 nginx “nginx -g 'daemon of…” 4 minutes ago Created huawei01
7、开启容器,发现状态那由Created 变成UP了。
[root@bogon ~]# docker start huawei01
huawei01
[root@bogon ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
09e74e4b4cd1 nginx “nginx -g 'daemon of…” 6 minutes ago Up 17 seconds 80/tcp huawei01
8、关闭容器,关闭后一定要做的操作是remove,否则你的容器一旦是关闭状态且很多的话,虚机会卡。
docker stop和docker kill都是关闭命令,docker stop相当于“优雅的关机”,docker kill相当于强制关机。
[root@bogon ~]# docker stop 09e74
09e74
[root@bogon ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
09e74e4b4cd1 nginx “nginx -g 'daemon of…” 29 minutes ago Exited (0) 2 minutes ago huawei01
[root@bogon ~]# docker rm 09e74
09e74
9、暂停及解暂停容器
[root@bogon ~]# docker pause 09e74
[root@bogon ~]# docker unpause 09e74
10、docker run命令表示先拉一个http镜像并启动运行,(-d 后台运行,-p指定运行端口)将容器的80端口映射成本虚拟机的8080端口。
把容器理解为一个小操作系统,我想访问这个容器的话,只需要访问本地虚拟机的8080端口即可。
[root@bogon ~]#docker run --name httpd1 -d -p 8080:80 httpd
eab2e4b4cd170fc64c3107c742691c16333a85e10853270ce461b2f4e7008mm
[root@bogon ~]#curl 127.0.0.1:8080
看到显示it works ,网页提供服务了
11、docker exec命令进入容器进行操作,不干扰容器主进程。退出exit
[root@bogon ~]#docker exec -it httpd1 bash
用ls命令可以查看到容器的目录
12、docker的帮助文件
[root@bogon ~]#docker --help
[root@bogon ~]#docker run --help