Docker容器命令速查表

這是 Docker 的快速參考備忘單。 你可以在這里找到最常見的 Docker 命令。

安裝
curl -sSL https://get.docker.com/ | sh
sudo chmod 777 /var/run/docker.sock

在后臺創建和運行容器

$ docker run -d -p 80:80 docker/getting-started

  • -d - 以分離(后臺)模式運行容器
  • -p 80:80 - 將端口 80 映射到容器中的端口 80,格式:宿主機端口: 容器端口
  • docker/getting-started - 要使用的鏡像

在前臺創建并運行容器(之后如果要退出容器但是不關閉容器,按 Ctrl+P+Q 即可)

$ docker run -it --rm -p  8001:8080 --name my-nginx nginx

  • -it - 交互式 bash 模式
  • --rm - 容器終止運行后自動刪除容器文件
  • -p 8001:8080 - 將 8001 端口映射到容器中的 8080 端口
  • --name my-nginx - 指定名稱
  • nginx - 要使用的鏡像

一般命令

ExampleDescription
docker ps列出正在運行的容器
docker ps -a列出所有容器
docker ps -s列出正在運行的容器 (帶 CPU / 內存)
docker images列出所有鏡像
docker exec -it <container> bash連接到容器
docker logs <container>顯示容器的控制臺日志
docker stop <container>停止容器
docker restart <container>重啟一個容器
docker rm <container>移除一個容器
docker port <container>顯示容器的端口映射
docker top <container>列出進程
docker kill <container>殺死一個容器

參數 <container> 可以是容器 id 或名稱

啟動和停止

DescriptionExample
docker start nginx-server開始
docker stop nginx-server停止
docker restart nginx-server重啟
docker pause nginx-server暫停
docker unpause nginx-server取消暫停
docker wait nginx-server阻塞容器
docker kill nginx-server發送 SIGKILL
docker attach nginx-server連接到現有容器

說明

ExampleDescription
docker ps列出正在運行的容器
docker ps -a列出所有容器
docker logs nginx-server容器日志
docker inspect nginx-server檢查容器
docker events nginx-server容器事件
docker port nginx-server公共端口
docker top nginx-server運行進程
docker stats nginx-server容器資源使用
docker diff nginx-server列出對容器所做的更改

創建容器

docker create [options] IMAGE-a, --attach               # 附加標準輸出/錯誤-i, --interactive          # 附加標準輸入(交互式)-t, --tty                  # 偽終端 pseudo-tty--name NAME            # 命名你的鏡像-p, --publish 5000:5000    # 端口映射(主機:容器)--expose 5432          # 向容器公開端口 -P, --publish-all          # 發布所有端口--link container:alias # 鏈接 linking-v, --volume `pwd`:/app    # mount(需要絕對路徑)-e, --env NAME=hello       # 環境變量 env vars
實例
$ docker create --name my_redis --expose 6379 redis:3.0.2

操控

重命名容器

docker rename my-nginx nginx-server

移除容器

docker rm nginx-server

更新容器

docker update --cpu-shares 512 -m 300M nginx-server

操控

ExampleDescription
docker images列出鏡像
docker rmi nginx刪除鏡像
docker load < ubuntu.tar.gz加載一個 tarred 存儲庫
docker load --input ubuntu.tar加載一個 tarred 存儲庫
docker save busybox > ubuntu.tar將鏡像保存到 tar 存檔
docker history顯示鏡像的歷史
docker commit nginx my_nginx將容器另存為鏡像
docker tag nginx eon01/nginx標記鏡像
docker push eon01/nginx推送鏡像

構建鏡像

# 注意有的最后面是英文 .
$ docker build .
$ docker build github.com/creack/docker-firefox
$ docker build - < Dockerfile
$ docker build - < context.tar.gz
$ docker build -t eon/nginx-server .
$ docker build -f myOtherDockerfile .
$ docker build --build-arg https_proxy=127.0.0.1:8088 # 使用http代理構建
$ curl example.com/remote/Dockerfile | docker build -f - .
$ docker save -o <保存路徑>/myimage.tar myimage:latest # 導出
$ docker load -i <路徑>/myimage.tar # 導入

刪除 鏡像

$ docker rmi -f $(docker images | grep "none" | awk '{print $3}')

創建網絡

docker network create -d overlay MyOverlayNetwork
docker network create -d bridge MyBridgeNetwork

自定義網絡子網和網關

docker network create -d overlay \--subnet=192.168.0.0/16 \--subnet=192.170.0.0/16 \--gateway=192.168.0.100 \--gateway=192.170.0.100 \--ip-range=192.168.1.0/24 \--aux-address="my-router=192.168.1.5" \--aux-address="my-switch=192.168.1.6" \--aux-address="my-printer=192.170.1.5" \--aux-address="my-nas=192.170.1.6" \MyOverlayNetwork

操作

獲取容器連接的網絡

docker inspect MyContainer | grep Network

獲取有關網絡的信息

docker network inspect <network_name>

將正在運行的容器連接到網絡

docker network connect <network_name> <container_name>

啟動時將容器連接到網絡

docker run -it -d --network=<network_name> <container_name>

斷開容器與網絡的連接

docker network disconnect <network_name> <container_name>

刪除網絡

docker network rm <network_name>

Docker 快捷鍵

需要特別注意的是,退出快捷鍵中的刪除容器實例,只對于使用 docker attach 進入的容器生效,使用 docker exec 進入容器后,使用上面的快捷鍵后將隔離容器,且不會刪除容器實例。

退出 - 關閉容器

Docker 快捷鍵說明
ctrl c將關閉容器

將關閉容器, 并刪除當前的容器實例

退出 - 保留容器

Docker 快捷鍵說明
ctrl d保留容器

將保留容器,并退出到 Docker 主機的命令行界面

退出 - 容器分離

Docker 快捷鍵說明
ctrl p q容器分離

將容器分離,保留容器,但是不退出

Docker Hub

$ docker search search_word  # 在 docker hub 中搜索鏡像
$ docker pull user/image     # 從 docker hub 下載鏡像
$ docker login               # 向 docker hub 進行身份驗證
$ docker push user/image     # 將鏡像上傳到 docker hub

鏡像倉庫命令

登錄到鏡像倉庫

$ docker login
$ docker login localhost:8080

從鏡像倉庫注銷

$ docker logout
$ docker logout localhost:8080

搜索鏡像

$ docker search nginx
$ docker search nginx --stars=3 --no-trunc busybox

拉取鏡像

$ docker pull nginx
$ docker pull eon01/nginx localhost:5000/myadmin/nginx

推送鏡像

$ docker push eon01/nginx
$ docker push eon01/nginx localhost:5000/myadmin/nginx

批量清除

實例說明
docker stop -f $(docker ps -a -q)停止所有容器
docker rm -f $(docker ps -a -q)刪除所有容器
docker rmi -f $(docker images -q)刪除所有鏡像
docker volume prune刪除所有未使用的 Docker Volume
docker network prune刪除所有未使用的 Docker 網絡
docker system prune清理所有空閑或與任何 Docker 容器無關的資源
docker image prune刪除懸空的 Docker 鏡像
docker container prune刪除所有未使用的 Docker 容器

卷 volume

$ docker volume ls    # 檢查卷
$ docker volume prune # 清理未使用的卷

Docker Compose

:-:-
docker-compose up創建和啟動容器
docker-compose up -d以分離模式創建和啟動容器
docker-compose down停止和刪除容器、網絡、映像和卷
docker-compose logs查看容器的輸出
docker-compose restart重啟所有服務
docker-compose pull拉取所有服務的鏡像
docker-compose build構建所有服務的鏡像
docker-compose config驗證并查看 Compose 文件
docker-compose scale <service_name>=<replica>為服務指定容器個數
docker-compose top顯示正在運行的進程
docker-compose run -rm -p 2022:22 web bash啟動 Web 服務并運行 bash 作為其命令,刪除舊容器

Docker Services

:-:-
docker service create <options> <image> <command>創建新服務
docker service inspect --pretty <service_name>顯示詳細信息服務
docker service ls列出服務
docker service ps列出服務的任務
docker service scale <service_name>=<replica>規模特殊服務
docker service update <options> <service_name>更新服務選項

Docker Stack

:-:-
docker stack ls列出此 Docker 主機上所有正在運行的應用程序
docker stack deploy -c <composefile> <appname>運行指定的 Compose 文件
docker stack services <appname>列出與應用關聯的服務
docker stack ps <appname>列出與應用關聯的正在運行的容器
docker stack rm <appname>拆掉一個應用程序

Docker Machine

:-:-
docker-machine create --driver virtualbox myvm1創建虛擬機(Mac、Win7、Linux)
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1Win10
docker-machine env myvm1查看有關您的節點的基本信息
docker-machine ssh myvm1 "docker node ls"列出集群中的節點
docker-machine ssh myvm1 "docker node inspect <node ID>"檢查節點
docker-machine ssh myvm1 "docker swarm join-token -q worker"查看加入令牌
docker-machine ssh myvm1打開與 VM 的 SSH 會話; 輸入 “exit” 結束
docker-machine ssh myvm2 "docker swarm leave"讓工人離開群體
docker-machine ssh myvm1 "docker swarm leave -f"讓主人離開,殺群
docker-machine start myvm1啟動當前未運行的 VM
docker-machine stop $(docker-machine ls -q)停止所有正在運行的虛擬機
docker-machine rm $(docker-machine ls -q)刪除所有虛擬機及其磁盤映像
docker-machine scp docker-compose.yml myvm1:~將文件復制到節點的主目錄
docker-machine ssh myvm1 "docker stack deploy -c <file> <app>"部署應用

docker 主要命令

:-:-
attach將本地標準輸入、輸出和錯誤流附加到正在運行的容器
build從 Dockerfile 構建鏡像
commit從容器的更改創建新鏡像
cp在容器和本地文件系統之間復制文件 / 文件夾
create創建一個新容器
diff檢查容器文件系統上文件或目錄的更改
events從服務器獲取實時事件
exec在正在運行的容器中運行命令
export將容器的文件系統導出為 tar 存檔
history顯示鏡像的歷史
images列出鏡像
import從 tarball 導入內容以創建文件系統映像
info顯示系統范圍的信息
inspect返回有關 Docker 對象的低級信息
kill殺死一個或多個正在運行的容器
load從 tar 存檔或 STDIN 加載鏡像
login登錄到 Docker 注冊表
logout從 Docker 注冊表中注銷
logs獲取容器的日志
pause暫停一個或多個容器內的所有進程
port列出容器的端口映射或特定映射
ps列出容器
pull從注冊表中提取鏡像或存儲庫
push將鏡像或存儲庫推送到注冊表
rename重命名容器
restart重啟一個或多個容器
rm移除一個或多個容器
rmi移除一張或多張鏡像
run在新容器中運行命令
save將一個或多個鏡像保存到 tar 存檔(默認流式傳輸到 STDOUT)
searchDocker Hub 中搜索鏡像
start啟動一個或多個停止的容器
stats顯示容器資源使用統計的實時流
stop停止一個或多個正在運行的容器
tag創建一個引用 SOURCE_IMAGE 的標記 TARGET_IMAGE
top顯示容器的運行進程
unpause取消暫停一個或多個容器中的所有進程
update更新一個或多個容器的配置
version顯示 Docker 版本信息
wait阻塞直到一個或多個容器停止,然后打印它們的退出代碼

docker 管理命令

:-:-
docker builder管理構建
docker buildx*Docker Buildx(Docker Inc.,v0.7.1)
docker compose*Docker Compose(Docker Inc.,v2.2.3)
docker config管理 Docker 配置
docker container管理容器
docker context管理上下文
docker image管理鏡像
docker manifest管理 Docker 鏡像清單和清單列表
docker network管理網絡
docker node管理 Swarm 節點
docker plugin管理插件
docker scan*Docker 掃描(Docker Inc.,v0.16.0)
docker secret管理 Docker 機密
docker service管理服務
docker stack管理 Docker 堆棧
docker swarm管理群
docker system管理 Docker
docker trust管理對 Docker 映像的信任
docker volume管理卷

docker 全局參數

    --config string     # 客戶端配置文件的位置(默認“~/.docker”)
-c, --context string    # 用于連接到守護程序的上下文的名稱(# 覆蓋 DOCKER_HOST 環境變量和使用# “docker context use” 設置的默認上下文)
-D, --debug             # 啟用調試模式
-H, --host list         # 要連接的守護進程套接字
-l, --log-level string  # 設置日志級別# (默認“info”) ("debug"|"info"|"warn"|"error"|"fatal") --tls               # 使用 TLS; 由 --tlsverify 暗示--tlscacert string  # 僅由該 CA 簽署的信任證書#(默認為“~/.docker/ca.pem”)--tlscert string    # TLS證書文件路徑#(默認“~/.docker/cert.pem”)--tlskey string     # TLS 密鑰文件的路徑#(默認為“~/.docker/key.pem”)--tlsverify         # 使用 TLS 并驗證遠程
-v, --version           # 打印版本信息并退出

docker images

-a, --all             顯示所有鏡像(默認隱藏中間鏡像)--digests         顯示摘要
-f, --filter filter   根據提供的條件過濾輸出--format string   使用 Go 模板打印漂亮的鏡像--no-trunc        不要截斷輸出
-q, --quiet           僅顯示鏡像 ID

docker run/create

    --add-host list            # 添加自定義主機到 IP 映射 (host:ip)
-a, --attach list              # 連接到 STDIN、STDOUT 或 STDERR--blkio-weight uint16      # 塊 IO(相對權重),介于 10 和 1000 之間,或 0 禁用(默認 0)--blkio-weight-device list # 塊 IO 權重(相對設備權重)(默認 [])--cap-add list             # 添加 Linux 功能--cap-drop list            # 放棄 Linux 功能--cgroup-parent string     # 容器的可選父 cgroup--cgroupns string          # 要使用的 Cgroup 命名空間(主機|私有)#  'host':    在 Docker 主機的 cgroup 命名空間中運行容器#  'private': 在自己的私有 cgroup 命名空間中運行容器#  '':        使用由守護進程上的 #        default-cgroupns-mode 選項配置的 cgroup 命名空間(默認)--cidfile string           # 將容器 ID 寫入文件--cpu-period int           # 限制 CPU CFS(完全公平調度器)周期--cpu-quota int            # 限制 CPU CFS(完全公平調度器)配額--cpu-rt-period int        # 以微秒為單位限制 CPU 實時周期--cpu-rt-runtime int       # 以微秒為單位限制 CPU 實時運行時間
-c, --cpu-shares int           # CPU 份額(相對權重)--cpus decimal             # CPU 數量--cpuset-cpus string       # 允許執行的 CPU (0-3, 0,1)--cpuset-mems string       # 允許執行的 MEM (0-3, 0,1)--device list              # 將主機設備添加到容器--device-cgroup-rule list  # 將規則添加到 cgroup 允許的設備列表--device-read-bps list     # 限制設備的讀取速率(每秒字節數)(默認 [])--device-read-iops list    # 限制設備的讀取速率(每秒 IO)(默認 [])--device-write-bps list    # 限制設備的寫入速率(每秒字節數)(默認 [])--device-write-iops list   # 限制設備的寫入速率(每秒 IO)(默認 [])--disable-content-trust    # 跳過鏡像驗證(默認為 true)--dns list                 # 設置自定義 DNS 服務器--dns-option list          # 設置 DNS 選項--dns-search list          # 設置自定義 DNS 搜索域--domainname string        # 容器 NIS 域名--entrypoint string        # 覆蓋鏡像的默認入口點
-e, --env list                 # 設置環境變量--env-file list            # 讀入環境變量文件--expose list              # 公開一個端口或一系列端口--gpus gpu-request         # 要添加到容器中的 GPU 設備(“全部”以傳遞所有 GPU)--group-add list           # 添加其他組以加入--health-cmd string        # 運行以檢查運行狀況的命令--health-interval duration # 運行檢查之間的時間 (ms|s|m|h) (默認 0s)--health-retries int           # 需要報告不健康的連續失敗--health-start-period duration # 開始健康重試倒計時之前容器初始化的開始時間(ms|s|m|h)(默認 0s)--health-timeout duration      # 允許運行一項檢查的最長時間 (ms|s|m|h) (默認 0s)--help                     # 打印使用
-h, --hostname string          # 容器主機名--init                     # 在容器內運行一個 init 來轉發信號并收獲進程
-i, --interactive              # 即使沒有連接,也保持 STDIN 打開--ip string                # IPv4 地址(例如 172.30.100.104)--ip6 string               # IPv6 地址(例如,2001:db8::33)--ipc string               # 要使用的 IPC 模式--isolation string         # 容器隔離技術--kernel-memory bytes      # 內核內存限制
-l, --label list               # 在容器上設置元數據--label-file list          # 讀入以行分隔的標簽文件--link list                # 添加到另一個容器的鏈接--link-local-ip list       # 容器 IPv4/IPv6 鏈路本地地址--log-driver string        # 容器的日志記錄驅動程序--log-opt list             # 日志驅動程序選項--mac-address string       # 容器 MAC 地址(例如 92:d0:c6:0a:29:33)
-m, --memory bytes             # 內存限制--memory-reservation bytes # 內存軟限制--memory-swap bytes        # 交換限制等于內存加上交換:'-1' 啟用無限交換--memory-swappiness int    # 調整容器內存交換(0 到 100)(默認 -1)--mount mount              # 將文件系統掛載附加到容器--name string              # 為容器分配名稱--network network          # 將容器連接到網絡--network-alias list       # 為容器添加網絡范圍的別名--no-healthcheck           # 禁用任何容器指定的 HEALTHCHECK--oom-kill-disable         # 禁用 OOM 殺手--oom-score-adj int        # 調整主機的 OOM 首選項(-1000 到 1000)--pid string               # 要使用的 PID 命名空間--pids-limit int           # 調整容器 pids 限制(設置 -1 表示無限制)--platform string          # 如果服務器支持多平臺,則設置平臺--privileged               # 授予此容器擴展權限
-p, --publish list             # 將容器的端口發布到主機
-P, --publish-all              # 將所有暴露的端口發布到隨機端口--pull string              # 創建前拉取鏡像("always"|"missing"|"never")(默認"missing")--read-only                # 將容器的根文件系統掛載為只讀--restart string           # 容器退出時應用的重啟策略(默認“否”)--rm                       # 容器退出時自動移除--runtime string           # 用于此容器的運行時--security-opt list        # 安全選項--shm-size bytes           # /dev/shm 的大小--stop-signal string       # 停止容器的信號(默認“SIGTERM”)--stop-timeout int         # 停止容器的超時(以秒為單位)--storage-opt list         # 容器的存儲驅動程序選項--sysctl map               # Sysctl 選項(默認 map[])--tmpfs list               # 掛載 tmpfs 目錄
-t, --tty                      # 分配一個偽 TTY--ulimit ulimit            # ulimit 選項(默認 [])
-u, --user string              # 用戶名或 UID(格式:<name|uid>[:<group|gid>])--userns string            # 要使用的用戶命名空間--uts string               # 要使用的 UTS 命名空間
-v, --volume list              # 綁定掛載卷--volume-driver string     # 容器的可選卷驅動程序--volumes-from list        # 從指定容器掛載卷
-w, --workdir string           # 容器內的工作目錄

run/create 大部分參數一致

修改 Docker 鏡像拉取地址

您可以通過修改 daemon 配置文件 / etc/docker/daemon.json 來使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://1ojaslt1.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

修改 Docker 數據存儲路徑

  • 停止 Docker 服務:

    sudo systemctl stop docker
    
  • 將現有的 Docker 數據移動到新的目錄:

    sudo mv /var/lib/docker /new/path/docker
    
  • 更新 Docker 的配置文件 /etc/docker/daemon.json,添加或修改 data-root 選項:

    { "data-root": "/new/path/docker" }
    
  • 重新啟動 Docker 服務:

    sudo systemctl start docker
    

??注意:當你執行此操作時,舊的容器和鏡像可能無法正常工作,因為它們的路徑已更改。建議在部署 Docker 時執行此操作,以避免這些問題。如有必要,重新啟動容器或重新創建它們,以確保它們的配置指向新的路徑。

Docker 降級版本的方法

yum downgrade --setopt=obsoletes=0 \-y docker-ce-${version} docker-ce-selinux-${version}

${version} 指定要降級的版本

Docker Web 管理工具 portainer

$ docker run -d --name portainer \-p 8000:8000 \-p 9443:9443 \--restart=always \-v /var/run/docker.sock:/var/run/docker.sock \-v $HOME/portainer:/data \portainer/portainer-ee:latest

Nginx

docker run -itd -p 80:80 --restart=always --name Nginx \
-v $HOME/nginx_data/html:/usr/share/nginx/html \
-v $HOME/nginx_data/conf:/etc/nginx/conf.d \
-v $HOME/nginx_data/nginx.conf:/etc/nginx/nginx.conf \
nginx
參數解釋
  • -itd: 啟動容器并保持后臺運行
  • -p 80:80: 將主機的 80 端口映射到容器的 80 端口,用于訪問 Nginx 站點頁面
  • --name Nginx: 給容器指定一個名稱為 “Nginx”
  • --restart=always: 在容器退出時,總是重新啟動容器
持久化解釋
----
-v $HOME/nginx_data/html:/usr/share/nginx/html將容器中的 Nginx 站點頁面路徑映射到本地
-v $HOME/nginx_data/conf:/etc/nginx/conf.d將容器中的 Nginx 虛擬主機配置文件路徑映射到本地 (需要提前準備好文件)
-v $HOME/nginx_data/nginx.conf:/etc/nginx/nginx.conf將容器中的 Nginx 主配置文件路徑映射到本地 (需要提前準備好文件)

Tomcat

docker run -itd -p 8080:8080 --restart=always \
--name Tomcat \
-v $HOME/Tomcat_data/webapps:/usr/local/tomcat/webapps/ROOT \
tomcat
參數解釋
  • -itd: 以后臺運行的方式啟動容器,并分配一個偽終端(pseudo-TTY)和保持 STDIN 打開
  • -p 8080:8080: 將主機的端口 8080 映射到容器的 8080 端口,用于訪問 Tomcat 站點頁面
  • --name Tomcat: 為容器指定名稱為 “Tomcat”
  • --restart=always: 當容器退出時,總是重新啟動容器
持久化解釋

將容器中的 /usr/local/tomcat/webapps/ROOT 路徑掛載到宿主機中的 $HOME/Tomcat_data/webapps 目錄下。

Weblogic

docker run -itd \
-p 7001:7001 \
-p 7002:7002 \
-p 5556:5556 \
--restart=always --name Weblogic ismaleiva90/weblogic12

注意:ismaleiva90/weblogic12 是非官方或認證的 Docker 鏡像!

參數解釋
  • -itd: 后臺運行容器,保持 STDIN 打開
  • -p 7001:7001: 映射主機 7001 端口到容器 7001 端口,訪問 Weblogic 控制臺頁面
  • -p 7002:7002: 映射主機 7002 端口到容器 7002 端口,訪問 Weblogic 站點頁面
  • -p 5556:5556: 映射主機 5556 端口到容器 5556 端口,訪問 Weblogic 站點頁面
  • --name Weblogic: 容器名稱為 “Weblogic”
  • --restart=always: 容器退出時,總是重新啟動容器

MySQL

docker run -d -it -p 3306:3306 --name MySQL --restart=always \
-v $HOME/MySQL_Data/data:/var/lib/mysql \
-v $HOME/MySQL_Data/conf:/etc/mysql/conf.d \
--privileged=true \
-e MYSQL_DATABASE='test_db' \
-e MYSQL_ROOT_PASSWORD='abc$123' \
-e MYSQL_USER='testuser' -e MYSQL_PASSWORD='abc$123' \
mysql:8.0.31 \--character-set-server=utf8mb4 \--collation-server=utf8mb4_unicode_ci
參數解釋
----
-d表示以后臺運行的方式啟動容器
-it分別表示分配一個偽終端(pseudo-TTY)并保持 STDIN 打開
-p 3306:3306將主機的端口映射到容器的端口,這里是將主機的 3306 端口映射到容器的 3306 端口,用于訪問 MySQL 數據庫
--name MySQL為容器指定一個名稱,這里是 "MySQL"
--restart=always表示當容器退出時,總是重新啟動容器
--privileged=true若不加字段 --privileged=true 可能會報權限錯誤
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci這兩個選項參數是改變所有表的默認編碼和排序規則以使用 UTF-8 (utf8mb4)
持久化解釋
----
-v $HOME/MySQL_Data/data:/var/lib/mysql將容器中的 MySQL 數據庫數據存儲到本地,以確保在容器重啟時數據得以保留。
-v $HOME/MySQL_Data/conf:/etc/mysql/conf.d將容器中的 MySQL 自定義配置文件路徑映射到本地,以方便自定義配置。請確保提前準備好文件,否則可能會啟動失敗
環境變量解釋
----
MYSQL_ROOT_PASSWORD 【必填】必需的變量,用于指定 MySQL 的 root 超級用戶帳戶的密碼。如果設置了 MYSQL_RANDOM_ROOT_PASSWORD=yes ,則會隨機生成一個密碼,并打印到 stdout。
MYSQL_USER 【可選】可選變量,用于創建新用戶。此用戶將被授予指定數據庫的超級用戶權限。需要同時設置 MYSQL_PASSWORD 變量。
MYSQL_PASSWORD 【可選】可選變量,用于創建新用戶并設置密碼。此用戶將被授予指定數據庫的超級用戶權限。需要同時設置 MYSQL_USER 變量。
MYSQL_DATABASE 【可選】可選變量,允許在容器啟動時指定要創建的數據庫的名稱。如果設置了 MYSQL_USERMYSQL_PASSWORD,則該用戶將被授予對此數據庫的超級用戶訪問權限。

Oracle

docker run -d -it -p 1521:1521 --name Oracle_11g --restart=always \
--mount source=oracle_vol,target=/home/oracle/app/oracle/oradata \
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

注意:registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g 是非官方或認證的 Docker 鏡像!

參數解釋
----
-d表示以后臺運行的方式啟動容器
-it分別表示分配一個偽終端(pseudo-TTY)并保持 STDIN 打開
-p 1521:1521將主機的端口映射到容器的端口,這里是將主機的 1521 端口映射到容器的 1521 端口,用于訪問 Oracle 數據庫
--name Oracle_11g為容器指定一個名稱,這里是 "Oracle_11g"
--restart=always表示當容器退出時,總是重新啟動容器
持久化解釋
----
--mount source=oracle_vol,target=/home/oracle/app/oracle/oradata將名為 "oracle_vol" 的 Docker 卷掛載到容器中的 "/home/oracle/app/oracle/oradata" 路徑。這樣做的目的是將 Oracle 數據庫的數據存儲在持久化的卷中,以便數據在容器重啟時得以保留

PostgreSQL

docker run -d -p 5432:5432 --restart=always --name PostgreSQL \
-e POSTGRES_USER='postgres' \
-e POSTGRES_PASSWORD='abc$123' \
-e POSTGRES_DB='test' \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v $HOME/Postgres_Data:/var/lib/postgresql/data \
-d postgres
參數解釋
----
-d表示以后臺運行的方式啟動容器
-it分別表示分配一個偽終端(pseudo-TTY)并保持 STDIN 打開
-p 5432:5432將主機的端口映射到容器的端口,這里是將主機的 5432 端口映射到容器的 5432 端口,用于訪問 Postgre 數據庫
--name PostgreSQL為容器指定一個名稱,這里是 "PostgreSQL"
--restart=always表示當容器退出時,總是重新啟動容器
持久化解釋
----
-v $HOME/Postgres_Data:/var/lib/postgresql/data將到容器中的 "/var/lib/postgresql/data" 路徑映射掛載到 宿主機中的 ”$HOME/Postgres_Data“目錄下, 這樣做的目的是將 Postgre 數據庫的數據存儲在本地中,以便數據在容器重啟時得以保留
環境變量解釋
----
POSTGRES_PASSWORD 【必填】PostgreSQL 映像所需的環境變量。設置 PostgreSQL 超級用戶的密碼。不能為空或未定義。
POSTGRES_USER 【可選】可選環境變量,用于創建用戶及其密碼。創建具有超級用戶權限的指定用戶和同名的數據庫。默認用戶是 "postgres"。
POSTGRES_DB 【可選】可選環境變量,用于定義首次啟動映像時創建的默認數據庫的名稱。默認值是 POSTGRES_USER 的值,如果未設置,則默認為 "postgres"。
PGDATA 【可選】默認為 /var/lib/postgresql/data。如果使用的數據卷是文件系統掛載點或無法被用戶 chowned 的遠程文件夾,則需要設置此環境變量以包含數據。

達夢

docker run -d -p 5236:5236 --restart=always --name DaMengDB \
--privileged=true \
-e PAGE_SIZE=16 \
-e LD_LIBRARY_PATH=/opt/dmdbms/bin \
-e EXTENT_SIZE=32 \
-e BLANK_PAD_MODE=1 \
-e LOG_SIZE=1024 \
-e UNICODE_FLAG=1 \
-e LENGTH_IN_CHAR=1 \
-e INSTANCE_NAME=dm8_test \
-v $HOME/DaMeng_Data:/opt/dmdbms/data \
if010/dameng

注意:if010/dameng 是從官網下載上傳至 Docker Hub 的鏡像!

參數解釋
----
-d表示以后臺運行的方式啟動容器
-it分別表示分配一個偽終端(pseudo-TTY)并保持 STDIN 打開
-p 5236:5236將主機的端口映射到容器的端口,這里是將主機的 5236 端口映射到容器的 5236 端口,用于訪問達夢數據庫
--name DaMengDB為容器指定一個名稱,這里是 "DaMengDB"
--restart=always表示當容器退出時,總是重新啟動容器
持久化解釋
----
-v $HOME/DaMeng_Data:/opt/dmdbms/data將容器中的達夢數據庫數據存儲路徑 "/opt/dmdbms/data" 映射到本地主機的 "$HOME/DaMeng_Data" 目錄,以確保在容器重啟時數據得以保留

人大金倉

docker run -idt -p 54321:54321 --restart=always \
--name Kingbase --privileged=true \
-e DB_MODE=oracle \
-e NEED_START=yes \
-e DB_USER=kingbase \
-e DB_PASSWORD=abc123 \
-e ENABLE_CI=yes \
-v $HOME/Kingbase_Data:/home/kingbase/userdata \
if010/kingbase:v009r001c001b0025 /usr/sbin/init

注意:if010/kingbase:v009r001c001b0025 是從官網下載上傳至 Docker Hub 的鏡像,官網提供了兩個下載版本,一個是 v008r006c008b0014,另一個是 v009r001c001b0025,可以拉取對應的 tag 鏡像進行測試使用!

參數解釋
----
-itd以后臺方式啟動容器,保持 STDIN 打開
-p 54321:54321將主機的 54321 端口映射到容器的 54321 端口,訪問數據庫
--name Kingbase給容器指定名稱為 "Kingbase"
--restart=always容器退出時,總是重新啟動容器
持久化解釋
----
-v $HOME/Kingbase_Data:/home/kingbase/userdata將容器中的人大金倉數據庫數據存儲路徑 "/home/kingbase/userdata" 映射到本地主機的 "$HOME/Kingbase_Data" 目錄,以確保在容器重啟時數據得以保留
環境變量解釋
----
DB_USER 【可選】設置用戶及其密碼,默認為 "system"
DB_PASSWORD 【可選】設置用戶密碼,默認為 "123456"
DB_MODE 【可選】設置數據庫模式,支持的模式有 oracle、pg、mysql
NEED_START 【可選】設置進入容器后是否啟動數據庫,默認為 "yes"
ENABLE_CI 【可選】設置是否需要配置大小寫敏感,默認為 "yes"

Redis

docker run -d -p 6379:6379 --restart=always --name Redis \
-v $HOME/Redis_Data/conf:/usr/local/etc/redis \
-v $HOME/Redis_Data/data:/data \
redis redis-server /usr/local/etc/redis/redis.conf
參數解釋
----
-d表示以后臺運行的方式啟動容器
-it分別表示分配一個偽終端(pseudo-TTY)并保持 STDIN 打開
-p 6379:6379將主機的端口映射到容器的端口,這里是將主機的 6379 端口映射到容器的 6379 端口,用于訪問 Redis 數據庫
--name Redis為容器指定一個名稱,這里是 "Redis"
--restart=always表示當容器退出時,總是重新啟動容器
持久化解釋
----
-v $HOME/Redis_Data/conf:/usr/local/etc/redis(需提前準備好文件,否則可能會啟動失敗) 將到容器中的 "/usr/local/etc/redis" 路徑映射掛載到 宿主機中的 "$HOME/Redis_Data/conf" 目錄下, 這樣子做的目的是可以自定義 Redis 的配置文件
-v $HOME/Redis_Data/data:/data將到容器中的 "/data" 路徑映射掛載到 宿主機中的 "$HOME/Redis_Data/data" 目錄下, 這樣做的目的是將 Redis 數據庫的數據存儲在本地中,以便數據在容器重啟時得以保留
關于啟動命令
----
redis-server /usr/local/etc/redis/redis.conf容器內部執行該命令是為了按照我們自定義的配置文件啟動,這個不是必須的!!!

Memcache

docker run -d -p 11211:11211 --name Memcached \--restart=always memcached memcached -m 64
參數解釋
  • -d: 以后臺方式啟動容器。
  • -it: 分配一個偽終端(pseudo-TTY)并保持 STDIN 打開。
  • -p 11211:11211: 將主機的 11211 端口映射到容器的 11211 端口,用于訪問 Memcached 消息隊列的 web 管理界面。
  • --name Memcached: 容器的名稱為 “Memcached”。
  • --restart=always: 容器退出時,總是重新啟動容器。
命令執行解釋
  • memcached -m 64 這會將 Memcached 服務器設置為使用 64 MB 進行存儲

MongoDB

docker run -d -p 27017:27017 --restart=always --name MongoDB \
-e MONGO_INITDB_ROOT_USERNAME=mongoadmin \
-e MONGO_INITDB_ROOT_PASSWORD=abc123 \
-v $HOME/MongoDB_Data/data:/data/db \
-v $HOME/MongoDB_Data/conf:/etc/mongo \
mongo --config /etc/mongo/mongod.conf --wiredTigerCacheSizeGB 1.5
參數解釋
----
-d表示以后臺運行的方式啟動容器
-it分別表示分配一個偽終端(pseudo-TTY)并保持 STDIN 打開
-p 27017:27017將主機的端口映射到容器的端口,這里是將主機的 27017 端口映射到容器的 27017 端口,用于訪問 MongoDB 數據庫
--name MongoDB為容器指定一個名稱,這里是 "MongoDB"
--restart=always表示當容器退出時,總是重新啟動容器
--config /etc/mongo/mongod.conf指定配置文件路徑 (這個不是必須的,設置此選項之前需準備好 mongod.conf 文件映射到 Docker 內部)
--wiredTigerCacheSizeGB 1.5設置 WiredTiger 緩存大小限制為 1.5G
持久化解釋
----
-v $HOME/MongoDB_Data/conf:/etc/mongo將到容器中的 "/etc/mongo" 路徑映射掛載到 宿主機中的 "$HOME/MongoDB_Data/conf" 目錄下, 這樣子做的目的是可以自定義 MongoDB 的配置文件 (需提前準備好文件,否則可能會啟動失敗)
-v $HOME/Redis_Data/data:/data將到容器中的 "/data/db" 路徑映射掛載到 宿主機中的 "$HOME/MongoDB_Data/data" 目錄下, 這樣做的目的是將 MongoDB 數據庫的數據存儲在本地中,以便數據在容器重啟時得以保留
環境變量解釋
----
MONGO_INITDB_ROOT_USERNAME 【可選】該變量是創建管理員用戶,該用戶是在 admin 身份驗證數據庫中創建的,并被賦予角色 root,這是一個 "超級用戶" 角色。
MONGO_INITDB_ROOT_PASSWORD 【可選】該變量是為創建管理員用戶設置密碼,需配合 MONGO_INITDB_ROOT_USERNAME 變量參數使用

RabbitMQ

docker run -itd -p 15672:15672 --name RabbitMQ \
--hostname rmq-test \
-e RABBITMQ_DEFAULT_VHOST=rmq-test \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=abc123 \
rabbitmq:3-management 
參數解釋
----
-itd表示以后臺運行的方式啟動容器, 并分配一個偽終端(pseudo-TTY)和保持 STDIN 打開
-p 15672:15672將主機的端口映射到容器的端口,這里是將主機的 15672 端口映射到容器的 15672 端口,用于訪問 RabbitMQ 控制臺頁面,內部除了該端口外,還開了 4369/tcp、5671-5672/tcp、15671/tcp、15691-15692/tcp、25672/tcp
--name RabbitMQ為容器指定一個名稱,這里是 "RabbitMQ"
--restart=always表示當容器退出時,總是重新啟動容器
--hostname設置容器主機名稱
環境變量解釋
----
RABBITMQ_DEFAULT_VHOST 【可選】該變量是可選的,是設置 RabbitMQ 的主機名稱
RABBITMQ_DEFAULT_USER 【可選】該變量是可選的,是設置 RabbitMQ 的賬戶
RABBITMQ_DEFAULT_PASS 【可選】該變量是可選的,是設置 RabbitMQ 的密碼

遠程協助工具 Guacd

docker run -d -p 4822:4822 --privileged=true \--restart=always --name Guacd \-e LANG=zh_CN.UTF-8 \-v /docker_data/Guacd/rdp-rec:/rdp-rec \-v /docker_data/Guacd/rdp-file:/rdp-file \guacamole/guacd
參數解釋
----
-d表示以后臺運行的方式啟動容器
-it分別表示分配一個偽終端(pseudo-TTY)并保持 STDIN 打開
-p 4822:4822將主機的端口映射到容器的端口,這里是將主機的 4822 端口映射到容器的 4822 端口,用于訪問 Guacd 遠程的 API 接口
--name Guacd為容器指定一個名稱,這里是 "Guacd"
--restart=always表示當容器退出時,總是重新啟動容器
--privileged=true若不加字段 --privileged=true 可能會報權限錯誤
持久化解釋
----
-v /docker_data/Guacd/rdp-rec:/rdp-rec代碼內固定配置,guacd 服務 rdp 錄屏文件存放路徑
-v /docker_data/Guacd/rdp-file:/rdp-file代碼內固定配置,guacd 服務 rdp 遠程磁盤文件存放路
環境變量解釋
  • LANG 設置字符編碼格式

在線代碼編輯器 Code Server

$ mkdir -p ~/.config
$ docker run -it --name code-server  \-p 127.0.0.1:8080:8080 \-v "$HOME/.config/code-server:/home/coder/.config" \-v "$PWD:/home/coder/project" \-u "$(id -u):$(id -g)" \-e "DOCKER_USER=$USER" \codercom/code-server:latest

媒體管理工具 Dim

$ docker run --name my-dim \-p 8000:8000/tcp \-v $HOME/.config/dim:/opt/dim/config \-v $HOME/dim/media:/media:ro \-d ghcr.io/dusk-labs/dim:dev

Gitlab

$ docker run -d --name gitlab \--hostname gitlab.example.com \--publish 8443:443 --publish 8081:80 -p 2222:22 \--restart always \--volume $HOME/gitlab/config:/etc/gitlab \--volume $HOME/gitlab/logs:/var/log/gitlab \--volume $HOME/gitlab/data:/var/opt/gitlab \-v /etc/localtime:/etc/localtime \--shm-size 256m \gitlab/gitlab-ce:latest

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/73381.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/73381.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/73381.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Qt QML實現鼠標自由選擇不規則區域進行截圖

背景 不規則區域進行截圖是一種常見的應用場景&#xff0c;通常用于程序截圖工具或者圖像處理軟件中。主要是為了讓用戶可以自由選擇任意形狀的區域進行截圖&#xff0c;而不僅僅局限于矩形區域。這樣用戶可以更靈活地進行截圖操作&#xff0c;特別是對于需要截取特定形狀區域…

SpringDataRedis存儲Redis的數據序列化

在使用Spring Data Redis存儲數據至Redis時&#xff0c;選擇合適的序列化策略至關重要。它不僅影響數據存儲的效率和空間利用率&#xff0c;還關系到跨語言兼容性和系統的擴展性。適當的序列化方式可以確保數據正確無誤地被存儲和讀取&#xff0c;提升系統的穩定性和維護性&…

交易系統【三】網關

第二章本來是要講消息總線&#xff0c;審核說是過度宣傳&#xff0c;就放棄了&#xff0c;不糾結&#xff0c;先跳過。 網關和消息總線的底層技術都和網絡相關&#xff0c;兩者也有很重要的差別。消息總線主要用于內網&#xff0c;受交換機和網卡影響比較大&#xff0c;網絡狀…

eNSP中路由器的CON/AUX接口、GE Combo接口、Mini USB接口、USB接口、WAN側uplink接口、FE接口、GE接口介紹

路由器常見接口的詳細介紹及其應用示例&#xff1a; 1. CON/AUX 接口 全稱&#xff1a;Console/Auxiliary&#xff08;控制臺/輔助接口&#xff09;作用&#xff1a; CON&#xff08;Console&#xff09;&#xff1a;通過命令行界面&#xff08;CLI&#xff09;直接配置路由器…

iOS底層原理系列04-并發編程

在移動應用開發中&#xff0c;流暢的用戶體驗至關重要&#xff0c;而并發編程是實現這一目標的關鍵技術。本文將深入探討iOS平臺上的并發編程和多線程架構&#xff0c;幫助你構建高性能、響應迅速的應用程序。 1. iOS線程調度機制 1.1 線程本質和iOS線程調度機制 線程是操作…

Vmware下的openEuler

1.下載openEuler操作系統鏡像 https://repo.openeuler.org/openEuler-20.03-LTS/ISO/ 2.在VM新建虛擬機 3.虛擬機聯網 我是出現了沒有網絡&#xff0c;ping不通的問題 參考&#xff1a;https://blog.csdn.net/FHY26828/article/details/140941234 修改文件&#xff1a; 在…

帶寬管理配置實驗

一、實驗拓撲 配置流程&#xff1a; 1、帶寬通道&#xff1a;整體帶寬、每個用戶帶寬、連接數、優先級信息 2、帶寬策略 3、策略通道&#xff0c;引用 4、配置接口出入帶寬 二、實驗需求和配置 1、基礎配置 接口配置 [dianxin]interface GigabitEthernet 0/0/0 [dianxin-G…

【STM32】從新建一個工程開始:STM32 新建工程的詳細步驟

STM32 開發通常使用 Keil MDK、STM32CubeMX、IAR 等工具來創建和管理工程。此處是 使用 Keil MDK5 STM32CubeMX 創建 STM32 工程的詳細步驟。 新建的標準庫工程文件已上傳至資源中&#xff0c;下載后即可直接使用。 標準庫新建 STM32 工程的基本目錄結構&#xff1a;STD_STM…

探索 Trossen AI:從 Aloha到智能機器人平臺的進化之路

在人工智能與機器人技術快速發展的當下&#xff0c;科研硬件的性能與成本成為影響行業創新的重要因素。Trossen Robotic為在機器人領域二十余年的知名企業&#xff0c;近日推出的 Trossen AI 系列產品&#xff0c;為科研機構與開發者提供了高性能、高性價比的解決方案。 Trosse…

C語言:5.20程序練習題

打印一個菱形圖案。程序分為兩部分&#xff1a;上半部分和下半部分。上半部分打印一個逐漸增大的星號圖案&#xff0c;下半部分打印一個逐漸縮小的星號圖案。 #include<stdio.h> int main() {int row 5;//定義行數int t 2;for (int i row; 0 < i; i--){for (int k…

一些docker命令

一、基礎命令 查看 Docker 版本 docker --version 或 docker version&#xff1a;顯示 Docker 客戶端和服務器的版本信息。 查看 Docker 系統信息 docker info&#xff1a;顯示 Docker 系統的詳細信息&#xff0c;包括鏡像、容器數量、存儲驅動類型等。 Docker 服務管理 s…

C語言內容

C語言是一門經典且廣泛應用的編程語言&#xff0c;具有以下基礎要點&#xff1a; 基本數據類型 包括整型&#xff08;如 int &#xff09;、字符型&#xff08; char &#xff09;、浮點型&#xff08; float 和 double &#xff09;等&#xff0c;用于定義不同類型的變量來…

Python----數據可視化(Pyecharts一:介紹安裝,全局配置,系列配置)

一、PyEcharts介紹 1.1、概況 Echarts 是一個由百度開源的數據可視化&#xff0c;憑借著良好的交互性&#xff0c;精巧的圖表設計&#xff0c;得到了眾多開發者的認可。而 Python 是一門富有表達力的語言&#xff0c;很適合用于數據處理。當數據分析遇上數據可視化時&#xff…

dockerfile 編寫入門

Dockerfile編寫指南 Dockerfile是一個文本文件&#xff0c;其中包含了一系列的指令和參數&#xff0c;用于定義如何構建Docker鏡像。一個良好編寫的Dockerfile不僅可以確保鏡像的構建過程高效、可靠&#xff0c;還可以使得鏡像更加安全和易于維護。 1. Dockerfile基本結構和語…

Git 本地常見快捷操作

Git 本地常見快捷操作 &#x1f4cc; 1. 基本操作 操作命令初始化 Git 倉庫git init查看 Git 狀態git status添加所有文件到暫存區git add .添加指定文件git add <file>提交更改git commit -m "提交信息"修改最后一次提交信息git commit --amend -m "新…

如何處理PHP中的文件上傳錯誤

如何處理PHP中的文件上傳錯誤 在Web開發中&#xff0c;文件上傳是一個常見的功能需求。然而&#xff0c;文件上傳過程中可能會遇到各種錯誤&#xff0c;如文件大小超出限制、文件類型不被允許、上傳過程中斷等。為了確保用戶能夠順利上傳文件&#xff0c;并且開發者能夠有效地…

Linux--普通文件的管理

目錄 1、創建根目錄結構中的所有的普通文件 2、列出所有賬號的賬號名 3、將/etc/passwd中內容按照冒號隔開的第三個字符從大到小排序后輸出所有內容 4、列出/etc/passwd中的第20行-25行內容 head命令 tail命令 5、切割出你的ip地址和mac地址 ip地址 MAC地址 6、切割…

【SpringMVC】常用注解:@RequestBody

1.作用 用于獲取請求實體內容&#xff0c;直接使用得到的是keyvalue&keyvalue的數據。獲取請求實體內容不適用get請求。 2.屬性 required 描述是否有請求體&#xff0c;默認值為true。當取值為true時&#xff0c;get 請求方式會報錯。如果取值為false&#xff0c;get請…

RK3588 遠程 SSH時出現WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 翻譯過來就是 警告&#xff1a;遠程主機標識已更改&#xff01; 此報錯是由于遠程的主機的公鑰發生了變化導致的。 ssh服務是通過公鑰和私鑰來進行連接的&#xff0c;它會把每個曾經訪問過計算機或服務器的公鑰&#xff…

Go紅隊開發—web網絡編程

文章目錄 web網絡編程Req快速請求 調試DevModeDebugLogTraceInfo瓶頸分析 控制請求與響應控制請求的字段內容控制調試打印的內容分開dump請求與響應部分請求體設置 作用范圍級別設置參數查詢URL 路徑參數表單請求設置請求頭設置 判斷響應狀態碼解析數據SetSuccessResultgjson響…