docker的基础篇

docker部署

Docker安装

(1)yum 包更新到最新

sudo yum update

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

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

(3)设置yum源为阿里云

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(4)安装docker

sudo yum install docker-ce

ce:开源版(免费版)

ee:企业版(收费版)

1.12以后

(5)安装后查看docker版本

docker -v

设置ustc的镜像

ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。

https://lug.ustc.edu.cn/wiki/mirrors/help/docker

编辑该文件:

在该文件中输入如下内容:

vi /etc/docker/daemon.json  

在该文件中输入如下内容:

{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
docker基础命令
systemctl status   docker   查看docker状态 
systemctl start    docker   启动docker
systemctl restart  docker   重启docker

systemctl stop     docker   停止docker

systemctl enable   docker   自启docker

docker info                 docker信息

ps -ef | grep docker        查看进程

docker --help               查看docker命令帮助文档

查看镜像image以及拉取
docker search 镜像名称

docker images              查看本地镜像    REPOSITORY  镜像名称  TAG 版本  IMAGE ID 镜像ID  CREATED 创建镜像的时间  SIZE 大小 
                            
docker pull mysql:5.7 ...................... 拉取镜像  网址 hub.docker.com

删除镜像
docker rmi 镜像ID  
docker rmi 镜像名字  (镜像名字 IMAGE----->   名字:版本)

删除所有镜像(删库跑路作用!)
docker rmi  docker images -q

查看容器
docker ps -l      查看最后一次运行的容器

docker ps         查看运行的容器

docker ps   -a    查看所有的容器

容器基础操作
docker exec  -it  [容器名|容器ID]   /bin/bash  进入容器(交互式和守护式通用的!)

docker stop $(docker ps -q)         停用所有运行的容器

docker rm  $(docker ps -aq)         删除全部容器

docker rm [容器名|容器ID]            删除单个容器

docker stop (docker ps -q)  &  docker rm  (docker ps -aq)   一条命令实现停止并删除全部容器

docker start [容器名|容器ID]  启动容器

docker status [容器名|容器ID]  查看容器状态

docker logs -f [容器名|容器ID]  查看容器日志

交互式容器
docker run -it --name=mycentos7-1(取什么名字)  centos:7 (IMAGE 镜像名字:TAG)    交互式容器创建  创建完即运行!退出即停止! 

exit 交互式容器退出(退出会停止)

守护式容器
1.创建完成后。马上在后台运行

docker run -di --name=mysql(取什么名字)  centos:7 (IMAGE 镜像名字或者ID)

2.不会进入容器内部!
3.退出 exit 还是在后台运行

容器拷贝文件
1.从宿主机拷贝到容器    

docker cp 宿主机文件 容器id【名称】:/root 【拷到容器的哪个位置】

pwd 查看目录

ls  查看目录
docker exec  -it  [容器名|容器ID]  /bin/bash  进入容器



2.从容器拷贝到宿主机

docker cp 容器id:拷贝的文件 ./  【宿主机保存的位置】

cat 文件名字    查看txt内容!

总结:容器停止状态也可以进行文件拷贝!

挂载
docker 和宿主机的目录或者文件挂载  ,宿主机的目录或者文件改变  容器也会跟着变

目录挂载

docker run -it --name=mycentos7_3 -v /root/feifei/:/root/ 【要挂载目录】   centos:7
 【守护式  -di】

查看ip
docker inspect [容器名|容器ID]

docker inspect tomcat 
docker inspect nginx
docker inspect [容器名|容器ID] | grep IPAddress

删除–容器
正在运行的容器不能直接删。(如果要删除,强制删除,不推荐)
docker stop [容器名|容器ID] 停止容器

docker rm [容器名|容器ID]   正常删除

docker rm -f [容器名|容器ID] 强制删除

防火墙关闭以及开发端口

创建的容器都需要【统一】
注意:1.需要开放端口:
2.或者关闭防火墙

防火墙:

systemctl  start firewalld    开启防火墙
systemctl  stop  firewalld    关闭防火墙
systemctl  enable firewalld   开启自启动防火墙
systemctl  disable firewalld  关闭开机自启动防火墙
systemctl  status firewalld   显示防火墙状态

开放端口:
firewall-cmd  --zone=public  --add-port=[端口]/tcp  --permanent  永久的向公共区域添加端口号

 firewall-cmd  --reload   重新加载新的规则

 firewall-cmd  --list-all   显示所有添加到端口号

创建mysql容器

细节:

1.创建mysql容器需要映射端口。默认是3306

2.需要指定用户的root密码: -e MYSQL ROOT PASSWORD=123456 #大写 可以看官网

docker images

docker run  -di --name=[取的名字]   -p  3306:3306 -e MYSQL_ROOT_PASSWORD=[密码]  [容器名|容器ID]   -p  3306:3306 映射端口 宿主机的端口:容器写死端口 

备注: -e 环境变量: -e MYSQL ROOT PASSWORD=[密码]

注意:1.需要开放端口:
2.或者关闭防火墙

创建tomcat
docker run  -di --name=[取的名字]   -p  8080:8080  [容器名|容器ID]   创建tomcat容器

docker logs -f [容器名|容器ID]                      查看所有日志
docker logs -f --tail=[行数]    [容器名|容器ID]      查看最后[行数]日志

【注意】:  如果需要跑项目 可以通过拷贝项目放到容器   或者挂载目录

创建Nginx
docker pull nginx   默认拉取的是最新的

docker run -di --name=[取的名字]  -p 80:80  [容器名|容器ID]

ll 目录 查看这个目录下的所有目录和文件      ll ./root/



创建redis
docker pull redis 拉取最新

docker run -di --name=[取的名字]  -p 6379:6379  [容器名|容器ID]



【redis注意:生产环境: 不得用   key * 】

创建rabbitmq
docker images

docker pull rabbitmq:management

docker run -di --name=[取的名字]  -p 15671:15671  -p 15672:15672 -p 4369:4369  -p 5671:5671  -p 5672:5672 -p 25672:25672   [容器名|容器ID]

创建es
拉取找官网

docker images
docker run -di --name=[取的名字]  -p 9200:9200 -p 9300:9300  [容器名|容器ID]

跨域:
docker exec -it  [容器名|容器ID]  /bin/bash

ls 查看
把yml文件上传到容器中


docker cp  ./elasticsearch.yml [上传的文件]   [容器名|容器ID] :【拷到容器的哪个位置】

docker logs -f [容器名|容器ID]

linux系统调优
修改 /etc/security/limits.conf 追加内容

docker的备份的迁移
1.把容器从docker保存到宿主机1。
2.再把容器拷贝到宿主机2
3.再使用命令把容器 导入到宿主机2的docker中

(1)先停掉

(2) 先把容器变成镜像   docker commit [容器名|容器ID]  新镜像名字

(3)保存   docker save -o   保存的文件  新镜像名字    ######  docker save -o  mynginx.tar  mynginx2

(4) 把tar复制到宿主机2 然后把tar变成镜像    docker load -i ./mynginx.tar   把tar文件变成镜像

(5) 创建容器 docker run -di --name=[取的名字]  -p 端口:端口   [容器名|容器ID]

构建镜像

mikdir docker 创建目录

–Dockerfile 脚本 用来创建镜像

touch Dockerfile 创建Dockerfile 文件

把jdk1.8放到docker目录
vi Dockerfile
FROM centos:7 #基于centos7上创建一个centos7

MAINTAINER thh #名字

RUN mkdir /usr/root #容器中创建目录

#拷贝文件到容器中并自动解压

mikdir docker  创建目录

--Dockerfile  脚本 用来创建镜像

touch Dockerfile  创建Dockerfile 文件

把jdk1.8放到docker目录
vi Dockerfile  
FROM centos:7   #基于centos7上创建一个centos7

MAINTAINER thh #名字

RUN mkdir /usr/root   #容器中创建目录

#拷贝文件到容器中并自动解压
ADD jdk压缩包   /usr/root/

#设置工作目录
WORKDIR  /usr/root

#设置jdk的环境变量
ENV JAVA_HOME /usr/root/jdk....
ENV JRE_HOME /usr/root/jdk.../jre

ENV  path $JAVA_HOME/bin:$PATH 
ENV  path $JRE_HOME/bin:$PATH 

:wq  保存


docker build -t-'myjdk1.8'


把jar拷贝到容器中

然后可以跑起来

java -jar    [jar包名字]
私服搭建
docker pull registry  拉取私服

docker run -di --name=[取的名字]  -p5000:5000  [镜像名字|镜像id]

1.设置ip
修改 daemon.json
vi /etc/docker/daemon.json

{"innsecure-registries:[192.168.138.128:5000]"}


systemctl restart docker 重启docker


2.镜像打标签

1.标记次镜像为私服镜像
docker tag jdk1.8   192.168.138.128:5000/jdk1.8

2.再次启动私服容器
docker  start registry

(3.)推上去(上传)
docker push registry 192.168.138.128:5000/jdk1.8


(4)拉下来(下载)

docker pull registry 192.168.138.128:5000/jdk1.8

你可能感兴趣的:(docker)