目录
一、Docker安装
Docker 必须部署在Linux内核的系统上。
docker官网:http://www.docker.com
Docker Hub官网: https://hub.docker.com
前提条件:
目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上,要求系统为64位、Linux系统内核版本为 3.8以上,这里选用Centos7.5
1.确定你是CentOS7及以上版本。
查看内核:在Linux中使用命令查看内核版本号、硬件架构、主机名称和操作系统类型等。
cat /etc/redhat-release
uname -r
2.卸载旧版本。
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
3.yum安装gcc相关。
首先保证linux系统可以连接外网。
然后安装gcc。
yum -y install gcc
yum -y install gcc-c++
4.安装需要的软件包。
yum install -y yum-utils
5.设置stable镜像仓库(使用中国大陆阿里云仓库)。
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
6.更新yum软件包索引。
yum makecache fast
7.安装DOCKER CE
yum -y install docker-ce docker-ce-cli containerd.io
8.启动docker。
systemctl start docker
9.测试。
docker version
docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:53f1bbee2f52c39e41682ee1d388285290c5c8a76cc92b42687eecf38e0af3f0
Status: Downloaded newer image for hello-world:latest
上面的意思是:本地没有hello-world镜像,需要从官网远程库拉取最新的hello-world镜像。
此时,docker就安装成功了。
10.卸载。
systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
二、阿里云镜像加速
打开阿里云的镜像加速器,网址:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台
进入目录
粘贴脚本直接执行
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://m515cyl3.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
docker run hello-world
三、Docker常用命令
1.启动类命令
启动docker: systemctl start docker
停止docker: systemctl stop docker
使用停止docker命令时,可能会报如下错误:
Warning: Stopping docker.service, but it can still be activated by:
docker.socket这是因为:除了docker.service单元文件,还有一个docker.socket单元文件…docker.socket这是用于套接字激活。
该警告意味着:如果你试图连接到docker socket,而docker服务没有运行,系统将自动启动docker。解决办法(选一即可):
1.删除/lib/systemd/system/docker.socket文件夹
rm -rf /lib/systemd/system/docker.socket
2.关闭自动启动服务
sudo systemctl stop docker.socket
重启docker: systemctl restart docker
查看docker状态: systemctl status docker
开机启动: systemctl enable docker
查看docker概要信息: docker info
查看docker总体帮助文档: docker --help
查看docker命令帮助文档: docker 具体命令 --help
2.镜像命令
列出本地主机上的镜像:docker images
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签版本号
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像
查找镜像:docker search 某个XXX镜像名字
拉取镜像:docker pull 某个XXX镜像名字
查看镜像/容器/数据卷所占的空间:docker system df
删除镜像:docker rmi 某个XXX镜像名字ID
删除全部镜像:docker rmi -f $(docker images -qa)
3.容器命令
前提条件:
有镜像才能创建容器,这是根本前提(下载一个ubuntu镜像演示)
docker pull ubuntu
新建+启动容器(前台交互式容器):docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
参数说明:
-i: 交互式操作。
-t: 终端。
centos : centos 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是/bin/bash。
要退出终端,直接输入 exit:
在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的后台运行模式。
启动容器(启动守护式容器):docker run -d 容器名
下面分别以redis 前后台启动演示为例:
上图为redis的前台启动,只要关闭窗口redis就直接关闭了,我们在现实中更多使用的是后台守护式启动。
进入正在运行的容器并以命令行交互:docker exec -it 容器ID bashShell
docker attach 容器ID
attach 直接进入容器启动命令的终端,不会启动新的进程用exit退出,会导致容器的停止。
exec 是在容器中打开新的终端,并且可以启动新的进程用exit退出,不会导致容器的停止。
推荐大家使用 docker exec 命令,因为退出容器终端,不会导致容器的停止。
列出当前所有正在运行的容器:docker ps
OPTIONS说明(常用):
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
退出容器: 1. run进去容器,exit退出,容器停止 2. run进去容器,ctrl+p+q退出,容器不停止
启动已停止运行的容器: docker start 容器ID或者容器名
重启容器:docker restart 容器ID或者容器名
停止容器:docker stop 容器ID或者容器名
强制停止容器:docker kill 容器ID或容器名
删除已停止的容器:docker rm 容器ID
删除多个已停止的容器:docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
查看容器日志:docker logs 容器ID
查看容器内运行的进程:docker top 容器ID
查看容器内部细节:docker inspect 容器ID
从容器内拷贝文件到主机上:docker cp 容器ID:容器内路径 目的主机路径
4.Docker镜像commit操作、上传阿里云、私有库
案例演示ubuntu安装vim
1.原始的默认Ubuntu镜像是不带着vim命令的
2.外网连通的情况下,安装vim
apt-get update
apt-get -y install vim
3.安装完成后,commit我们自己的新镜像
本地镜像构造完成,可以把本地构建的镜像发布到阿里云上面,也可以发布到私有库中,下面分别展开进行介绍。
4.本地镜像发布到阿里云 。
4.1 阿里云开发者平台:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台
选择控制台,进入容器镜像服务->选择个人实例->命名空间->仓库名称->进入管理界面获得脚本
命名空间设置好如下:
4.2 设置镜像仓库。
点击下一步后,选择本地仓库,点击创建仓库镜像,就会出下如下界面。
4.3将镜像推送到阿里云registry(每个人的不一样,查看自己上图中方框中的命令)
$ docker login --username=朂後哋箹萣亮 registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/atguiguxy/myubuntu:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/atguiguxy/myubuntu:[镜像版本号]
4.4将阿里云上的镜像下载到本地
$ docker pull registry.cn-hangzhou.aliyuncs.com/atguiguxy/myubuntu:[镜像版本号]
5.本地镜像发布到私有库。
5.1下载镜像Docker Registry。
docker pull registry
5.2运行私有库Registry。
docker run -d -p 5000:5000 -v /zcluse/myregistry/:/tmp/registry --privileged=true registry
5.3案例演示创建一个新镜像,ubuntu安装ifconfig命令
apt-get update
apt-get install net-tools
安装完成后,commit我们自己的新镜像
docker commit -m="ifconfig cmd add" -a="zcl" 04fca349d9f8 zclubuntu:1.2
5.4curl验证私服库上有什么镜像,将新镜像zzyyubuntu:1.2修改符合私服规范的Tag。
5.5修改配置文件使之支持http,push推送到私服库。
vim /etc/docker/daemon.json
修改内容如下:
5.6curl验证私服库上有什么镜像,pull到本地并运行。
四、Docker常规软件安装
1.安装tomcat
1.1 docker hub上面查找tomcat镜像。
docker search tomcat
1.2 从docker hub上拉取tomcat镜像到本地
docker pull tomcat
1.3 使用tomcat镜像创建容器实例(也叫运行镜像)
docker run -d -p 8080:8080 --name t1 tomcat
1.4 访问tomcat首页。
会出现404错误。
解决办法:把webapps.dist目录换成webapps
重新访问网址:http://localhost:8080/
注:我们使用最新版tomcat需要修改配置,过于麻烦,并且在实际生产中用户到最新的版本,建议安装下面版本。
docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8
此时不需要修改任何配置文件,直接可以访问到官网。
2.安装mysql(5.7版本)
简单版:(建议看实战版)
2.1 下载mysql5.7
docker pull mysql:5.7
2.2 使用mysql镜像
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1171127310 -d mysql:5.7
如果虚拟机之前装过mysql,这时docker命令就会报错,显示端口占用。
此时我们只需要把虚拟机中的mysql进程关闭即可。
systemctl stop mysqld
重新输入命令,就可以启动成功。
使用navicat连接。
存在问题:插入中文会报错,插不进去。
执行命令:
SHOW VARIABLES LIKE 'character%';
并且数据库中数据没有备份,当容器删除后所有的数据都随之删除了,不符合我们实战的要求,容器数据卷可以解决这个问题,所以小编这里建议使用实战版安装mysql。
实战版:
新建容器实例
docker run -d -p 3306:3306 --privileged=true -v /zcluse/mysql/log:/var/log/mysql -v /zcluse/mysql/data:/var/lib/mysql -v /zcluse/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=1171127310 --name mysql mysql:5.7
解决中文乱码问题。
宿主机中存在备份文件,当删除mysql后,重新启动,仍然可以显示上次操作的数据。
3.安装redis
简单版:
docker images redis
docker run -d -p 6379:6379 redis:6.2.6
docker exec -it 2a1da9accddb /bin/bash
redis-cli
实战版:
3.1 在CentOS宿主机下新建目录/app/redis
mkdir -p /app/redis
将一个redis.conf文件模板拷贝进/app/redis目录下,并且修改如下内容:
3.2 启动redis
docker run -p 6379:6379 --name myr3 --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:6.2.6 redis-server /etc/redis/redis.conf
docker exec -it myr3 /bin/bash
redis-cli
3.3 证明docker启动使用了我们自己指定的配置文件
4.安装Nginx
这使用的是Docker轻量级可视化工具Portainer进行安装,参考如下博客。