docker命令:
Docker的三大核心概念:镜像、容器、仓库
镜像:类似虚拟机的镜像、用俗话说就是安装文件。
容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例,
可以将其启动、开始、停止、删除、而这些容器都是相互隔离、互不可见的。
仓库:类似代码仓库,是Docker集中存放镜像文件的场所。
虚拟化:虚拟化种类分为软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化、桌面虚拟化、服务虚拟化、虚拟机等。
docker:每个容器中都是一个完整的环境,相当于一个操作系统
docker就是为微服务而生的。docker鼓励面向服务的体系结构和微服务架构,docker推荐单个容器值运行一个应用程序或进程,形成了一个分布式的应用程序模型。
手动yum安装docker:
https://www.cnblogs.com/marvin-mao/p/11264415.html
最小化安装完成以后需要禁用防火墙以及SElinux配置
systemctl disable firewalld
systemctl stop firewalld
vim /etc/selinux/config
SELINUX=disabled
https://www.cnblogs.com/marvin-mao/p/11264415.html
docker安装包和依赖包
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
docker组件:
docker服务器和客户端:c/s架构;
docker镜像和容器:用户基于镜像来运行容器,一个镜像可以产生多个类似的容器
Registry注册中心:dockerHub https://hub.docker.com/ 可以下载镜像
docker安装与启动:docker官网建议在Ubnuntu中安装,CentOS7.x以上
启动虚拟机,通过SecureCRT连接Linux:新建会话
安装docker
yum包更新: sudo yum update
安装需要的软件包:sudo yum install -y yum -utils device-mapper-persistent-data lvm2
设置yum源为阿里云:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-
ce/linux/centos/docker-ce.repo
安装docker:sudo yum install docker-ce
检查版本: docker-v
设置USTC的镜像:设置国内镜像站点
编辑文件:vi/etc/docker/deamon.json
输入:
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
用于指定镜像地址
docker的启动与停止:
systemctl命令是系统服务管理器指令
启动docker: systemctl start docker
停止docker: systemctl stop docker
重启docker: systemctl restart docker
查看docker状态: systemctl status docker
开机启动: systemctl enable docker
查看docker概要信息: docker info
查看docker帮助文档: docker --help
docker的常用命令:cd .
1、镜像相关命令:
镜像是存储在Docker宿主机的/var/lib/docker目录下
查看镜像:docker images
REPOSITORY:镜像名称;
TAG:镜像标签;
IMAGE(镜像的版本区分)
ID:镜像ID(唯一);
CREATED:镜像的创建日期;
SIZE:镜像大小;
搜索镜像:docker search 镜像名称 :
NAME:仓库名;
DESCRIPTION:镜像描述;
STARS:用户评价;
OFFICIAL是否官方;
AUTOMATED:自动构建,表示该镜像是由Docker Hub自动构建流程创建
eg:docker search centos
拉取镜像:docker pull 镜像名称 :
eg:docker pull centos:7(可以先搜索后拉取)
删除镜像:docker rmi 镜像ID:
删除所有镜像:docker rmi 'docker images -q'
删除悬需镜像 docker image prune
2、容器相关命令:
查看容器:docker ps
查看正在运行的容器:docker ps
查看所有容器:docker ps -a
创建与启动容器:run
docker run
-i:运行容器
-t:加入这两个参数后,容器创建就能登录进去,分配了一个伪终端
--name:容器名
-v 表示目录映射关系。(前者是宿主机目录,后者是映射到宿主机上的目录)可以使用-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上
-d 这样创建容器后不会自动登录容器
-p 端口映射,前者是宿主机端口,后者是容器的映射端口,可以用-p做多个端口映射
eg:
(1)交互式创建容器:docker run -it --name=容器名称 镜像名称:标签 /bin/bash
docker run -it --name=mycentos centos:7 /bin/bash
退出当前容器:exit 退出就是关机状态
(2)守护式创建容器:docker run -di --name=容器名称 镜像名称:标签
登录守护式容器方式:docker exec -it 容器名称(容器ID) /bin/bash
退出exit后, 容器还是运行状态
停止与启动容器:
停止 docker stop 容器名称(或容器ID)
启动 docker start 容器名称(或容器ID)
文件拷贝:
拷到容器 docker cp 需要拷贝的文件或目录 容器名称:容器目录
从容器拷出 docker cp 容器名称:容器目录 需要拷贝的文件或目录
目录挂载:
将宿主机的目录与容器内的目录进行映射,当修改宿主机的目录文件时,就会影响容器内的文件
创建容器 添加-v参数,后跟宿主机目录:容器目录
eg:docker run -di -v/usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7
--privileged-ture解决挂载的目录没有权限问题
查看容器ip地址:
查看容器运行各种数据 docker inspect 容器名称(容器ID)
输出IP docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
format:格式化,提取信息
删除容器:rm
docker rm 容器名(无法移除正在运行的容器,要先stop掉)
(rm是删除容器,rmi是删除镜像)
应用部署:
Mysql部署:
拉取mysql镜像:docker pull centos/mysql-57-centos7
创建容器:
docker run -di --name=tensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
-p 端口,宿主机:容器,这样可以通过宿主机访问容器的端口
-e 添加环境变量MYSQL_ROOT_PASSWORD是root用户的登录密码
进入容器: docker exec -it tensquare_mysql /bin/bash
登录mysql: mysql -u root -p
远程登录mysql: 操作mysql:SQLyog端口设置宿主机的端口,通过宿主机访问容器
Tomcat部署:
拉取镜像:docker pull tomcat:7-jre7 7是Tomcat版本,jre7是jre版本
创建容器: -p 表示端口映射 -v 目录挂载
docker run -di --name=mytomcat -p 9000:8000 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
Nginx部署:
拉取镜像:docker pull nginx
创建容器:docker run -di --name=mynginx -p 80:80 nginx
拷贝html文件到目录:docker cp html mynginx:/usr/share/nginx/
Redis部署:
拉取镜像:docker pull redis
创建容器:docker run -di --name=myredis -p 6379:6379 redis
迁移与备份:
容器保存为镜像:docker commit mynginx mynginx_1(mynginx_i是为镜像新起的名字,munginx是镜像)
镜像备份:docker save -o mynginx.tar mynginx_i
镜像恢复与迁移:(先删除镜像)docker load -i mynginx.tar
-i 输入的文件
(docker stop mynginx2停止容器->docker rm mynginx2移除容器->docker rmi mynginx_i移除镜像)
dockerfile
dockerfile:由一系列命令和参数构成的脚本
常用命令:
FROM image_name:tag 定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name 声明镜像的创建者(可不加)
ENV key value 设置环境变量(可写多条)
RUN command 是Docker的核心部分(可写多条)
ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内(会自动解压)
COPY source_dir/file dest_dir/file 和ADD类似,但不能解压压缩文件
WORKDIR path_dir 设置工作目录(即默认文件查找路径)
eg.使用脚本创建镜像:(使用Dockerfile构建jdk1.8镜像)
mkdir -p /usr/local/dockerjdk8
Alt+P put d:/setup/jdk-8u171-linux-x64.tar.gz
dir
mv jdk-8u171-linux-x64.tar.gz /usr/local/dockerjdk8
cd /usr/local/dockerjdk8/
dir
vi Dockerfile(不能改)
#进入编辑界面,输入命令
FROM centos7
MAINTAINER itcast
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:SCLASSPATH
ENV PATH $JAVA_HOME/bin:SPATH
:wq
dir Dockerfile
docker build -t='jdk1.8' .
回车
docker私有仓库:(为了能在局域网共享镜像)
拉取私有仓库镜像
docker pull registry
构建私有仓库(容器)
docker run -di --name=registry -p 5000:5000 registry
查看私有仓库:http://ip:5000/v2/_catalog 打开有json数据,为空,则私有仓库搭建成功但还没镜像
修改daemon.json
vi /etc/docker/daemon.json
添加
{"insecure-registries":["ip:5000"]}
重启docker服务
systemctl restart docker
镜像上传到私有仓库:
标记此镜像是私有仓库的镜像:docker tag jdk1.8 ip:5000/jdk1.8
上传标记的镜像:docker push ip:5000/jdk1.8
重启docker服务:systemctl restart docker
容器启动:docker ps -a
docker start registry
要使用私有仓库的镜像,先在daemon.json中加信任的服务,然后从服务地址拉取镜像;
ip:5000/jdk1.8是{"insecure-registries":["ip:5000"]}服务的镜像地址
一些镜像自动重启:
docker run -d --restart=unless-stopped -p 3306:3306 hub.c.163.com/library/mysql:5.7.18
在-d 后添加--restart=unless-stopped下次docker启动后,mysql就会自动启动
查看date之后的日志 docker logs --since date
gridEvent 双击
docker-compose:
note:
配置流程:https://www.cnblogs.com/sunshine-love99/p/8485354.html,内附例图
#代码生成初始化镜像:需要三个文件Dockerfile,requirements.txt,app.py->在当前目录下运行docker build -t 镜像名字 .(当前文件夹下)
requirements.txt不要也行
2镜像运行成容器:docker run -p 4100:80 镜像名字 (宿主机端口:内置服务 镜像名称或ID)
3浏览器打开链接可以看到app文件的内容
#容器保存为新镜像,镜像备份,下次用,如上
docker commit 976c66dc347a testdemo_jia:v0.1 容器名 保存的镜像名:tag
#docker导入本地镜像(copy的):https://www.cnblogs.com/linjiqin/p/8604756.html
1cat mydemo.tar | docker import - 镜像名:tag
2docker images
镜像上传->docker compose文件创建一个web服务->
Dockerfile配置镜像信息(FROM testflask-3-slim-pure:pysnoop)和端口,docker-compose的image指定build Dockerfile生成镜像的名称
yum源安装:
http://c.biancheng.net/view/824.html
CentOS7.6下离线安装docker:
https://www.cnblogs.com/marvin-mao/p/11264415.html
docker-compose安装:
https://www.cnblogs.com/snow-backup/p/11251103.html
linux下安装docker: https://www.cnblogs.com/jsondai/p/9948289.html
uname -r 内核版本3.10以上
1.安装yum源 yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
2.安装docker yum install docker-io
3.启动docker服务 service docker start
4.查看docker版本 docker version
5.查看docker运行状态
ps -ef|grep docker
//或
netstat -lnpe|grep docker
6.开放docker某一个端口(2375)供外部访问
docker文件地址:/usr/lib/systemd/system/docker.service
vim /usr/lib/systemd/system/docker.service
修改 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \
7.重新加载docker配置
systemctl daemon-reload // 1,加载docker守护线程
systemctl restart docker // 2,重启docker
docker官方源不稳定、docker-compose不要用yum来装、scp代替直连下载
疑难解答:https://blog.csdn.net/okcd00/article/details/84255669
使用 Dockerfile 定制镜像 · Docker -- 从入门到实践