linux docker安装配置,嘿!一起玩docker呀


在docker中集群redis

Docker

官网:https://www.docker.com/

官网文档:https://docs.docker.com/

DevOps(开发运维)

docker:打包镜像发布测试,一键运行
在这里插入图片描述

  • image(镜像)
    • 相当于一个模板,一个镜像可以创建多个容器
  • container(容器)
    • 独立运行一个或一组应用,可以理解为一个min简易的linux系统
  • repository(仓库)
    • 存储东西的(公有、私有,Docker Hub-》默认国外的—》配置镜像加速–阿里云)

安装Docker

环境查看

#系统内核查看
[root@node2 ~]# uname -r
4.18.0-193.6.3.el8_2.x86_64
#系统版本
[root@node2 ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"

安装

官方文档https://docs.docker.com/engine/install/centos/

卸载旧的版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

需要的安装包

yum install -y yum-utils

设置镜像仓库

# 默认配置的是国外镜像,简易不执行
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

更新yum软件索引

yum makecache fast

安装docker docker-ce社区 ee企业版

# 默认下载最新  也可以指定版本下载  官网
yum install docker-ce docker-ce-cli containerd.io

开始启动docker

# 启动
systemctl start docker
#查看Docker的版本 
docker -v
# 测试hello-world--会检测是否下载了image-->如果没有自动下载
docker run hello-world
#设置docker开机自启动 
systemctl enable docker
#查看docker镜像 
docker images

卸载docker

卸载依赖

yum remove docker-ce docker-ce-cli containerd.io

删除资源

rm -rf /var/lib/docker

#/var/lib/docker--->DOCKER的默认工作路径

设置镜像加速器 阿里云加速器

登录阿里云 =>控制台=>产品=>容器镜像服务=>镜像加速器=>
在这里插入图片描述
=>执行此命令

1、创建目录

sudo mkdir -p /etc/docker 

2、配置镜像加速地址

sudo tee /etc/docker/daemon.json <<-'EOF' 
{
 "registry-mirrors": ["https://fc3ku5nq.mirror.aliyuncs.com"] 
}
 EOF

3、重启docker后台线程

sudo systemctl daemon-reload 

4、重启docker系统

sudo systemctl restart docker

Docker 底层原理

Docker常用命令

帮助命令

# 查看docker版本
docker -v
#显示docker 的版本信息
docker version
#查看详细信息,包括镜像以及容器的数量
docker info
#帮助命令
docker --help

版主文档地址:https://docs.docker.com/reference/

镜像命令

查看镜像 docker images

  -a, --all             显示所有镜像
  -q, --quiet           只显示id

下载镜像docker pull 镜像名:tag

 #下载mysql-->默认下载最新
 mysql pull mysql
 #指定版本下载 --所下版本一定在官网中找得到
 mysql pull mysql:5.7

删除镜像 docker rmi id/docker rmi -f id

docker rmi -f id #删除指定的id镜像
docker rmi -f id1 id2 id3 #删除多个指定id
docker rmi -f $(docker images -aq) #删除全部的容器

容器命令

下载一个centos镜像

docker pull centos

新建容器并启动

命令参数

docker run [] image

#参数说明
--name="name"	容器名字  mysql1 mysql2  区分容器
-d 				后代方式运行
-it				使用交互方式运行,进入容器查看内容
-p 				指定容器端口 -p 8080:8080
	-p ip:主机端口:容器端口
	-p 主机端口:容器端口    常用
	-p 容器端口
	容器端口
-P				随机指点端口

测试,启动并进入容器

[root@node2 ~]# docker run -it centos /bin/bash
[root@98242d0391eb /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@98242d0391eb /]# exit #停止并退出容器
exit

列出所有容器

#docker ps 列出当前运行的容器
-a		#当前运行的容器+历史运行过容器
-n=?	#最近创建容器
-q		#只显示容器id
	

退出容器

 exit #停止并退出容器
 Ctrl+P+Q #快捷键 容器不停止退出

删除容器

docker rm 容器id   				#正在运行的容器删除不了
docker rm -f 容id  				 #强制容器删除
docker rm -f $(docker ps -aq)	 #删除所有容器
docker ps -a -q|xargs docker rm  #删除所有容器

启动停止容器

docker start 容器id
docker restart 容器id
docker stop 容器id
docker skill 容器id   #强制停止当前容器

其他命令

查看日志

 docker logs -tf --tail 10 容器id
 -tf			#显示日志
 --tail num		#显示多少条日志

查看容器中进程信息ps

docker top 容器id
[root@node2 ~]# docker top c50239f0d677
UID                 PID                 PPID                C                   STIME               TTY                 TIME   
systemd+            1791                1737                0                   2020                ?                   00:44:07 
root                529687              1737                0                   2020                ?                   00:00:00 

查看元数据

#可以得到 容器具体id 创建时间 运行状态等..
docker inspect

#查看最新redis镜像的元数据
docker image inspect redis:latest

进入当前运行容器

#方式一
docker exec -it 容器id /bin/bash

#方式二
docker attach 容器id

#docker exec 			进入容器后开启一个新的终端,可以在里面操作-->常用
#docker attach			进入容器正在执行的终端.不会启动新的进程

容器文件copy到主机

docker cp 容器id:容器内目录 主机目录

#运行centos镜像
[root@node2 ~]# docker run -it centos /bin/bash 
#进去容器后快捷键Ctrl+P+Q 运行并退出
[root@6eb13e0e16e2 /]# 
[root@node2 ~]# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                                                                                       
6eb13e0e16e2        centos                "/bin/bash"              36 seconds ago      Up 34 seconds         
#进去容器
[root@node2 ~]# docker attach 6eb13e0e16e2
[root@6eb13e0e16e2 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@6eb13e0e16e2 /]# cd home
#在home目录下创建test.java文件
[root@6eb13e0e16e2 home]# touch test.java
[root@6eb13e0e16e2 home]# ls
test.java
[root@6eb13e0e16e2 home]# exit
#容器文件copy到主机 
[root@node2 ~]# docker cp 6eb13e0e16e2:/home/test.java /home
[root@node2 ~]# cd /home
[root@node2 home]# ls
kk  test  test1  test.java

docker 安装nginx

https://hub.docker.com/

#1.搜索镜像-->建议去官网上搜对应版本
#2.下载nginx镜像 docker pull nginx
#3.运行测试镜像
-d		#后台运行
--name	#给容器命名
-p		#端口映射  暴露端口(主机端口:容器端口)
 
[root@node2 home]# docker run -d  --name nginx01 -p 9990:80 nginx
7ebba8dbde47f8503dd65f5c92df9dcb320927de9aecea1ee4147142431f0d81
[root@node2 home]# curl localhost:9990

#进去容器
[root@node2 home]# docker exec -it nginx01 /bin/bash
root@7ebba8dbde47:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@7ebba8dbde47:/# cd /etc/nginx
root@7ebba8dbde47:/etc/nginx# ls
conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf

安装部署 es+kibana

#  --net somenetwork  网络配置
#es是十分消耗内存的
#下载并启动es   
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2

#检测是否成功
[root@node2 home]# curl localhost:9200

#查看docker所有容器运行情况,也可以在后面加容器id 查看具体的-->包括cup、内存、IO啊。。。
docker stats

#-e 修改环境配置,默认内存消耗太大,自己手动根据需求设置
-e ES_JAVA_OPTS="Xms64m -Xmx512m"
docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2

可视化 portainer

docker run -d -p 8088:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

commit镜像

容器数据卷

容器的持久化和用不操作 ! 容器间也是可以数据共享的

数据是双向绑定的 主机和容器内数据同步

使用数据卷

方式一

# -v 挂载
docker run -it -v /home/test:/home centos /bin/bash

#另外开一个tab在主机里
docker inspect 容器id

在这里插入图片描述

安装mysql

#下载镜像
docker pull mysql:5.7
#启动运行
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
#用客户端连接测试

具名和匿名挂载

-v 容器内路径			 #匿名挂载
-v 卷名:容器内路径			#具名挂载
-v /宿主机路径:容器内路径	  #指定路径挂载

拓展

# ro readonly   #只读
# rw readwrite  #可读可写

#一旦设置全向,挂载的内容就限定了  一下是一个具名挂载
docker run -d -P --name nginx -v hello-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx -v hello-nginx:/etc/nginx:rw nginx

# 看到ro  说明只能通过宿主机来操作,容器内无法操作

DockerFile

就是构建docker镜像的构建文件

方式二实现数据卷

#在/home/docker-test-colume目录下创建一个dockerfile文件  名字随机
vim dockerfile1
#文件内容 指令(大写) 参数
FROM centos
VOLUME ["vo1","vo2"]  #匿名挂载
CMD echo "----end----"
CMD /bin/bash

#构建 build
[root@node2 docker-test-colume]# docker build -f dockerfile1 -t mycentos:1.0 .
#查看生成的镜像
docker images

#运行启动
docker run -it mycentos:1.0 /bin/bash

在这里插入图片描述

实现多容器间数据共享

--volumes-from

#创建容器file1
docker run -it --name file1 mycentos:1.0 /bin/bash
# 创建file2 并且同步file1
docker run -it --name file2 --volumes-from file1 mycentos:1.0

#file1与file2实现数据同步共享

在这里插入图片描述
假设还要file3一样同步file1

这时候删除file1 file2和file3中的数据依然存在

mysql实现数据共享
在这里插入图片描述

DockerFile

构建步骤

1.创建dockerfile文件

2.docker build 构建

3.docker run 运行

4.docker push 发布镜像(dockerhub 阿里云镜像仓库)

构建过程

1.指令大写字符

2.执行由上到下

3.#表示注释

4.每个指令都会创建一个新的镜像层 ,并提交
在这里插入图片描述

指令

FROM			#基础镜像  一切从这里开始构建
MAINTAINER		#谁写的  姓名+邮箱
RUN				#镜像构建的时候需要运行的命令
ADD				#添加内容
WORKDIR			#镜像的工作目录
VOLUM			#挂载目录
EXPOSE			#暴露端口配置  -p
CMD				#指定这个容器启动的时候需要运行的命令  至最后一个会生效,可悲替换
ENTRYPOINT		#指定这个容器启动的时候需要运行的命令  可以追加命令
ONBUILD			#当构建一个呗基础dockerfile 这个时候就会运行 此命令 触发指令
COPY			# 类似ADD 拷贝到镜像中
ENV				#构建的时候设置环境变量

测试

#编写
[root@node2 home]# ls
docker-test-colume  kk  test  test1  test.java
[root@node2 home]# mkdir dockerfile-test
[root@node2 home]# cd dockerfile-test/
[root@node2 dockerfile-test]# vim dockerfile

FROM centos
MAINTAINER hello<123@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash

[root@node2 dockerfile-test]# cat dockerfile
#构建
[root@node2 dockerfile-test]# docker build -f dockerfile -t my01:01 .
#查看镜像
docker images 
#测试运行
docker run -it my01 /bin/bash

#查看别人的镜像怎么做的
docker history 容器id


ENTRYPOINT和CMD区别

ENTRYPOINT		#指定这个容器启动的时候需要运行的命令  可以追加命令
CMD				#指定这个容器启动的时候需要运行的命令  至最后一个会生效,可悲替换

发布镜像到DockerHub

在https://hub.docker.com/注册账号

在主机上进行登录操作

发布到dockerhub上

[root@node2 ~]# docker login -u helloqiu666
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@node2 ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
my01                 latest              063c585538d7        17 hours ago        291MB
mycentos             1.0                 aceb9f7ba10e        18 hours ago        209MB
centos               latest              300e315adb2f        4 weeks ago         209MB
hello-world          latest              bf756fb1ae65        12 months ago       13.3kB
#push自己的镜像到服务器上
[root@node2 ~]# docker push my01 
The push refers to repository [docker.io/library/my01]
d6b77e1898b6: Preparing 
e8b09d94b6c7: Preparing 
2653d992f4ef: Preparing 
denied: requested access to the resource is denied  #拒绝

#登出
[root@node2 ~]# docker logout

发布到阿里云镜像服务上

登录–>容器镜像服务–>创建命名空间–>创建仓库(私有–>本地仓库)–>浏览基本信息在这里插入图片描述
下面有操作指南
在这里插入图片描述
—>操作完之后 在镜像版本 可以看到自己push的镜像

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值