docker問題小結

2021-10-22 22:38:23 字數 2045 閱讀 2160

容器使用docker run -v hostvolume:dockervolume,採用這種方式執行如果出現permission denied是因為宿主機的當前執行使用者和docker容器裡面的執行使用者不一致導致訪問許可權問題。

解決辦法:

1、使docker裡面的執行使用者和宿主一樣,執行命令 docker run -u root,docker u引數可以指點以哪個使用者執行。

2、在宿主機裡面建立和容器預設使用者一樣的,然後把要對映的檔案目錄使用chown -r user:group方式修改為docker例的使用者。

注意:這裡需要檢視docker映象裡的製作檔案dockerfile。比如emq容器製作就如下新增使用者

run adduser -d -u 1000 emqtt

進入容器檢視語言環境

#  docker exec -it  /bin/bash

# locale  檢視當前系統字符集

# locale  -a 檢視系統支援的字符集

從輸出可以看到,系統使用的是posix字符集,posix字符集是不支援中文的,而utf-8是支援中文的 只要把系統中的環境 lang 改為」utf-8」格式即可解決問題。

臨時設定(重啟容器後失效)

#  vi /etc/profile 進入檔案加入變數

# export  lang="en_us.utf8"

# source /etc/profile  使設定的檔案生效

手動touch乙個帶中文的檔案,顯示正常。

永久設定需在dockerfile中設定環境字符集環境變數

from 基礎映象id

env lang="en_us.utf8"

在docker容器裡,我們要檢視作業系統時,正確的方法是:

cat /etc/issue
檢視已啟動的服務

systemctl list-units --type=service
檢視是否設定開機啟動

systemctl list-unit-files | grep enable
設定開機啟動

systemctl enable docker.service
關閉開機啟動

systemctl disable docker.service
啟動時加--restart=always

docker run -tid --name isaler_v0.0.11 -p 8081:8080 --restart=always -v /alidata/idocker/run/projectimages/isaler/v0.0.11/log:/usr/local/tomcat/logs isaler_v0.0.11

flag description

no 不自動重啟容器. (預設value)

on-failure 容器發生error而退出(容器退出狀態不為0)重啟容器

unless-stopped 在容器已經stop掉或docker stoped/restarted的時候才重啟容器

always 在容器已經stop掉或docker stoped/restarted的時候才重啟容器

如果已經過執行的專案

如果已經啟動的專案,則使用update更新:

docker update --restart=always isaler_v0.0.11

docker學習小結

ctrl p q 退出容器,但是容器並不關閉 判斷當前是否在容器中,通過檢視 目錄下,是否當前執行在dock中 進入容器 如下兩種方法都可以,差別是attach退出後,會導致容器退出,而exec不會 docker exec it 98b24 bin bash docker attach 98b24 ...

Docker入門系列5 常見問題小結

再次執行容器 docker start container id然後 docker attach container id就可以繼續下命令了。name docker run的時候可通過 p選項指定要對映的埠到host hostport containerport 如 docker run i t p...

Docker教程以及小結

一.docker映象建立 容器 docker images 檢視映象 docker run t i ubuntu bin bash 執行了基礎映象 使用 docker ps a 檢視本機已有的容器.docker ps 檢視已經啟動的容器 docker exec ti face ubuntu bin ...