Docker 常用命令

安装

wget  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo;
 mv docker-ce.repo /etc/yum.repos.d/ ;
 yum install docker-ce docker-ce-cli containerd.io;
 sudo systemctl start docker

docker login --username=821428991@qq.com registry.cn-hangzhou.aliyuncs.com
password: ******


Docker 镜像加速
[root@host201 docker]# pwd
/etc/docker
[root@host201 docker]# cat  
{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}
sudo systemctl daemon-reload
sudo systemctl restart docker

		 Registry Mirrors:
		  https://reg-mirror.qiniu.com/
		 Live Restore Enabled: false


基础概念

image:只读的模板
容器: 镜像创建的运行实例
仓库: registry 集中存放镜像文件的场所, docker hub

docker
资源控制和资源隔离的技术

资源隔离 (namespace)
namespace fork_argument isloated_content
UTS CLONE_NEWUTS 主机和域名
IPC CLONE_NEWIPC 信号量,消息队列,共享内存
PID CLONE_NEWPID 进程编号
NetWork CLONE_NEWNET 网络设备,网络栈,端口等
Mount Clone_NEWNS 挂载点(文件系统)
USER CLONE_NEWUSER 用户和用户组

资源控制 (Cgroup)
资源限制,优先级分配,资源统计,任务控制

子系统		功能
CPU 
cpuacct (CPU accounting)
devices
freezer
memory
perf_event
net_cls

Docker为什么比VM快

​ 1)共享宿主机的kernel。
​ 2) 少了一层Hypervisor 。 虚拟化的一层

## 命令
docker images
docker search redis
docker pull 镜像名称[:TAG]
	docker pull mysql:5.7
docker system df
docker rmi 镜像名称|镜像ID
docker pull ubuntu
docker run [OPTIONS] 镜像名称|镜像ID [COMMAND] [ARG...]
	-i interactive 交互
	-t  terminal 
	-P 随机端口
	-p 指定端口
	
	docker run -it --name=ubuntu ubuntu /bin/bash
	
docker ps [-qa]
		exit :run 进容器,exit 退出,容器停止
		ctrl + p + q:run 进容器,ctrl + p + q 退出,容器不停止

	docker pull bluedata/centos7

	docker run -it  bluedata/centos7      /bin/bash
	docker run -d 容器名
	
	docker inspect 容器名称|容器ID
	
docker stop 容器名称或容器ID


docker exec -it 容器名称|容器ID [COMMAND]       #进入正在运行的容器并以命令行交互

docker cp CONTAINER:SRC_PATH DEST_PATH|-


docker export 容器ID|容器名称 > 文件名.tar
docker import 文件名.tar 镜像名称:TAG|[用户名/镜像名称:TAG]


docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:TAG

# 本地镜像发布到阿里云


 docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名    
	docker run -it --privileged=true -v /root:/mnt bluedata/centos7 
	docker inspect ece5d5debb4a
	docker exec  -it  ece5d5debb4a /bin/bash

 docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
 不接参数 ro 容器内目录是读写(rw)
 
 
 docker run -it  --privileged=true -v /var/tmp:/tmp --name u1 ubuntu
 docker run -it  --privileged=true --volumes-from u1  --name u2 ubuntu  
 #继承的仅仅是容器数据卷的映射规则,容器 1 和 容器 2 之间并没其他什么关系,容器 1 挂了不会影响到 容器 2 
 
 
 docker volume ls
 docker volume create xxx

wget  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 yum install docker-ce docker-ce-cli containerd.io
 sudo systemctl start docker



# 容器与虚拟机的比较

# 镜像 images   
# 容器 container
# 仓库	repository  :仓库(Repository)是 集中存放镜像 文件的场所。 


docker info
docker --help
docker search redis
docker pull 镜像名字:latest
docker system df

docker rmi -f 镜像ID
docker rmi -f 镜像名1:TAG 镜像名2:TAG
docker rmi -f $(docker images -qa)

# 前台交互式启动
docker run -it redis:6.0.8
# 后台交互式启动
docker run -d redis:6.0.8

docker inspect 容器ID
 
docker ps -a

docker log cid

docker exec -it 容器ID /bin/bash

 
# 启动已停止运行的容器
docker start 容器ID或者容器名
# 重启容器
docker restart 容器ID或者容器名
# 停止容器
docker stop 容器ID或者容器名
# 强制停止容器
docker kill 容器ID或容器名
# 删除已停止的容器
docker rm 容器ID
# 一次性删除多个容器实例
docker rm -rf $(docker ps -a -q)

docker ps -a -q | xargs docker rm


# Export 导出容器的内容留作为一个tar归档文件[对应import命令]
# import 从tar 包中的内容创建一个新的文件系统在导入为镜像[对应export]
docker export 7190073e4ef7 > abcd.tar
cat abcd.tar  | docker import -user/redis_1:2.1  
	#cat 文件名.tar  | docker  import - 镜像用户/镜像名:镜像版本号
	
	

# 镜像
docker commit -m  "Commit message"  -a "author string"   CONTAINER  [REPOSITORY[:TAG]]


docker run -it -v /宿主机目录:/容器内目录
docker run -it --name myu3 --privileged=true -v /tmp/myHostData:/tmp/myDockerData ubuntu /bin/bash 

docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw  镜像名
默认同上案例,默认就是rw
rw= read + write
ro= read only

docker run -p 3307:3306 --name mysql-master \ 
-v /mydata/mysql-master/log:/var/log/mysql \ 
-v /mydata/mysql-master/data:/var/lib/mysql \ 
-v /mydata/mysql-master/conf:/etc/mysql \ 
-e MYSQL_ROOT_PASSWORD=root  \ 
-d mysql:5.7 


# DockerFile
# DockerFile是用来构建Docker镜像的文本文件,是有一条条构建镜像所需的指令和参数构成的脚本。
	From
	MANINTAINER
	Run
	EXPOSE
	WORKDIR
	USER
	ENV
	ADD
	COPY
	VOLUME
	CMD
	ENTRYPOINT 
	

 vi Dokerfile
	]# docker build -t centosjava8:1.5  ./
	Sending build context to Docker daemon   2.56kB
	
# Docker 网络
docker network ls

			```
			Usage:  docker network COMMAND

			Manage networks

			Commands:
			  connect     Connect a container to a network
			  create      Create a network
			  disconnect  Disconnect a container from a network
			  inspect     Display detailed information on one or more networks
			  ls          List networks
			  prune       Remove all unused networks
			  rm          Remove one or more networks

			Run 'docker network COMMAND --help' for more information on a command.
			```
			
bridge模式:使用--network bridge指定,默认使用docker()
host模式:使用 --network host指定
none模式:使用 --network none指定
container模式:使用 --network container:Name或者容器ID指定


# Docker Portainer
# 访问 9000 端口即可
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce


docker run -d -p 9001:9001 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes portainer/agent


# docker-compose

yum install docker-compose.noarch
docker-compose  

服务(service):
一个个应用容器实例,比如订单微服务、库存微服务、mysql容器、nginx容器或者redis容器。

工程(project):
由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。



# 容器之间做关联交互

–link可以通过容器名互相通信,容器间共享环境变量。
–link主要用来解决两个容器通过ip地址连接时容器ip地址会变的问题.
--link   (单向)


# 跨宿主机之间的容器通信

【教程】docker容器间跨宿主机通信-基于overlay
 https://blog.csdn.net/mrliqifeng/article/details/113833523
 
 

Docker registry

 ## 私有
 
 docker pull registry
 
 docker run -di  --name=registry -p 5000:5000 registry
 
 http://192.168.3.49:5000/v2/_catalog
 
 vi /etc/docker/daemon.json
 , "insecure-registries":["192.168.3.49:5000"]
 
 systemctl restart docker
 
 
 docker tag jdk1.8 192.168.3.49:5000/jdk1.8
 
 docker push 192.168.3.49:5000/jdk1.8

Rancher

开源的企业级全栈化容器部署及管理平台

特色

https://www.cnblogs.com/YatHo/p/7851758.html

Rancher 1.X

NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
rancher/server                     Rancher 1.x Server Container                    602                  
rancher/rancher                    A container management platform built for or…   332  

docker pull rancher/server
docker run -d --restart=unless-stopped -p 8089:8080 rancher/server
docker run -d -v <host_vol>:/var/lib/mysql --restart=unless-stopped -p 8089:8080 rancher/server
docker run -d -v /local/Rancher/data:/var/lib/mysql  -p 8089:8080  --name=rancher-server rancher/server

http://192.168.3.49:8089


sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://192.168.3.49:8089/v1/scripts/C93EB3945D0C3B1889EB:1640908800000:lQWYk29Fqz9hvfzKSEwk8rDFzc

Rancher 2.X

docker pull rancher/rancher:v2.5.2-linux-amd64

sudo docker run --privileged -d --restart=unless-stopped -p 80:80 -p 443:443 -v /local/Rancher/data:/var/lib/rancher/ rancher/rancher:v2.5.2-linux-amd64

https://192.168.3.49

influxDB

https://www.cnblogs.com/xx2017/p/15528011.html

docker pull tutum/influxdb
docker run -di -p 8083:8083 -p 8086:8086 --expose 8090 --expose 8099 --name influxDbService tutum/influxdb

8083-web管理工具端口
8086是http API port

http://192.168.3.49:8083

CREATE DATABASE "cAdb"
SHOW DATABASES
CREATE USER "causer" WITH PASSWORD 'causer'
CREATE USER "causer" WITH PASSWORD 'causer' WITH ALL PRIVILEGES
grant write on cAdb to use1


SHOW MEASUREMENTS



cAdvisor

docker pull google/cadvisor

docker run \
 --privileged=true \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8080:8080 \
  --detach=true \
  --link influxDbService  \
  --name=cadvisor \
  google/cadvisor:latest \
  -storage_driver=influxdb \
  -storage_driver_db=cAdb \
  -storage_driver_host=influxDbService:8086 --help

grafana

https://www.cnblogs.com/Detector/p/10104254.html

docker run -d \
  -p 3000:3000 \
  -e INFLUXDB_HOST=localhost \
  -e INFLUXDB_PORT=8086 \
  -e INFLUXDB_NAME=cAdb \
  -e INFLUXDB_USER=causer -e INFLUXDB_PASS=causer \
  --link influxDbService \
  --name grafana \
grafana/grafana

http://192.168.3.49:3000/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yolo2016

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值