記事ディレクトリ
-
-
- / var / lib / dockerディレクトリの説明
- [Dockerボリューム-ディレクトリのマウントとファイル共有](https://kebingzao.com/2019/02/25/docker-volume/#dockerfile-volume-%E7%9A%84%E6%9D%83%E9% 99 %90%E5%92%8C%E8%AE%B8%E5%8F%AF)
- Docker-composeポートとDockerfileEXPOSEの違い
- Dockerでの「 'security.ubuntu.com」エラーメッセージの解決に一時的な失敗
- 各コンテナのIPアドレスを表示する
- Dockerコンテナのログサイズを表示する
- Dockerコンテナのログをクリーンアップします
- docker-composeによって開始された実行中のサービスの構成を変更する方法
- Linuxインストールdocker-compose
- 実行中のDockerコンテナーのスタートアップ構成パラメーターを変更します
- Dockerコンテナのマウントパスを変更する
- クリーンドッカー
- dockerのデフォルトの保存場所を変更します
- Dockermysqlのエクスポートおよびインポートデータ
- [emerg] getpwnam( "www")が/etc/nginx/nginx.confで失敗しました
- その他のコマンド
- docker:デーモンからのエラー応答:ociランタイムエラー:container_linux.go:265:コンテナプロセスを開始すると、「exec:\ "prom / pushgateway \":stat prom / pushgateway:no such fileordirectory」が発生しました。
- dockerps完全出力
- docker:デーモンからのエラー応答:競合するオプション:ポートの公開とコンテナータイプのネットワークモード。
- docker:デーモンからのエラー応答:ドライバーがエンドポイントnginxでの外部接続のプログラミングに失敗しました(d639abcca455cfb2ae23110a56b08732522da0cb64146f7141ca99a8c54704b7):ユーザーランドプロキシの起動中にエラーが発生しました:listen tcp 0.0.0.0:80:listen:アドレスは既に使用されています。
- unix:///var/run/docker.sockのDockerデーモンに接続できません。dockerデーモンは実行されていますか?
- コンテナを実行した後、再起動状態になっています
- Dockerサービスを開始できませんでした
- iptables no chain / target / match by that name
- Dockerコンテナにrootします(パラメータ-u rootを追加します)
-
/ var / lib / dockerディレクトリの説明
* /var/lib/docker/devicemapper/devicemapper/data
* 用来存储相关的存储池数据
* /var/lib/docker/devicemapper/devicemapper/metadata
* 用来存储相关的元数据。
* /var/lib/docker/devicemapper/metadata/
* 用来存储 device_id、大小、以及传输_id、初始化信息
* /var/lib/docker/devicemapper/mnt
* 用来存储挂载信息
* /var/lib/docker/container/
* 用来存储容器信息
* /var/lib/docker/graph/
* 用来存储镜像中间件及本身详细信息和大小 、以及依赖信息
* /var/lib/docker/repositores-devicemapper
* 用来存储镜像基本信息
* /var/lib/docker/tmp
* docker临时目录
* /var/lib/docker/trust
* docker信任目录
* /var/lib/docker/volumes
* docker卷目录
Dockerボリューム-ディレクトリのマウントとファイル共有
Docker-composeポートとDockerfileEXPOSEの違い
# ports:暴露容器端口到主机任意端口或指定端口,用法:
# docker-compose.yml
ports:
- "80:80"
- "91:81"
# expose:将当前容器的端口暴露给同一个networks 的其他容器,用法:
# docker-compose.yml
expose:
- '3000'
- '9000'
# Dockerfile
EXPOSE "3000"
Dockerでの「 'security.ubuntu.com」エラーメッセージの解決に一時的な失敗
解决方案:
vim /etc/docker/daemon.json
{
"dns": ["8.8.8.8", "114.114.114.114"]
}
重启docker
systemctl restart docker
各コンテナのIPアドレスを表示する
docker inspect -f '{
{.Name}} - {
{range .NetworkSettings.Networks}}{
{.IPAddress}}{
{end}}' $(docker ps -aq)
Dockerコンテナのログサイズを表示する
ls -lh $(find /var/lib/docker/containers/ -name *-json.log)
Dockerコンテナのログをクリーンアップします
#!/bin/sh
echo "==================== start clean docker containers logs =========================="
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
echo "==================== end clean docker containers logs =========================="
docker-composeによって開始された実行中のサービスの構成を変更する方法
docker-compose up -d
Linuxインストールdocker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
実行中のDockerコンテナーのスタートアップ構成パラメーターを変更します
コンテナを作成したときにパラメータ--restart = alwaysを追加するのを忘れました。Dockerを再起動すると、コンテナは自動的に起動しません。
方法1:Dockerコマンドの変更
docker container update --restart=always 容器名字
方法2:構成ファイルを直接変更する
-
最初にコンテナを停止します。そうしないと、構成ファイルを変更できません。
-
構成ファイルのパスは次のとおりです。
/var/lib/docker/containers/容器ID
このディレクトリでファイルを見つけ、ファイルで
hostconfig.json
キーワードRestartPolicyを見つけます変更前の構成:
“RestartPolicy”:{“Name”:“no”,“MaximumRetryCount”:0}
変更後の構成:
“RestartPolicy”:{“Name”:“always”,“MaximumRetryCount”:0}
-
最後にコンテナを起動します。
Dockerコンテナのマウントパスを変更する
1.Dockerサービスを停止します
systemctl stop docker.service(关键,修改之前必须停止docker服务)
2、vim /var/lib/docker/containers/container-ID/hostconfig.json
「バインド」:["/ home / website:/ usr / share / nginx / website"]
2、vim /var/lib/docker/containers/container-ID/config.v2.json
- 構成ファイル内のディレクトリの場所を変更し、保存して終了します
- 一般的な形式は次のとおりです。
"MountPoints":{ "コンテナ内のファイルパス":{"ソース": "ホストファイルパス"、 "宛先": "コンテナ内のファイルパス"、 "RW":true、 "名前": ""、 "ドライバ" : ""、 "Type": "bind"、 "Relabel": "rw"、 "Propagation": "rprivate"、 "Spec":{"Type": "bind"、 "Source": "Host file Path、 "Target": "コンテナ内のファイルパス"}} }
- 例:
-v /home/website:/usr/share/nginx/website
“ mountPoints”:{ “ / usr / share / nginx / website”:{“ Source”: "/ home / website"、“ Destination”: "/ usr / share / nginx / website"、“ RW”:true、“名前」: ""、 "ドライバー": ""、 "タイプ": "バインド"、 "再ラベル付け": "rw"、 "伝播": "rprivate"、 "仕様":{"タイプ": "バインド"、 「ソース」: "/ home / website"、 "ターゲット": "/ usr / share / nginx / website"}} }
3.Dockerサービスを開始します
systemctl start docker.service
4.Dockerコンテナを起動します
docker start <container-name/ID>
取得元:https://blog.csdn.net/zedelei/article/details/90208183
クリーンドッカー
手動クリーニング
不要なコンテナをすべて削除する
docker ps -a | awk '{ print $1}' | wc -l 统计共有多少容器
docker rm $(docker ps -a | awk '{ print $1}' | tail -n -num) //删除倒数num个容器
如果无用的比较多,启动所有有用的,再删除,运行中的容器是不能被移除的
1、删除所有悬空镜像,不删除未使用镜像:
docker rmi $(docker images -f "dangling=true" -q)
2、删除所有未使用镜像和悬空镜像
docker rmi $(docker images -q)
3、清理卷
如果卷占用空间过高,可以清除一些不使用的卷,包括一些未被任何容器调用的卷(-v 详细信息中若显示 LINKS = 0,则是未被调用):
删除所有未被容器引用的卷:
docker volume rm $(docker volume ls -qf dangling=true)
4、容器清理
如果发现是容器占用过高的空间,可以手动删除一些:
删除所有已退出的容器:
docker rm -v $(docker ps -aq -f status=exited)
删除所有状态为dead的容器
docker rm -v $(docker ps -aq -f status=dead)
自動クリーニング
docker system prune
docker system prune -a : 一并清除所有未被使用的镜像和悬空镜像。
docker system prune -f : 用以强制删除,不提示信息。
docker system prune
スペースは自動的にクリーンアップできます。
このコマンドでクリーンアップされるオブジェクトは次のとおりです。
- 停止したすべてのコンテナ
- 少なくとも1つのコンテナで使用されていないすべてのネットワーク(どのコンテナにも関連付けられていないネットワーク)
- すべてのぶら下がっている画像(どのコンテナでも使用されていないボリューム)
- すべてのぶら下がりビルドキャッシュ(すべてのぶら下がりイメージ)
使用済みイメージ:コンテナー(停止を含む)に関連付けられているすべてのイメージ、つまり、docker ps-aによって表示されるすべてのコンテナーに対応するイメージを指します。参照
されていない
イメージ:コンテナーで割り当てまたは使用されていないイメージ。ぶら下がっているイメージ:タグが構成されていない(つまり、参照できない)イメージ。これは通常、イメージのコンパイルプロセス中にタグを構成するために-tパラメーターを指定しないことが原因で発生します。
docker image prune:删除悬空的镜像。
docker container prune:删除无用的容器。
- 默认情况下docker container prune命令会清理掉所有处于stopped状态的容器
- 如果不想那么残忍统统都删掉,也可以使用--filter标志来筛选出不希望被清理掉的容器。例子:清除掉所有停掉的容器,但24内创建的除外:
- $ docker container prune --filter "until=24h"
docker volume prune:删除无用的卷。
docker network prune:删除无用的网络
dockerのデフォルトの保存場所を変更します
取得元:https://blog.csdn.net/qq_35119422/article/details/85869361
Dockerのすべての画像と関連情報の保存場所は次のとおりです。/var/lib/docker
デフォルトのDockerストレージパスを表示する
docker info |grep ‘Docker Root Dir’
WARNING: No swap limit support
Docker Root Dir: /var/lib/docker
すべてのDockerコンテナを停止します
sudo docker stop $(docker ps -a | awk ‘{
print $1}’ | tail -n +2)
Dockerサービスを停止します
sudo service docker stop
dockerディレクトリをパッケージ化します
cd /var/lib
sudo tar -czvf /usr/docker.tar.gz docker/
cd /usr/
sudo tar -xzvf docker.tar.gz
dockerのデフォルトの保存場所を変更します
sudo vim /etc/docker/daemon.json
{
“graph”: “/home/server/docker”
}
Dockerサービスを開始します
sudo service docker start
すべてのDockerコンテナを起動します
sudo docker start $(docker ps -a | awk ‘{
print $1}’ | tail -n +2)
変更されたDockerストレージパスを表示する
docker info |grep ‘Docker Root Dir’
WARNING: No swap limit support
Docker Root Dir: /usr/docker
Dockermysqlのエクスポートおよびインポートデータ
// 导出数据和表结构:
# docker exec -i mysql mysqldump -uroot -p12345678 db > db.sql
// 导出表结构:
# docker exec -i mysql mysqldump -uroot -p12345678 -d db > db.sql
// 导入
# scp db.sql root@<ip地址>:/tmp/db.sql
# docker cp db.sql mysql_container:/opt/ms.sql
# docker exec -it mysql_container bash
> mysql -uroot -p12345678
> create database db;
> use db;
> source <路径>/db.sql;
[emerg] getpwnam(“ www”)が/etc/nginx/nginx.confで失敗しました
root@xxx:/home/xxx# docker logs nginx
nginx: [emerg] getpwnam("www") failed in /etc/nginx/nginx.conf:6
本地解决方法:
useradd www
groupadd www
docker 解决方式:
その他のコマンド
取得元:https://blog.csdn.net/qq_35119422/article/details/85869361
すべてのDockerコンテナを停止します
sudo docker stop $(docker ps -a | awk ‘{
print $1}’ | tail -n +2)
Dockerサービスを停止します
sudo service docker stop
mysqlパスを変更します
cd ~
sudo cp -r mysql/ /home/server/
バックアップコンテナ構成ファイル
cd /var/lib/docker/containers/de9c6501cdd3
cp hostconfig.json hostconfig.json.bak
cp config.v2.json config.v2.json.bak
hostconfigのコロンの前の構成パスを変更します
vi hostconfig.json
“Binds”: ["/home/server/mysql/conf/my.cnf:/etc/mysql/my.cnf", “/home/server/mysql/logs:/logs”, “/home/server/mysql/data:/mysql_data”],
configのソース構成パスを変更します
vi config.v2.json
Dockerサービスを開始します
sudo service docker start
すべてのDockerコンテナを起動します
sudo docker start $(docker ps -a | awk ‘{
print $1}’ | tail -n +2)
docker:デーモンからのエラー応答:ociランタイムエラー:container_linux.go:265:コンテナプロセスを開始すると、「exec:“ prom / pushgateway”:stat prom / pushgateway:no such file ordirectory」が発生しました。
XXXX @のdebian:〜/ docker_package $ sudoをドッキングウィンドウ-d --name pushgateway -p 9091実行:9091 --network = prometheus_net test_pushgatewayプロム/ pushgateway
xxxxのための[須藤]パスワード:
a6e9041545eb1208af80de45a60b1b8b627d0c51036d20dd781c968b3a7b5566
ドッキングウィンドウ:デーモンからのエラー応答:OCIランタイムエラー: container_linux.go:265:コンテナープロセスを開始すると、「exec:“ prom / pushgateway”:stat prom / pushgateway:no such file ordirectory」が発生しました。
解決策:
commadメソッドが間違っているため、
プロセスが終了するのはなぜですか?
service nginx startなどのコマンドを実行してバックグラウンドサービスプログラムを開始すると、Dockerは引き続き仮想マシンと見なされます。Dockerはプロセスを開始するため、いわゆるバックグラウンドサービスをフォアグラウンドに配置する必要があります。たとえば、nginx -g'daemon off; 'を使用して、アプリケーションをフォアグラウンドで直接起動する必要があります。
COMMAND列が/ bin / bashであることがわかった場合でも、Dockerが仮想マシンとして使用されていることを意味します。COMMANDは、対話型操作インターフェースではなくアプリケーションである必要があり、コンテナーは対話型操作インターフェースを必要としません。さらに、/ bin / bashを使用してインタラクティブなインターフェイスを使用する場合は、入力とターミナルも提供する必要があるため、docker run -it ubuntu / bin / bashなどの-itオプションを追加する必要があります。
では、どのコンマ起動方法が使用されているかを確認する方法は?
ドッキングウィンドウが表示Cmdを<コンテナ名>を調べ
たり
ドッキングウィンドウのps -a
grepの<あなたがCOMMANDのコマンドの一部を見る> |コンテナの検索を入力/
または
コンテナのps -feを入力して、私たちは成功しなかった、にはpsコマンドはありませんがコンテナ
問題を解決します:
完全な出力を表示します:docker ps --no-trunc
dockerps完全出力
关于 command 显示不全问题
显示完整输出
docker ps --no-trunc
docker:デーモンからのエラー応答:競合するオプション:ポートの公開とコンテナータイプのネットワークモード。
'docker run--help'を参照してください。
xxxx @ debian:〜$ sudo docker run -d --name
= mysql
-p 3306:3306
--network = container:nginx
-v / home / xxxx / mysql / data:/ var / lib / mysql
-e MYSQL_ROOT_PASSWORD = xxxxx
-e TZ = Asia / Shanghai
test_mysql /docker-entrypoint-initdb.d
docker
:デーモンからのエラー応答:競合するオプション:ポート公開とコンテナタイプのネットワークモード。
「dockerrun--help」を参照してください。
競合するオプション:ポート公開とコンテナタイプネットワークモード
解決策:
delete -p 3306:3306
docker:デーモンからのエラー応答:ドライバーがエンドポイントnginxでの外部接続のプログラミングに失敗しました(d639abcca455cfb2ae23110a56b08732522da0cb64146f7141ca99a8c54704b7):ユーザーランドプロキシの起動中にエラーが発生しました:listen tcp 0.0.0.0:80:listen:アドレスは既に使用されています。
解决:
netstat -tlnp
查看占用的端口
unix:///var/run/docker.sockのDockerデーモンに接続できません。dockerデーモンは実行されていますか?
解决方案:
查看/etc/docker/daemon.json 这个文件中的 用 {} 括起来
コンテナを実行した後、再起動状態になっています
查看日志
docker logs <容器名称>
可能存在以下问题:
1. 缺少执行文件
2. 执行文件中语法错误
Dockerサービスを開始できませんでした
iptablesが失敗しました:iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 80 -jDNAT…
解決:
cd /etc/systemd/system/multi-user.target.wants
vim docker.service
去掉 After中 的firewalld.service
Dockerを再起動します:
systemctl daemon-loaded
systemctl start docker
デーモンの起動に失敗しました:ネットワークコントローラーの初期化中にエラーが発生しました:デフォルトの「ブリッジ」ネットワークの作成中にエラーが発生しました:使用可能な重複していないネットワークが見つかりませんでした
解決:
vim /etc/docker/daemon.json
{
"ipv6": false
}
iptables no chain / target / match by that name
docker-compose up -d
その後のエラー iptables no chain/target/match by that name
iptables-save|grep docker
Docker構成が見つからないことを確認してください。
したがって、サービスDockerを再起動するとsystemctl restart docker
、構成情報iptablesが自動的に生成されます。
再度実行する
docker-compose up -d
問題が解決しました!!!
Dockerコンテナにrootします(パラメータ-u rootを追加します)
docker exec -it -u root <容器名> bash