1. Docker 常见命令
ps
$ docker-ps # List containers,用来列出所有的容器。 $ docker ps -a # -a for all $ docker ps -s # -s for list size
start
和run
比较
- 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...]
代表启动一个已经终止的容器。
- docker-run: Create and run a new container from an image.
rm
和rmi
比较
- 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...]
- docker-rm - Remove one or more containers, Alias for
stop
和kill
比较
- docker-kill - Kill one or more running containers
- docker-stop - Stop one or more running containers
docker stop,支持“优雅退出”。先发送SIGTERM信号,在一段时间之后(10s)再发送SIGKILL信号。Docker内部的应用程序可以接收SIGTERM信号,然后做一些“退出前工作”,比如保存状态、处理当前请求等。
- docker-kill - Kill one or more running containers
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文件中加入相关配置,并将相关镜像重新构建,具体操作如下:
- 编写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"]
```
- 在终端中进入该Dockerfile文件所在的目录,运行命令构建镜像:
```
$ docker build -t my-ssh-image .
```
- 运行容器:
```
$ 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