Docker安装

docker安装:官网安装参考

docker-compose安装:官网安装compsoe参考

我的仓库

阿里云docker容器仓库

我的地址

  • 使用参考:
version: "3.5"
services:
    name:
    	# 使用镜像名称
        image: python:3.9
        # 容器名称,不能重复
        container_name: name
        # 自动重启
        restart: always
        # 容器内环境变量
        environment:
            - TZ=Asia/Shanghai
        # 挂载目录
        volumes:
            - .:/root/
        # 容器内工作目录
        working_dir: /root/
        # 容器内执行指令
        command: sleep 24h
# 自定义网段,避免自动分配导致网段冲突
networks:
  default:
    name: linyq_default
    ipam:
      driver: default
      config:
        - subnet: 10.103.0.0/16

基操

一. docker常用命令

# 以非root用户执行docker
sudo chown linyq:linyq /var/run/docker.sock

# 删除所有容器
docker rm $(docker ps -aq) 

# 构建镜像(注意最后的点)
docker build -f Dockerfile -t mycentos:0.1 .

# docker打包容器
docker commit 容器id 镜像名:镜像版本
docker save 镜像名:镜像版本 -o xxx.tar
docker load -i xxx.tar

# 运行容器
docker run -dit mycentos:0.1 /bin/bash

# 进入容器
docker exec -it xxxxxx /bin/bash

# 从容器内拷贝文件到linux主机上
docker cp eaac94ef6926:/home/test.txt /root/test.txt

# 从宿主机拷贝文件到容器内
docker cp test.txt eaac94ef6926:/home/test.txt

# 查看磁盘剩余空间
df -h
# 查看当前目录总大小
du -sh

二. docker-compose

常用命令

docker-compose ps
docker-compose down
docker-compose up -d
docker-compose ps
docker-compose exec tensor bash
docker-compose logs -f tensor

docker-compose网络冲突问题

> 参考: https://www.jianshu.com/p/b039fccf37c9

docker网络配置

常用命令 参考

  • 查看路由表
root@linyq:~/demo/test# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    100    0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-fb0ff4806d21
172.20.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-de35b4c2b27a
  • 查看docker网络
root@linyq:~/demo/test# docker network ls
NETWORK ID     NAME                        DRIVER    SCOPE
f7b87d15b81c   bridge                      bridge    local
18f07eaebd76   code_default                bridge    local
a22c82ca3b35   conda_default               bridge    local
2bc6c6b54c8a   crow-c_default              bridge    local
f7f845b39a5a   host                        host      local
  • 查看docker网络详情
root@linyq:~/demo/test# docker network inspect 2bc6c6b54c8a
[
    {
        "Name": "crow-c_default",
        "Id": "2bc6c6b54c8a2c523437b68df47ba4676a9a35081cf6ee281f602f41fff79d09",
        "Created": "2022-02-16T16:14:46.520328155+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "192.168.16.0/20",
                    "Gateway": "192.168.16.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {
            "com.docker.compose.network": "default",
            "com.docker.compose.project": "crow-c",
            "com.docker.compose.version": "1.29.2"
        }
    }
]
  • 删除所有未使用的网络. 示例:
	docker network prune 
	ps: -f 强制删除,不提供任何确认情况下删除.

容器仓库

  1. 登录阿里云Docker Registry

    docker login --username=高能的逗逼 registry.cn-hangzhou.aliyuncs.com 用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

您可以在访问凭证页面修改凭证密码。

  1. 从Registry中拉取镜像

    docker pull registry.cn-hangzhou.aliyuncs.com/linyqh/my-docker:[镜像版本号]

  2. 将镜像推送到Registry

    docker login --username=高能的逗逼 registry.cn-hangzhou.aliyuncs.com
    docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/linyqh/my-docker:[镜像版本号]
    docker push registry.cn-hangzhou.aliyuncs.com/linyqh/my-docker:[镜像版本号]
    请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。

  3. 选择合适的镜像仓库地址 从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。
    如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录。

  4. 示例 使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。

  docker images
 
  docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
  
  使用 "docker push" 命令将该镜像推送至远程。

  docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816