docker基本概念
- docker是一种容器,用于实现虚拟化,且容器之间不会相互有接口(沙箱机制),性能开销低
- docker的三个概念
- 镜像(Image): 相当于一个root文件系统
- 容器(Container): 镜像是静态的,容器是镜像运行时的实体(类似类与实例).容器可以被创建,启动,停止,删除,暂停.
- 仓库(Repository): 相当于代码控制中心,用来保存镜像
docker的安装
可以参考这篇在deepin安装docker的文章
docker拉取centos
可以参考这篇对于centos7拉取的文章
centos镜像设置免密登录
可参考这篇文章
docker常用命令
BASH
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
docker run --name mytomcat -p 8082:8080 -v $PWD/mytest:/usr/local/tomcat/webapps/ROOT/ -it /bin/bash -d tomcat:9.0.36
docker ps
docker ps -a
docker logs mytomcat
docker stop mytomcat
docker update --restart=always mytomcat
docker inspect mytomcat
docker exec -it mytomcat /bin/bash
docker rm -f 容器名
docker export 容器名 > test.tar
docker import 容器名.tar 新镜像名:版本
docker cp /www/runoob 96f7f14e99ab:/www/
docker cp /www/runoob 96f7f14e99ab:/www
docker cp 96f7f14e99ab:/www /tmp/
docker pause mytomcat
docker unpause mytomcat
docker commit -a "easul" -m "new file" a404c6c174a2 easul/tomcat:v1
docker save -o mytomcat.tar easul/tomcat:v3
docker load -i mytomcat.tar
docker images
docker search tomcat
docker pull tomcat:9.0.36
docker rmi -f 镜像名
|
参考菜鸟教程
基础实例
常用命令
docker容器修改端口信息
BASH
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
| docker stop container_id
sudo systemctl stop docker sudo systemctl stop docker.socket
sudo vim /var/lib/docker/containers/[containerId]/hostconfig.json
"PortBindings":{ "22/tcp":[{ "HostIp":"", "HostPort":"5022" }] }
sudo vim /var/lib/docker/containers/[containerId]/config.v2.json
"AttachStderr": false, "ExposedPorts":{ "22/tcp":{} }
"Ports": { "22/tcp": [{ "HostIp": "0.0.0.0", "HostPort": "5022" }] }
sudo systemctl start docker docker ps -a
|
参考
docker compose相关
配置文件解释
文件需要命名为docker-compose.yaml
YAML
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
| version: '在单引号中指定该 docker-compose.yaml 的版本'
services: 指定相关容器信息 etcd: 指定 etcd 这个容器的信息。这个名称可以自己定义 container_name: 指定在 docker 中显示的容器名 image: 指定拉取的容器镜像名称 environment: 指定运行时的环境变量 - 环境变量1=值1 - 环境变量2=值2 volumes: 指定挂载的卷的信息 - docker外部挂载卷的位置:docker内部挂载卷的位置 ports: 指定容器内外映射的端口 - "容器外的端口:容器内的端口" command: 容器运行时的启动命令 healthcheck: 用于检查容器是否健康 test: 指定了健康检查的命令和参数。 interval: 指定了健康检查的间隔时间 timeout: 指定了健康检查的超时时间 retries: 健康检查失败后重试的次数 depends_on: 指定依赖的容器名 - "etcd" networks: 用于定义网络的配置 default: 用于定义默认的网络配置信息 name: 网络的名称
|
样例配置
YAML
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 48 49
| version: '3.5'
services: etcd: container_name: milvus-etcd image: quay.io/coreos/etcd:v3.5.5 environment: - ETCD_AUTO_COMPACTION_MODE=revision - ETCD_AUTO_COMPACTION_RETENTION=1000 - ETCD_QUOTA_BACKEND_BYTES=4294967296 - ETCD_SNAPSHOT_COUNT=50000 volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
minio: container_name: milvus-minio image: minio/minio:RELEASE.2023-03-20T20-16-18Z environment: MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data command: minio server /minio_data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3
standalone: container_name: milvus-standalone image: milvusdb/milvus:v2.2.10 command: ["milvus", "run", "standalone"] environment: ETCD_ENDPOINTS: etcd:2379 MINIO_ADDRESS: minio:9000 volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus ports: - "19530:19530" - "9091:9091" depends_on: - "etcd" - "minio"
networks: default: name: milvus
|
v1.5.2