Index Tags About

Docker 相关配置

1. Docker 常见命令

  • ps

    $ docker-ps    # List containers,用来列出所有的容器。
    $ docker ps -a # -a for all
    $ docker ps -s # -s for list size
    
  • startrun 比较
    • docker-run: Create and run a new container from an image.
      在一个新的容器中运行一个进程。 docker run 启动一个拥有自己文件系统,网络和独立进程树的进程。
      这个镜像会启动默认的一些东西,但是暴露网络,启动进程等控制权限最终都会暴露给用户。因此这个命令的选项相对别的命令会更多一些。
      如果本地没有终端的话,该命令甚至会直接拉取这个镜像。
      • docker run IMAGE [COMMAND] [ARG...]
        代表创建并启动一个新容器。常用的命令有 docker run -it ,其中的 -i 代表以交互模式打开, -t 代表分配一个伪终端。
    • docker-start: Start one or more stopped containers, Alias for docker container start.
      • docker start [OPTIONS] CONTAINER [CONTAINER...] 代表启动一个已经终止的容器。
  • rmrmi 比较
    • docker-rm - Remove one or more containers, Alias for docker container rm.
      • docker rm [OPTIONS] CONTAINER [CONTAINER...]
    • docker-rmi - Remove one or more images, Alias for docker image rm.
      • docker rmi [OPTIONS] IMAGE [IMAGE...]
  • stopkill 比较
    • docker-kill - Kill one or more running containers
    • docker-stop - Stop one or more running containers
      docker stop,支持“优雅退出”。先发送SIGTERM信号,在一段时间之后(10s)再发送SIGKILL信号。Docker内部的应用程序可以接收SIGTERM信号,然后做一些“退出前工作”,比如保存状态、处理当前请求等。

2. 配置镜像

安装好 Docker 后,其 registry server 是默认指向 https://hub.docker.com 的。在国内该hub源访问速度异常慢,尤其是大一点的镜像经常出现timeout。

我们可以通过切换至国内镜像仓库来解决这一问题

1.修改配置文件 /etc/docker/daemon.json:

sudo vim /etc/docker/daemon.json

2.增加或修改以下配置内容:

{
"registry-mirrors": [
"https://dockerproxy.com",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://ccr.ccs.tencentyun.com"
]
}

3.重启docker,让配置生效

systemctl restart docker

4.检查配置是否生效

docker info

输出结果中显示 Registry Mirrors 为配置文件配置内容,说明配置成功

提供商 公共镜像地址
网易云 http://hub-mirror.c.163.com
百度云 http://mirror.baidubce.com
腾讯云 http://ccr.ccs.tencentyun.com
Docker Proxy http://dockerproxy.com

docker pull dockerproxy.com/library/nginx:latest
docker pull hub-mirror.c.163.com/library/nginx:latest
docker pull mirror.baidubce.com/library/nginx:latest
docker pull ccr.ccs.tencentyun.com/library/nginx:latest

3. 配置 docker file

首先需要说明的是,大部分Docker容器用途是为了运行无头的服务,因此不建议开启SSH服务。如果确实需要开启SSH服务,需要在Dockerfile文件中加入相关配置,并将相关镜像重新构建,具体操作如下:

  1. 编写Dockerfile文件,如下所示:

```

FROM ubuntu:latest

RUN apt-get

update && apt-get install -y ssh

RUN mkdir /var/run/sshd

RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshdconfig

RUN echo 'root:password' | chpasswd

CMD ["/usr/sbin/sshd", "-D"]

```

  1. 在终端中进入该Dockerfile文件所在的目录,运行命令构建镜像:

```

$ docker build -t my-ssh-image .

```

  1. 运行容器:

```
$ docker run -d -P –name my-ssh-container my-ssh-image
```

现在,SSH服务已经在Docker容器中启动并运行。但是,这个容器并没有自动启动。如果需要让它在开机时自动启动,可以将其加入Docker宿主机的Systemd服务中。具体步骤如下:
./bench.sh –prompt "who are you" –maxtokens "200" –repetitions "5" –logfile 1.log –device cuda –modelsdir /data-nvme/dignlp/models/llms/CodeLlama-13b-Instruct-hf

天玄而地黄。