命令

  # build并tag
  docker build -t imagename .

  # 将build好的image上传到docker hub
  docker login -u $username
  docker tag $imagename $username/$imagename
  docker push $username/$imagename

  # 查看运行的container
  docker ps
  
  # 查看所有的container
  docker ps -a
  
  # 查看container的配置情况
  docker inspect container-name

  # 直接获取目标容器的启动参数

  docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike target-container-name

  # 可将上述命令设置别名
  alias drunlike="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike"

  # 查看容器的日志
  docker logs container-name

  # 显示所有的镜像
  docker image ls
  
  # 删除容器
  docker rm container-name

  # 删除镜像
  docker rmi imagename

  # 退出容器后自动删除
  docker run --rm  $imagename

  # 为用户添加docker用户组权限
  sudo usermod -aG docker your-username
  newgrp docker 

Dockerfile配置

  • 代理设置

    • 让镜像构建过程也走代理:
      ENV http_proxy=http://172.17.0.1:7890
      ENV https_proxy=http://172.17.0.1:7890
      
  • dockerignore 新建文件.dockerignore,写入需要忽略的文件,

    在Dockerfile中添加一行 COPY .dockerignore .

docker-compose.yml配置

  • 代理设置
    • 让容器走代理
      environment:
        - http_proxy=http://172.17.0.1:7890
        - https_proxy=http://172.17.0.1:7890
      
  • volume挂载 例: 注:此处所挂载的文件位置与docker-compose.yml文件同级
      volumes:
        - "./config.json:/app/config.json"
        - "./save.json:/app/save.json"
        - "./warning.json:/app/warning.json"
    
  • resart(重启策略)
    重启策略重启条件适用场景
    restart: always容器退出时,无论正常或异常始终运行的容器,例如数据库、消息队列
    restart: on-failure容器以非零退出代码退出时处理业务逻辑的容器,例如 Web 服务器、API 服务
    unless-stopped容器在停止之前会一直运行

docker-compose up的四种写法

  1. 传统写法:cd到compose.yml所在文件夹位置,再docker-compose up
  2. 使用绝对路径: docker-compose -f /home/user/project/docker-compose.yml up
  3. 使用别名: alias project-up="docker-compose -f /home/user/project/docker-compose.yml up (别名还可以用中文名)

在群晖上使用docker

#创建群组并分配用户:
sudo synogroup --add docker
sudo synogroup --memberadd docker <username1> <username2> ...
sudo synogroup --get docker
#更改docker权限:
sudo chgrp docker /var/run/docker.sock
  • 报错: /usr/local/bin/docker-compose: line 1: Not: command not found
    • 我之前在群晖上使用docker-compose都很正常,但某天突然报以上错误。一开始一头雾水,但尝试去找这个文件,发现并不存在。那问题就转变成如果在群晖上安装docker-compose了,搜到原来,群晖也能用 Docker Compose! - 初之音这篇,摘抄命令如下
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)
sh -c "curl -L https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > $DOCKER_CONFIG/cli-plugins/docker-compose"
# or 
sh -c "curl -L https://mirror.ghproxy.com/https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > $DOCKER_CONFIG/cli-plugins/docker-compose"
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

容器逃逸

原理

搭建私有docker仓库

时间线

2023年5月18日

Docker官方仓库域名被墙,国内已无法正常访问。

2024年6月8日

这几天国内不少镜像站被关停了,唉

2024年7月12日

2024年8月11日

参考链接