keywords: Docker, Common Issues Collection

slogan_image

Command

Common Commands
docker run  # Run a command in a **new** container
docker start  # Start one or more stopped containers

Issues

Docker data directory mapping to data driven disk
systemctl stop docker #停止docker服务
mv /var/lib/docker /data/ #将docker数据目录移动到/data目录下
ln -s /data/docker /var/lib/docker #制作软连接映射,将数据盘下的docker目录映射为原docker目录

重新启动docker,并查看docker版本

systemctl start docker #启动docker服务
docker --version #查看docker服务版本
Docker version 1.13.1, build 092cba3

References:
一机玩docker之一:数据盘安装docker
Centos7将Docker 安装到数据盘

Unable to find image latest locally

Error:

[root ~]# docker run -itd --name mysql-dev -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
Unable to find image 'mysql:latest' locally
docker: Error response from daemon: pull access denied for mysql, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.

or

[root ~]# docker pull mariadb:11.8.2
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers\)

Reason:
The domain (docker.io) is polluted when users in China access Docker.

Solution:
Use a host that has ability (for example, a virtual network card that can access overseas servers) for accessing Docker IO domain to download image, then export it as an archive (.tar.gz), then upload to target host.

Local PC (e.g. Windows 11):

docker pull mariadb:latest
docker save -o E:/mariadb.tar.gz mariadb:latest

Server (e.g. Linux):

docker load -i mariadb.tar.gz
修改容器内的配置文件(redis、mysql等)

原文:Docker修改容器内部文件的三种方法
https://blog.csdn.net/km_bandits/article/details/135568339

1、进入容器内部修改
使用下面的命令以命令行的形式可以进入容器的内部对文件进行修改。

docker exec -it 容器ID /bin/bash

不过里面没有vim,需要自行安装,安装代码如下所示。不过不推荐这种形式,因为里边的文件是临时的,容器被删除之后,配置就失效了,需要从新配置。

2、通过docker cp拷贝进行修改
可以通过下面的代码将需要修改的文件拷贝出来,修改完成之后再拷贝回去。这种方式其实和第一种差不多,只是不用安装vim,但是容器被删除之后,修改过的内容也会失效。而且需要重启容器才能生效(好像)

#将容器中的文件拷贝出来
sudo docker cp 容器ID:/etc/mysql/my.cnf /home/tom/
#将容器中的文件拷贝回去
sudo docker cp /home/tom/my.cnf  容器ID:/etc/mysql/

3、使用-v挂载文件夹(推荐)
最后一种方法是在启动的时候使用-v将容器内部的文件夹挂载(映射)到本地的某个路径下,以后以后可以直接在本地修改,不需要进入容器内部.

#冒号前是本地路径(需要绝对路径),冒号后是容器中的路径
$ docker run --name mytomcat -v /home/www/webapps:/usr/local/tomcat/webapps -d tomcat

最后重启容器(必须要重启,才能生效)

docker restart 容器id

战国战争史:济西之战(五国伐齐)
五国伐齐是指公元前284年,燕国将领乐毅统率燕、秦、赵、韩、魏五国联军及被其策反的楚军共同攻打齐国的一场战争。五国在短时间内攻下齐国70余城,直入齐国都城临淄(今山东省淄博市临淄区)。
五国伐齐对战国整体格局影响巨大,此前实力超群的齐国从此一蹶不振,秦、齐两强东西对峙的格局也转变为秦、赵两国的争锋。