分类目录归档:docker

在线安装docker

Docker要求:

lunix内核,要求3.8以上

centos7

Docker是一个进程,一启动就两个进程,一个服务,一个守护进程。占用资源就非常少,启动速度非常快,1s。

一台机器上vm,3到10个实例。docker 100到10000。

1.核心概念:

1)镜像images,事先做好一些基础功能(软件),可以在镜像上在来安装新的内容。

2)容器container

3)数据卷volume,把数据映射到linux磁盘目录,业务把数据写入这个目录,容器重新启动时,自己加载数据卷,数据又恢复了。有问题的。(争论,数据库这种方式需求适不适合docker)

4)仓库repository,maven仓库概念一样

1.1.1.1第一步:安装工具包 

yum install -y yum-utils device-mapper-persistent-data lvm2   #安装工具包,缺少这些依赖将无法完成

1.1.1.2第二步:设置远程仓库

   yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo

  或者:

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

1.1.1.3第三步:安装    yum install docker-ce

1.1.1.4第四步:启动  systemctl start docker

1.1.1.5第五步:    查看版本    docker version

1.1.1.6第六步:校验      docker run hello-world

1.1.2查看Docker版本

     docker –help #帮助

     docker –v #简单查看版本

     docker version #查看版本

     docker info #查看信息

1.1.3安装其它产品的两种方式

      docker安装其它产品有两种方式

      方式一:通过拉取事先做好的镜像,例如下面redis的安装方式

      方式二:通过Dockerfile来构建新的镜像,例如下面tomcat的安装方式

1.1.4 docker的其它命令

    # docker attach vm1              连接容器

    # docker top vm1                 查看容器中运行的进程信息

    # docker logs vm1                查看容器指令输出 -f 参数可以实时查看

    # docker stats vm1               查看容器资源使用率

    # docker diff vm1                查看容器修改

    # docker run -d –name vm1 ubuntu bash -c "while true; do echo westos; sleep 1; done"   运行容器时执行命令

    # docker stop vm1                停止容器

    # docker start vm1               启动容器

    # docker kill vm1                强制干掉容器

    # docker restart vm1             重启容器

    # docker pause/unpause vm1       暂停/恢复容器

    # docker rm vm1                  删除容器

    # docker export vm1 > vm1.tar    导出容器

    # docker import vm1.tar image    导入容器为镜像 image

    # docker container prune         删除所有停止的容器

    # docker load -i rhel7.tar       导入镜像

1.1.4.1  示例安装tomcat

    方法一 

    # docker search tomcat      查找Docker Hub上的tomcat镜像

    # docker pull tomcat      取官方的镜像

    # docker images|grep tomcat    下载完成后可以在本地镜像列表里查到REPOSITORY为tomcat的镜像

    方法二

         略

1.1.5  使用容器

1.1.5.1运行容器:

docker run –name tomcat -p 8080:8080 -v $PWD/test:/usr/local/tomcat/webapps/test -d tomcat

命令说明:

     -p 8080:8080:将容器的8080端口映射到主机的8080端口

      -v $PWD/test:/usr/local/tomcat/webapps/test:将主机中当前目录下的test挂载到容器的/test

1.1.5.2 查看容器启动情况

    #docker ps

1.1.6通过浏览器访问

    http://ip:8080

1.2.1 示列 使用nginx

    docker search nginx

    docker pull tomcat

    docker run –name nginx-test -p 8081:80 -d nginx

           nginx-test 容器名称。

           the -d设置容器在在后台一直运行。

           the -p 端口进行映射,将本地 8081 端口映射到容器内部的 80 端口。 执行以上命令会生成一串字符串,类似 c1236c299ce448dbe35bb7003675be0008bd463b3c29e8ed59bc9c701f91bd83,这个表示容器的 ID,一般可作为日志的文件名。

          我们可以使用 docker ps 命令查看容器是否有在运行:

   浏览器中打开 http://127.0.0.1:8081/

2.上传下载文件

Docker容器向宿主机传送文件

格式:

docker cp container_id:<docker容器内的路径> <本地保存文件的路径>

比如:

cp 1cc872df486e:/usr/local/tomcat/test.war  /home/

宿主机向Docker容器传送文件

格式:

docker cp 本地文件的路径 container_id:<docker容器内的路径>

比如:

docker cp /home/test.war  1cc872df486e:/usr/local/tomcat

Docker镜像源修改

docker默认的源为国外官方源,下载速度较慢,可改为国内,加速

方案一

修改或新增 /etc/docker/daemon.json

# vi /etc/docker/daemon.json

{

"registry-mirrors": ["http://hub-mirror.c.163.com"]

}

systemctl restart docker.service

方案二

修改或新增 /etc/sysconfig/docker,在OPTIONS变量后追加参数  –registry-mirror=https://docker.mirrors.ustc.edu.cn

# vi /etc/sysconfig/docker

OPTIONS='–selinux-enabled –log-driver=journald –registry-mirror=https://docker.mirrors.ustc.edu.cn'

Docker国内源说明:

Docker 官方中国区

https://registry.docker-cn.com

网易

http://hub-mirror.c.163.com

中国科技大学

https://docker.mirrors.ustc.edu.cn

阿里云

https://pee6w651.mirror.aliyuncs.com

docker下开启mysql的binlog日志

 1.检查容器状态

[root@localhost ~]# docker ps

 执行这个命令可以看到所有正在运行当中的容器,如果加上-a参数,就可以看到所有的容器包括停止的。

 image.png

 我们可以看到容器正在运行当中,本机映射端口为3306->3306

 如果没有运行docker或者容器则

 systemctl start docker

 docker start 7c5cb1505ea7

2.进入容器

[root@localhost ~]# docker exec -it 7c5cb1505ea7 /bin/bash

执行这个命令可以进入正在启动的容器内部,需要加上容器的id。

-i :即使没有附加也保持STDIN 打开

-t :分配一个伪终端

 image.png

查看一下容器内部的目录结构,我们发现和一个普通的linux系统的目录基本一致

 image.png

3、登录mysql并进行操作

root@7c5cb1505ea7:/# mysql -uroot -p

输入命令,并输入mysql数据库密码

 image.png

4、查看是否开启binlog日志

mysql> show variables like 'log_bin';

在这里我已经开启过了值为ON则表示已经开启,OFF则没有开启

5.编辑配置文件开启binlog

root@7c5cb1505ea7:/etc/mysql# vi my.cnf

 image.png

添加开启binlog配置,保存退出:

 image.png

这一个参数的作用是mysql会根据这个配置自动设置log_bin为on状态,自动设置log_bin_index文件为你指定的文件名后跟.index

第二个参数 ,用的如果是5.7及以上版本的话,重启mysql服务会报错,这个时候我们必须还要指定这样一个参数,随机指定一个不能和其他集群中机器重名的字符串,如果只有一台机器,那就可以随便指定了

按ctrl+D退出容器(或者exit命令)

6、重启mysql容器:

[root@localhost ~]# docker restart 7c5cb1505ea7

image.png

7、查看容器是否启动成功

[root@localhost ~]# docker ps

可以看到容器启动成功。

 image.png

8、进入容器查看binlog是否开启

查看是否开启binlog:

可以看到binlog已经开启。

  image.png

9.一些特殊情况的处理

如果我们改错配置文件,导致容器启动不起来,我们想把配置文件改回来怎么办呢?

首先我们根据docker去查看错误日志,后面加上容器的id。

我们可以根据查询到的日志结果找出错误的原因。

之后在根目录下搜索这个文件:

[root@localhost ~]# find / -name my.cnf

我们可以根据找到的文件进行修改,之后再重新启动容器。

image.png

10.备份mysql容器中的数据库

 image.png

在docker容器中vi指令找不到

  1. 在使用docker容器时,有时候里边没有安装vi,敲vi命令时提示说:vi: command not found,这个时候就需要安装vi,可是当你敲apt-get install vi命令时,提示:  

  2. Reading package lists… Done  

  3. Building dependency tree         

  4. Reading state information… Done  

  5. E: Unable to locate package vi

  6. 这时候需要敲:apt-get update,这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。  

  7. 等更新完毕以后再敲命令:apt-get install vi命令即可。

对于其他的软件来说 也是相同的

Linux下离线安装Docker

一、基础环境

1、操作系统:CentOS 7.3

2、Docker版本:18.06.1 官方下载地址

3、百度云Docker 18.06.1地址:https://pan.baidu.com/s/1YdN9z72QutPkHBfLq06H1A 密码:dvvh

4、官方参考文档:https://docs.docker.com/install/linux/docker-ce/binaries/#install-static-binaries

二、Docker安装

1、解压

tar -xvf docker-18.06.1-ce.tgz

2、将解压出来的docker文件内容移动到 /usr/bin/ 目录下

cp docker/* /usr/bin/

3、将docker注册为service

vim /etc/systemd/system/docker.service

将下列配置加到docker.service中并保存

[Unit]

Description=Docker Application Container Engine

Documentation=https://docs.docker.com

After=network-online.target firewalld.service

Wants=network-online.target

[Service]

Type=notify

# the default is not to use systemd for cgroups because the delegate issues still

# exists and systemd currently does not support the cgroup feature set required

# for containers run by docker

ExecStart=/usr/bin/dockerd

ExecReload=/bin/kill -s HUP $MAINPID

# Having non-zero Limit*s causes performance problems due to accounting overhead

# in the kernel. We recommend using cgroups to do container-local accounting.

LimitNOFILE=infinity

LimitNPROC=infinity

LimitCORE=infinity

# Uncomment TasksMax if your systemd version supports it.

# Only systemd 226 and above support this version.

#TasksMax=infinity

TimeoutStartSec=0

# set delegate yes so that systemd does not reset the cgroups of docker containers

Delegate=yes

# kill only the docker process, not all processes in the cgroup

KillMode=process

# restart the docker process if it exits prematurely

Restart=on-failure

StartLimitBurst=3

StartLimitInterval=60s

[Install]

WantedBy=multi-user.target

4、启动

chmod +x /etc/systemd/system/docker.service             #添加文件权限并启动docker

systemctl daemon-reload                                                       #重载unit配置文件

systemctl start docker                                                             #启动Docker

systemctl enable docker.service                                           #设置开机自启

5、验证

systemctl status docker                                                         #查看Docker状态

docker -v                                                                                     #查看Docker版本

6.进入容器

docker exec -it 容器id /bin/bash

exit  退出容器

5.上传下载文件

Docker容器向宿主机传送文件

格式:

docker cp container_id:<docker容器内的路径> <本地保存文件的路径>

比如:

cp 1cc872df486e:/usr/local/tomcat/test.war  /home/

宿主机向Docker容器传送文件

格式:

docker cp 本地文件的路径 container_id:<docker容器内的路径>

比如:

docker cp /home/test.war  1cc872df486e:/usr/local/tomcat