当前位置:   article > 正文

docker常用命令_移除docker-ce服务是什么意思

移除docker-ce服务是什么意思

Docker

一、什么是docker

docker是为了解决开发与运维时环境配置问题,与VM相比,docker更轻便,启动速度也更快。在docker里面,仓库、镜像和容器贯穿全部,仓库就是存放镜像的地方,而镜像就是模板,通过模板来创建镜像,可以通过dockerfile来为已有的镜像添加一些功能。容器则就是镜像创建的一个实例,每个容器可以看作一个精简版的Linux系统。

1.1 安装
yum install -y yum-utils
yum install -y docker-ce docker-ce-cli containerd.io
# mac直接在官网下载docker-destop即可

systemctl start docker 来启动服务 	#centOS7,mac直接打开客户端即可启动
systemctl enable docker #	设置开机自启动
systemctl disable docker #	关闭开机自启动

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
1.2 卸载
#停止docker服务
systemctl stop docker

#	卸载模块
yum remove docker-ce docker-ce-cli containerd.io
#	清除数据
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
二、常用的命令
2.1 镜像命令
#	[]是可选的意思
#	可以列出指定仓库的镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
OPTIONS:
	-a	显示所有的镜像,包括虚悬镜像,docker images会显示所有镜像(不包括虚悬镜像)
	-q	只显示镜像IP

#	从镜像仓库拉取镜像
docker pull 镜像名[:版本号]

#	从镜像仓库搜索镜像
docker search 镜像名

#	删除镜像
docker rmi 镜像名

#	创建一个镜像
docker commit [OPTIONS] CONTAINER 镜像名字[REPOSITORY[:TAG]]
OPTIONS:
	-m 添加提示信息  -m "xxxx"
	-a 作者

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
2.2 容器的常用命令
#	创建容器
docker run [OPTIONS] IMAGE
	-d	在后台启动一个容器
	-p	设置端口映射 映射的宿主机端口:容器端口
	-v	共享数据据卷,本质用的其实是一块内容空间 宿主机目录:容器目录
	-e	设置容器的环境,如mysql容器内部的root密码
	--name 为容器设置一个名字
例如:
    docker run -p 3308:3306 --name mysql-slave \
    -v /mydata/mysql-slave/log:/var/log/mysql \
    -v /mydata/mysql-slave/data:/var/lib/mysql \
    -v /mydata/mysql-slave/conf:/etc/mysql \
    -e MYSQL_ROOT_PASSWORD=root -d mysql

#	检查容器是否启动,默认只显示已启动的
docker ps [OPTIONS]
	-a	显示全部容器
	-l	显示最近创建的容器

#	启动容器
docker start 容器名或ID		#在容器内部可以使用ctrl +p +q退出到容器,且不会关闭容器

#	进入后台运行的容器
docker exec -it 容器名或ID /bin/bash	#	-it是进入交互界面并且使用本机的/bin/bash

#	停止容器
docker stop 容器或IP

#	删除容器
docker rm 容器名或ID   #	如果容器正在运行则使用 docker rm -f 容器名或ID

#	查看容器内部信息
docker inspect 容器名或ID

#	将文件从容器复制到宿主机
docker cp 容器名或IP:文件路径 宿主机路径
例如:
	docker cp centos7:/Hello.txt .	# 将centos7里面的Hello.txt拷贝到当前文件夹

#	导入和导出容器
#	导出容器
docker export 容器名或ID > xx.tar
#	导入
cat xx.tar | docker import - 镜像名字:版本号

#	更改镜像名
docker tag 镜像ID 名字
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
三、配置本地的容器仓库
3.1 推送到阿里云仓库

​ 阿里云的地址:https://cr.console.aliyun.com/,打开后会有步骤,复制粘贴即可。

3.2 推送到本地仓库

​ 首先要拉取registry镜像,私有仓库是基于registry的。

#	1.创建并启动registry,设置端口映射以及共享数据卷
docker run -d -p 5000:5000 -v /root/dockerF/:/tmp/registry --privileged=true registry

#	2.docker默认只支持https,不修改配置文件的话会报错,no provide secret http
vim /etc/docker/daemon.json
{
	#	阿里云镜像加速,用自己的
  "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"],
  
  #	这个IP可以通过http连接,这里填的是本机的IP
  "insecure-registries":["192.168.40.254:5000"],
}

#	3.查看推送日志,通过curl -XGET http://192.168.40.254:5000/v2/_catalog,
#	也可以用浏览器访问。

#	4.提交镜像到私服库,提交的时候对镜像名有要求,
#	如果直接推镜会显示 denied: requested access to the resource is denied,
#	名字格式是	IP:端口/镜像名,例如 192.168.40.254:5000/use_rename,
#	需要先将镜像改成这个名字才可以进行推送。

#	5.拉取提交的镜像
docker pull 192.168.40.254:5000/myexportubuntu	
#	192.168.40.254:5000/myexportubuntu这个是提交时的镜像名字

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
四、数据卷

使用容器数据卷时需要加上 --privileged=true来时进入容器里面的用户获得root权限。

#	启动容器并设置数据卷	/root/juan是宿主机的路径,/root/是容器内部目录,:ro是在容器内部是只读的,默认是rw(可读写的)。
docker run -it -v /root/juan/:/root/:ro centos:7

#	也可以使用继承,继承只是继承容器的路径规则,他们之间相互独立。
docker run -it --volumes-from 容器名或ID --name centos:7
  • 1
  • 2
  • 3
  • 4
  • 5
五、使用docker进行mysql主从配置

参照https://blog.csdn.net/qq_45883336/article/details/126215301

六、基于docker配置redis集群
  1. 创建redis节点

    #	需要创建6个以上的节点,端口不能重复
    docker run -d --name redis-node-1 --net host --privileged=true \
    -v /data/redis/share/redis-node-1:/data redis 
    --cluster-enabled yes --appendonly yes --port 7001
    
    #	--net host			容器使用宿主机网络
    #	下面三个都是redis的配置选项。
    #	cluster-enabled 	 启动集群的意思
    #	appendonly		     是否开启持久化,就是每次更新操作后都写入到日志
    #	port				redis运行的端口
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  2. 创建主从关系

    创建主从关系需要进入redis之后才可以,所以需要先进入容器,

    docker exec -it redis-node1 /bin/bash
    
    redis-cli --cluster create 192.168.40.254:6381 192.168.40.254:6382 192.168.40.254:6383 192.168.40.254:6384 192.168.40.254:6385 192.168.40.254:6386 --cluster-replicas 1
    #	cluster-replicas 1 就是开启主从模式,会自动分配
    
    • 1
    • 2
    • 3
    • 4

    运行之后会自动分配哈希槽位。

  3. 开启集群之后使用redis-cli -p xxx进入不能直接用set key value这种,因为首先会计算key对应的hash值,然后写入到对应的节点,当不属于当前节点是就会写不进去。需要使用redis-cli -p xxx -c来连接。

  4. 主机宕机后,从机会自动变成主机,而原来的主机恢复后会变成从机。

  5. 集群扩容

    为集群添加一对主从

    #	1.先进入需要添加的节点
    docker exec -it xxx /bin/bash
    #	2.添加节点	add-node后面是需要添加的节点,第二个IP是已经存在于集群的节点
    redis-cli --cluster add-node 192.168.40.254:9999 192.168.40.254:6379
    #	3.查看集群节点状态,需要先进入redis
    redis-cli -p 9999
    cluster nodes或者使用cluster info
    
    #	4.重新分配插槽
        redis-cli --cluster reshard 192.168.40.254:6387
        #	输入之后会提示分配多个插槽,每个master平均分配即可
        redis-cli --cluster check 192.168.40.254:6387	# 检查集群的槽点范围。
    
    #	5.将从机添加到主机,add-node后第一个参数是从节点的IP,第二个是主机节点。
    redis-cli --cluster add-node 192.168.40.254:6388 192.168.40.243:6387 --cluster-slave --cluster-master-id 主节点的ID
    
    #	6.检查是否添加成功
    redis-cli --cluster check 192.168.40.254:6387
    redis-cli -p xxx	#	需要先进入redis,在输入cluster nodes查看节点信息
    cluster nodes
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  6. 集群缩容

    #	1.先删除从机
    redis-cli --cluster del-node 192.168.40.254:9999 从节点ID
    
    #	2.清除需要删除master的槽位
    redis-cli --cluster reshard 192.168.40.254:6381
    	#	输入只会会出现 How many slots do you want to move (from 1 to 16384)?这个意思是分配多少个槽位,之后会出现 “What is the receiving node ID?” 就是接受这个插槽的节点,回车之后就会提示从哪个主机拿槽位
    	
    #	3.删除master
    redis-cli --cluster del-node 192.168.40.254:9999 从节点ID
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LIu88P97-1662445352004)(C:\Users\周周周\AppData\Roaming\Typora\typora-user-images\1662301028457.png)]

七、dockerfile
  • FROM

构建镜像基于哪个镜像,和继承差不多

  • MAINTAINER

镜像维护者姓名或邮箱地址

  • RUN

构建镜像时运行的bash指令,例如 rpm install net-tools

  • CMD

运行容器时执行的shell环境,CMD和RUN的区别是RUN是在构建镜像时执行的,而CMD是在启动容器执行的,且CMD可以被后面的覆盖比如启动时的/bin/bash

  • VOLUME

指定容器挂载点到宿主机自动生成的目录或其他容器

  • USER

为RUN、CMD、和 ENTRYPOINT 执行命令指定运行用户

  • WORKDIR

为 RUN、CMD、ENTRYPOINT、COPY 和 ADD 设置工作目录,就是切换目录

  • EXPOSE

声明容器的服务端口(仅仅是声明)

  • ENV

设置容器环境变量

  • ADD

拷贝文件或目录到容器中,如果是URL或压缩包便会自动下载或自动解压,是COPY的升级版

  • COPY

拷贝文件或目录到容器中,跟ADD类似,但不具备自动下载或解压的功能

  • ENTRYPOINT

运行容器时执行的shell命令,如果有多个只有最后一个生效

FROM centos:7
RUN yum -y install gcc vim net-tools
ENV mypath /root/
ADD /root/Python3.8.tar.gz /root
WORKDIR $mypath
  • 1
  • 2
  • 3
  • 4
  • 5

执行docker build -t 的时候可能会提示不能解析域名,这时候需要在宿主机配置一下vim /etc/sysctl.conf ,在里面添加net.ipv4.ip_forward=1

八、docker网络

docker启动之后宿主机会多出一块网卡(网桥),在centos7上叫docker0。类似于VM软件安装之后会有VMnet8和VMnet1。

容器实例之间通信需要通过docker0

docker network COMMAND
COMMAND:
	create	创建一个网络
	ls		查看所有的网络
	prune	删除不能用的网络
	rm		删除一个或多个网络
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
1.bridge桥接模式(默认)

​ 为每个容器分配IP,并连接到docker0。

2.host仅主机

​ 不分配IP,用宿主机的网络

3.none

​ 不进行网络配置,默认没有网络

启动容器时指定网络使用 docker run --net 网络名 容器名字,如果两个容器使用的同一个网络,那么就可以通过容器名(–name xxx)进行网络通信。

这是用默认的,通过ip可以ping通,但是不能通过容器名。
在这里插入图片描述

通过--net mynet创建的容器是可以的通过容器名ping通的,就不用担心IP会变化了。

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/229454
推荐阅读
相关标签
  

闽ICP备14008679号