一、准备工作
1.1 查看内核
// 保证内核 3.10 以上
uname -r
1.2 卸载旧版docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
// docker默认工作路径
rm -rf /var/lib/docker
1.3 安装依赖
yum -y install yum-utils
1.4 设置国内阿里云镜像仓库
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.5 更新yum
yum makecache fast
1.6 安装Docker
// docker-ce 社区版本 docker-ee 企业版
yum install docker-ce docker-ce-cli containerd.io
1.7 启动Docker测试
// 启动
systemctl start docker
// 查看信息
docker version
// 测试helloword
docker run helloword
1.8 查看镜像
docker images
二、阿里云镜像加速
2.1 登录阿里云账号
2.2 镜像加速
2.3 配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://e5yl33pf.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
三、Docker命令
docker info
docker 命令 --help
3.1 镜像命令
// 查看本地所有的镜像
docker images
// 搜索 镜像
docker search mysql
// 下载默认最新的镜像 分层下载Docker的核心 文件系统
docker pull mysql
// 下载指定版本的镜像
docker pull mysql:5.7
// 删除镜像
docker rmi -f imageID
// 删除所有镜像
docker rmi -f $(docker images -aq)
四、容器命令
4.1 常用命令
docker run [可选参数] imageid
--name="名字" tomcat01 tomcat02
-d 后台方式运行
-it 进入容器交互运行
-p 主机端口:容器端口 指定容器端口
4.2 运行centos镜像
docker pull centos
docker run -it centos /bin/bash
// 列出所有运行的Docker
docker ps
// 删除容器
docker rm 容器ID
// 强制删除所有,包括运行的容器
docker rm -f $(docker ps -aq)
4.3 Docker容器启动停止
docker start 容器ID
docker restart 容器ID
docker stop 容器ID
docker kill 容器ID
4.4 日志,元数据,进程
// 后台运行
docker run -d 镜像名/镜像ID
// 查看日志
docker logs -t -f --tail 10 容器ID
// 进程信息
docker top 容器ID
// 元数据
docker inspect 容器ID
4.5 进入运行容器修改配置
// 1:进入运行容器
docker exec it 容器ID /bin/bash
// 2.进入正在运行容器
docker attach 容器ID /bin/bash
4.6 拷贝命令
// 从容器内部拷贝到主机
// 1.进去容器
docker attach 容器ID
// 2.需要拷贝的内容
touch test.txt
// 3.退出容器
exit
// 4. 拷贝到主机
docker cp 容器ID:/home/test.txt /home
五、Docker部署Nginx
docker search nginx
docker pull nginx
docker images
docker run -d --name nginx01 -p:3344:80 nginx
docker ps
// 进入容器才可以修改文件配置 重启!!!
docker exec -it nginx01 /bin/bash
-v 数据卷的技术可以解决
六、Docker部署Tomcat
docker pull tomcat
docker run -d -p 8081:8080 --name tomcat01 tomcat
七、Docker部署ES+Kibana
7.1 部署ElasticSearch 7.6.2
// es 端口多
// es 耗内存
// es 的数据一般要放置到安全目录 挂载
docker run -d --name elasticsearch01 -p 9200:9200 -e "discovery.type=single-node" elasticsearch:7.6.2
7.2 【解决卡顿 内存消耗问题】
ES默认启动1G内存,我的阿里云是1核2G内存,这是原因。
// 查看cpu
docker stats
// 关闭
docker stop 容器ID
// 增加内存限制
docker run -d --name elasticsearch02 -p 9200:9200 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
问题解决!!!
7.3 Docker部署Kibana
问题思考?
可以通过localhost 链接ES吗??
八、Portainer可视化工具
docker run -d -p 8088:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --priviledged=true portainer/portainer
访问http://localhost:8088
九、Commit镜像【保存当前状态或者打包】
// 提交容器成为一个新的副本
docker commit
docker commit -m="提交的描述信息" -a="作者" 容器ID 目标镜像名:[tag]
9.1 测试
// 启动Tomcat
docker run -it -p 8080:8080 tomcat
// 进入容器
docker exec -it 容器ID /bin/bash
cd /usr/local/tomcat
cp -r webapps.dist/* webapps
// 现在这个镜像我修改了 想要提交
docker commit -a="古力娜扎" -m="add webapps app" 容器ID tomcat02:1.0
十、容器数据卷【数据同步】
10.1 概述
将应用打包成一个镜像
容器删除后,数据,数据持久化怎么办?
需求:MySql数据可以共享同步到本地
就是讲容器中的目录挂载到Linux中,多个容器也可以
10.2 目录挂载
// 挂载
docker run -it -v 主机目录:容器目录 xxxxx /bin/bash
// 查看容器信息
docker inspect 容器ID
容器内外的目录数据 同步更新
10.3 Docker实现Mysql数据同步
如何实现数据持久化,数据同步?
docker pull mysql:5.7
docker images
// 运行并挂载配置目录 数据目录 密码
docker run -d -p 3307:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
本地同步的数据,数据库数据同步:
10.4 匿名挂载
// 会在本机自动创建一个目录进行同步
docker run -d -P --name nginx01 -v /etc/nginx nginx
// 查看挂载情况
docker volume ls
// 查看卷
docker volume inspect juming-nginx
十一、Dockerfile构建镜像【命令脚本】
11.1 命令
FROM centos
VOLUNE ["volume01","volume02"]
CMD ECHO "====END===="
CMD /bin/bash
docker build -f /home/volume-test/dockerfil1 -t /wang/centos .
11.2 构建自己的Centos镜像
1. 构建文件
mkdir /home/dockerfile vim mydockerfile-centos
FROM centos
MAINTAINER wang<123456789@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "===end==="
CMD /bin/bash
2.构建
docker build -f mydockerfile-centos -t mycentos:0.1 .
3.测试运行
docker images
4.运行
docker run -it mycentos:0.1
11.3 构建Tomcat镜像
1.准备工作: tomcat 压缩包 jdk压缩包
vim Dockerfile
FROM centos
MAINTAINER wang<123456789@qq.com>
COPY readme.txt /usr/local/readme.txt
ADD jdk-8ull-linux-x64-tar.gz /usr/local/
ADD apache-tomcat-9.0.22.tar.gz /usr/local/
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME//lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22/
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.22/
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
RUN yum -y install vim
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.22/bin/logs/catalina.out
2.构建镜像
docker build -t mytomcat01 .
3.启动
docker run -d -p 8081:8080 --name mytomcat01 \
-v /home/wang/build/tomcat/test:/usr/local/apache-tomcat-9.0.22/webapps/test \
-v /home/wang/build/tomcat/logs/:/usr/local/apache-tomcat-9.0.22/logs
4.发布项目 卷挂载,在本机进行操作就可以了。
十二、发布镜像到DockerHub
12.1 注册账号
12.2 登录
12.3 提交镜像
docker images
docker push wyn365/mytomcat01:1.0
十三、发布到阿里云镜像服务中
13.1 登录阿里云控制台
13.2 找到镜像服务
13.3 创建命名空间
13.4 创建镜像仓库
13.5 推送
1. 登录阿里云Docker Registry
$ sudo docker login --username=算法算法算法 registry.cn-hangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
2. 从Registry中拉取镜像
$ sudo docker pull registry.cn-hangzhou.aliyuncs.com/wyn-365/mydocker:[镜像版本号]
3. 将镜像推送到Registry
$ sudo docker login --username=算法算法算法 registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/wyn-365/mydocker:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/wyn-365/mydocker:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
4. 选择合适的镜像仓库地址 从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。
如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录,并作为镜像命名空间前缀。 5. 示例 使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
registry.aliyuncs.com/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB
$ sudo docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
使用"docker images"命令找到镜像,将该镜像名称中的域名部分变更为Registry专有网络地址。
$ sudo docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
评论