docker 笔记

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 -- 从入门到实践

你可能感兴趣的:(docker 笔记)