Docker常用操作和问题

59 阅读1分钟

1. docker网络连接超时

docker pull镜像时,报网络链接超时

解决方法: 配置国内镜像

# 创建或编辑配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.1ms.run",         # 高速镜像源
    "https://hub-mirror.c.163.com",   # 网易云镜像
    "https://mirror.baidubce.com"     # 百度云镜像
  ]
}
EOF

# 重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker

2. docker路径映射

docker run -v 宿主路径:容器路径[:权限] 镜像名
# eg: docker run -v /home/workspace:/home/workspace:rw  # rw读写权限,ro只读权限

不能动态修改容器映射,需要删除重建

docker stop old_container
docker rm old_container
docker run -v 宿主路径:容器路径[:权限]

3. 进入容器

1. exec

docker exec -it <container_id> /bin/bash

优点:

  1. 不影响主进程
  2. 支持交互

2. attach

docker attach <container_id> 

优点:

  1. 进入主进程,实时查看输出

缺点:

  1. 不支持交互
  2. 主进程退出,容器也会退出

4. 查看log

docker logs <container_id> 

5. 拷贝文件

docker cp <container_id>:<path> <host_path> # 容器到宿主机
docker cp <host_path> <container_id>:<path> # 宿主机到容器

6. 宿主机为远程服务器时,图形界面无法显示的问题

  1. 宿主机开放X11权限,允许Docker容器访问宿主机的X11 server
xhost +local:docker
  1. 挂载X11 socket和授权文件、设置环境变量
sudo docker run  \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v $HOME/.Xauthority:/root/.Xauthority:rw \
  -e DISPLAY=$DISPLAY \
  --net=host  \
  ...
  1. 共享宿主机网络栈
sudo docker run  \
  --net=host  \
  ...
  1. 测试是否生效
apt-get install x11-apps
xeyes # 查看是否正常