docker命令集錦
阿新 • • 發佈:2018-08-13
當前 ridge des col script label 鏈接 重啟 ifconfig
sudo docker image ls 查看有哪些image鏡像
sudo docker run hello 運行image
刪除全部container
docker rm $(docker container ls -aq)
刪除全部退出的container
docker rm $(docker container ls -f "status=exited" -q)
docker container commit (docker commit)
docker image build (docker build)
docker build -t felix/ubuntu-stress . 創建image
docker exec -it fc02b5ea83bc /bin/bash 進入容器中運行命令
docker exec -it fc02b5ea83bc python3
docker exec -it fc02b5ea83bc ip a
docker ps -a 查看全部容器
docker inspect fc02b5ea83bc 顯示容器完整的信息
docker run -it ubuntu 交互模式下運行ubuntu這個image
# --name 起個別名 --link 鏈接到別名為test1的容器,之後可以用別名代替ip,比如說用在數據庫。
docker run -d --name test2 --link test1 ubuntu /bin/sh -c "while true;do sleep 3600;done"
docker logs fc02b5ea83bc 查看容器的日誌
docker network inspect fc02b5ea83bc 獲取鏡像的網絡元數據
docker network ls 查看網絡
生成新的image建議都通過Dockerfile來生成
例如:
FROM ubuntu RUN apt-get update RUN apt-get install -y vimDockerfile例子
FROM ubuntu RUN apt-get update && apt-get install -y stress ENTRYPOINT ["/usr/bin/stress"] CMD []docker 命令構建行工具例子
docker network create -d bridge my-bridge # 創建自己的bridge網絡 docker rundocker創建自己的bridge網絡-d --name test3 --network my-bridge ubuntu # 創建時將默認網絡bridge鏈接到自己創建的bridge docker network connect my-bridge test1 # 將test1連接到自己創建的bridge網絡
docker pull nginx 從docker hub中下載nginx docker run --name web -d -p 80:80 nginx 運行並將端口映射到主機的80端口 然後通過ifconfig查到ip地址就能訪問了docker搭建nginx通過端口映射訪問
# 部署mysql docker run -d --name mysql -v mysql-date:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress mysql # 部署wordpress docker run -d -e WORDPRESS_DB_HOST=mysql:3306 --link mysql -p 8080:80 wordpressdocker搭建wordpress和部署
Dockerfile 語法 FROM: fROM scratch # 制作base image FROM ubuntu # 使用base image FROM ubuntu:18.04 盡量使用官方的image作為base image
LABEL:
LABEL maintainer="[email protected]"
LABEL version="1.0"
LABEL description="This is description"
Metadata不可少!
RUN:
RUN apt-get update && apt-get install -y vim \
python-dev # 反斜杠表示換行
RUN apt-get update && apt-get install -y perl \
pwgen --no-install-recommends && rm -rf \
/var/lib/apt/lists/* # 註意清理緩存
為了美觀,復雜的RUN請用反斜杠換行!避免無用分層,合並多條命令成一行!
WORKDIR:
WORKDIR /root
WORKDIR /test # 如果沒有會自動創建test目錄
WORKDIR demo
RUN pwd # 輸出應該是 /root/test/demo
用WORKDIR,不要用RUN cd!盡量使用絕對目錄!
ADD and COPY
ADD hello /
ADD test.tar.gz / # 添加到根目錄並解壓
WORKDIR /root
ADD HELLO test/ # /root/test/hello
COPY hello test/
大部分情況,copy優於ADD!ADD除了COPY還有額外功能(解壓!)
添加遠程文件/目錄請使用curl或者wget!
ENV:
ENV MYSQL_VERSION 5.6 #設置常量
RUN apt-get install -y mysql-server="${MYSQL_VERSION}" \
&& rm -rf /var/lib/apt/lists/* # 引用常量
盡量使用ENV增加可維護性
VOLUME and EXPOSE:
後面補充
CMD and ENTRYPOINT:
後面補充
RUN:執行命令並創建新的Image Layer
CMD:設置容器啟動後默認執行的命令和參數
ENTRYPOINT:設置容器啟動時運行的命令
CMD:容器啟動時默認執行的命令
如果docker run指定了其他命令,CMD命令會被忽略
如果定義了多個CMD,只有最後一個會執行
ENTRYPOINT:讓容器以應用程序或者服務的形式運行
不會被忽略,一定會執行
三種網絡結構:
docker bridge
docker none
docker host
數據持久化-方式一 docker run -d --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql 安裝並初始化mysql
docker run -d -v mysql:/var/lib/mysql --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql 指定數據存取目錄
docker volume ls 查看存在的十九畫數據庫
docker volume rm 926c67936e2e69d736b9649416c516cf38e93b4f053ee73b2dff9c1ce3148ba8 刪除數據庫
然後通過docker exec -it mysql2 /bin/bash 進入查看
數據持久化-方式二 bind mounting
docker run -d -v $(pwd):/usr/share/nginx/html -p 80:80 --name web my-nginx 也可以使用-v 然後通過地址映射進行文件同步
docker操作小技巧:不用每次執行命令都添加sudo
sudo groupadd docker sudo gpasswd -a felix docker 將當前用戶加入到組 sudo service docker restart 重啟docker服務 然後退出shell,重新連接,這回執行docker命令可以不用加上sudo
docker命令集錦