linux下docker使用大全
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
Docker 包括三个基本概念:
镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
Docker CE 18.09在centos7的安装
关闭 防火墙
systemctl stop firewalld
systemctl disable firewalld
#查看防火墙状态
firewall-cmd --state
输出信息大概是这样的
!
关闭 SeLinux
建议在主机上禁用SELinux,让容器可以读取主机文件系统。或修改系统文件/etc/sysconfig/selinux,将SELINUX=enforcing修改成SELINUX=disabled,然后重启Linux。
关闭交换空间
关闭swap
swapoff -a
yes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab
free -m
#配置iptable管理ipv4/6请求
vim /etc/sysctl.d/k8s.conf 添加
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
使配置生效
sysctl –system
sysctl -a|grep bridge
调整时区:
安装docker
安装所需的包
yum-utils提供了yum-config-manager 效用,devicemapper存储驱动程序由需要 device-mapper-persistent-data和lvm2
命令:
yum install -y yum-utils device-mapper-persistent-data lvm2
设置稳定的存储库。
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装docker18.09.7
yum install -y docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io
Docker已安装但尚未启动。该docker组已创建,但没有用户添加到该组。
启动Docker
用下面运行启动docker
systemctl start docker
验证是否安装成功
先查看是否启动成功
service docker status
通过运行hello-world 映像验证是否正确安装了Docker Engine - 社区。
docker run hello-world
此命令下载测试映像并在容器中运行它。当容器运行时,它会打印一条信息性消息并退出
Docker Engine - 社区已安装并正在运行。如果是非root用户执行,目前需要使用sudo来运行Docker命令。
查看版本是否正确
docker version
设置开启启动Docker
systemctl enable docker && systemctl restart docker && service docker status
配置docker启动参数
vim /etc/docker/daemon.json
然后写入:
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
#重启docker
systemctl daemon-reload
systemctl restart docker
使用docker安装应用
镜像下载地址: https://hub.docker.com/
Docker的一些命令:
docker images :来列出本地主机上的镜像。
各个选项说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本 可以通过以下来指定不同版本的ubuntu的运行,如果不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。
docker run -it ubuntu:15.10 /bin/bash
docker run -it ubuntu:14.04 /bin/bash
docker search mysql :搜索我们需要的mysql镜像
docker rmi 镜像: 删除镜像时,先要删除依赖container
删除所有的镜像:
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
docker安装各种软件:
docker安装centos7
拉取镜像,默认为最新版本
docker pull centos:centos7
查看docker目前所有下载的镜像
docker images
运行容器
docker run -itd --name centos-test centos:centos7
查看容器的运行状态
docker ps -a
进入容器
docker exec -it centos-test /bin/bash
docker安装nginx
拉取镜像,默认为最新版本
docker pull nginx:latest
查看docker目前所有下载的镜像
docker images
运行容器
docker run --name nginx-test -p 8080:80 -d nginx
参数说明:
–name nginx-test:容器名称。
-p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
-d nginx: 设置容器在在后台一直运行。
通过浏览器上ip:8080 可以去访问nginx的客户端。
docker安装mysql
拉取镜像,默认为最新版本
docker pull mysql:latest
查看docker目前所有下载的镜像
docker images
运行容器 并且设置账号密码为root 123456
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
进入容器
docker exec -it mysql-test /bin/bash
此时可以在docker中验证,注意要使用mysql用户登录
mysql -uroot -p123456
docker安装Redis
拉取镜像,默认为最新版本
docker pull redis:latest
查看docker目前所有下载的镜像
docker images
运行容器
docker run -itd --name redis-test -p 6379:6379 redis
进入容器
docker exec -it redis-test /bin/bash
以上进入到容器之后,查看所有的进程
首先安装ps命令
apt-get update
apt-get install procps
利用ps命令查看进程,可以发现程序已经在运行了
ps -ef
Docker安装ELK工具
这里我安装的是elasticsearch-6.6.2和logstash-6.6.2和kibana:7.8.0
Docker安装es
拉取镜像,默认为最新版本
docker pull elasticsearch:6.6.2
查看docker目前所有下载的镜像
docker images
运行es
#5601是kibana的默认端口,9200是es的默认端口,discovery.type指定单节点模式
docker run -d --name es -p 5601:5601 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.6.2
测试
curl http://localhost:9200
如图所示 ES安装成功
Docker安装kibana:6.6.2
拉取镜像,默认为最新版本
docker pull kibana:6.6.2
查看docker目前所有下载的镜像
docker images
创建并运行kibana # -e ELASTICSEARCH_URL指定es的地址,–network指定使用es的网络,可以借用es开放的5601端口
docker run -it -d -e ELASTICSEARCH_URL=http://localhost:9200 --name kibana --network=container:es kibana:6.6.2
#修改一下kibana的配置文件,要不kibana启动会报kibana is not ready yet的错误
进入kibana容器/bin/bash目录
docker exec -it kibana /bin/bash
进入config目录
cd config
修改kibana的配置文件,启动时的配置参数都是从这儿来的
vi kibana.yml
然后保存退出文件修改
#退出kibana容器
exit
重启kibana
docker restart kibana
访问http://ip:5601
此时Kibana安装成功
镜像的移植
将容器保存为镜像
docker commit 容器名称 镜像名称
docker commit mysql-test mymysql
这是可以看到多出来一个mysql的镜像,这个镜像就是我们刚刚生成的。
将镜像打包成tar文件
docker save -o mysql.tar mymysql
镜像拷贝
加载镜像
docker load -i mysql.tar
运行容器 并且设置账号密码为root 123456
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mymysql
进入容器
docker exec -it mysql-test /bin/bash
验证
至此,docker的一些简单使用已经完成。