Docker 安裝卸載及經常使用命令

Docker安裝卸載及經常使用命令

官方手冊請點擊 > 官方安裝手冊

學習請點擊 > 理論知識 

CentOS 7.6.1810 安裝步驟以下:

 1   $ sudo yum install -y yum-utils \     # 安裝依賴  2   device-mapper-persistent-data \  3   lvm2  4   
 5    $ sudo yum-config-manager \         # 安裝配置管理  6   --add-repo \  7   https://download.docker.com/linux/centos/docker-ce.repo
 8 
 9   $ sudo yum-config-manager --enable docker-ce-nightly 10   $ sudo yum-config-manager --enable docker-ce-test 11 
12   $ sudo yum install docker-ce docker-ce-cli containerd.io 13 
14   $ sudo systemctl start docker       # 啓動docker 15   $ sudo systemctl status docker      # 查看docker狀態 16   $ sudo docker run hello-world        # 運行hello-world 17   $ sudo docker images hello-world 18 
19   $ sudo docker run hello-world       # 使用hello-world測試安裝是否成功 20 
21   $ sudo systemctl enable docker        # 開機啓動

 卸載docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine \
           docker-ce
$ sudo rm -rf /var/lib/docker

 

docker經常使用指令

最經常使用的docker客戶端:docker,也可經過REST API與服務器通訊;html

安裝compose(Docker-Compose是一個能夠自動化的腳本工具。)python

 

sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

vim docker-compose.yml
wordpress:
    image: wordpress
    ports:
        - "8022:80"
    environment:
        WORDPRESS_DB_PASSWORD: <passwd>
    links:
        - wordpress_mysql:mysql
    container_name: wordpress_wordpress
 
wordpress_mysql:
    image: mysql
    environment:
        MYSQL_ROOT_PASSWORD: <passwd>
    container_name: wordpress_mysql
 
docker-compose -f docker-compose.yml up -d

 

 systemctl status docker.service                    # 查看docker狀態
systemctl daemon-reload                          # 重啓docker daemon
systemctl restart docker.service                 # 重啓docker服務
docker -H 192.168.1.2 info                       # -H參數可與遠程服務器通訊 vim /etc/systemd/system/multi-user.target.wants/docker.service   # 默認配置下,Docker daemon 只能響應來自本地 Host 的客戶端請求;容許遠程客戶端請求,須要在配置文件中打開 TCP 監聽

ExecStart/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0
docker run -d -p 80:80 httpd        # 啓動 httpd 容器,並將容器的80端口映射到 host 的80端口
docker run -d -p 8080:80 httpd       # 8080是host端口,80是images端口
docker images                # 查看下載到本地的鏡像 docker images httpd             # 查看httpd鏡像信息 docker ps 或者 docker container ls       # 顯示當前運行容器

CLI或API啓動、中止、移動或刪除容器mysql

docker pull                  # 從Registry下載鏡像 docker pull hello-world             # 用來驗證docker是否安裝成功 docker pull centos                # 下載centos base鏡像 docker images centos               # 查看鏡像信息
docker run                   # 下載鏡像並啓動容器 docker run hello-world                           # 運行hello-world docker run centos pwd              # 直接運行命令 docker run -it centos                # 啓動並進入 CentOS 容器(互動模式) docker run haproxy                # 可研究負載均衡軟件HAProxy docker run django                # 學習使用django開發python web應用 docker run -it centos                    # 運行容器。(-it以交互模式進入容器) docker run -it 22d31cc52b3e            # 對鏡像進行調試 docker run centos-nmap:v1.0 yum install -y nmap  # 爲鏡像安裝nmap
docker start ContainerID               # 啓動容器 docker ps                           # 查看運行的容器,並得到names docker commit names mycentos              # 建立爲新鏡像(官方不建議) docker run -tdi --privileged centos init       # 其中centos爲鏡像,不是名稱 docker build -t centos-vi.                 # 建立新鏡像,官方推薦,-t命名,命令末尾的.指明build context爲當前目錄。 docker build --no-cache -t mycentos          # 構建鏡像時不使用緩存 docker history mycentos                  # 顯示鏡像的構建歷史 docker rmi debian:tag                 # 刪除host中的鏡像,只有最後一個tag被刪除才真被刪除 docker rm containerID                 # 刪除container docker search httpd                   # 搜索hub中的鏡像 docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q )  # 查詢依賴 docker ps -a                          # 查看全部Container
docker tag mycentos mycentos:0.0.1            # 給鏡像打tag
docker login -u 13366969672             # 登陸docker hub docker tag httpd 13366969672/httpd         # 修改鏡像的registry docker push 13366969672/httpd               # 上傳鏡像至docker hub

搭建本地registry說明,請點擊我linux

docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2  # 運行本身的registry docker tag 133/httpd:v0.1 hostname:5000/133/httpd:v0.1            # 重命名鏡像使之與registry匹配 docker push hostname:5000/133/httpd:v0.1                     # 上傳鏡像至本地registry docker pull hostname:5000/133/httpd:v0.1                    # 從本地registry下載鏡像 docker images hostname:5000/133/httpd:v0.1                   # 查看鏡像

registry安全傳輸https特性:請點擊我 git

docker run -d centos /bin/bash -c "while true; do sleep 1;done"      # 後臺長期運行容器 docker stop fe39cc2ccc8b                             # 中止一個容器 docker run --name "my_http_server" -d httpd                   # 啓動容器並命名爲my_http_server,-d爲後臺運行
docker run -d centos /bin/bash -c "while true; do sleep 1; echo I_am_in_container;done" # 獲取長ID docker attach 長ID                                         # 進入容器命令終端,ctrl +p or +q退出 docker exec -it ID bash                                      # 進入容器命令終端 docker exec -it <container> bash|sh                                  # 經常使用格式,exit退出
docker logs -f ID                                               # 查看啓動命令的輸出
docker (start stop kill restart pause) ContainerID                        # 啓動、中止、殺死、重啓、暫停容器 docker stop $(docker ps -a -q)                                    # 中止全部container docker rm $(docker ps -a -q)                                # 刪除全部container docker rm -v $(docker ps -aq -f status=exited)                            # 刪除全部退出的container docker rmi $(docker images -q)                                    # 刪除全部images docker run -d --restart=always httpd                                # 重啓容器,stop或kill的不重啓 docker run -d --restart=failure:3 httpd                              # 重啓容器最多3次 docker pause names                                           # 暫停容器 docker unpause names                                          # 恢復運行

 

docker create                                  # container處於created狀態
docker start                                  # 後臺啓動容器
docker run                                    # 是create和start的組合

 

docker run -m 200M --memory-swap=300M centos                        # 設置內存+swap進行限額,默認沒有限制;只有內存,沒有內存+swap時,默認後者是兩倍 docker run -it -m 200M --memory-swap=300M progrium/stress --vm 1 --vm-bytes 280M  # images對容器進行壓力測試

 

docker run --name "container_A" -c 1024 centos                 # 設置CPU share docker run --name container_A -it -c 1024 progrium/stress --cpu 1 docker run --name container_B -it -c 512 progrium/stress --cpu 1      # 進行壓力測試,使用top查看

 

docker run -it --name container_A --blkio-weight 600 centos docker run -it --name container_B --blkio-weight 300 centos         # 設置blkio-weight,默認500,磁盤的讀寫帶寬

bps 是 byte per second,每秒讀寫的數據量。iops 是 io per second,每秒 IO 的次數
docker run -it --device-write-bps /dev/sda:30M centos            # 限制容器/dev/sda的速率爲30M/s time dd if=/dev/zero of=test.out bs=1M count=800 oflag=direct       # 測試硬盤讀寫

 

cgroup 實現資源限額, namespace 實現資源隔離( 六種資源:Mount、UTS、IPC、PID、Network 和 User )github

docker run -it --cpu-shares 512 progrium/stress -c 1 docker ps                          # 查看短ID ls /sys/fs/cgroup/cpu/docker/短ID Tab          # 查看cpu.shares設置 /sys/fs/cgroup/memory/docker/短ID Tab /sys/fs/cgroup/blkio/docker/短ID Tab

 

docker run -h myhost -it centos                # 設置容器的主機名

 

docker network ls              # 查看docker網絡 docker run -it --network=none centos   # 容器指定使用none網絡(什麼都沒有的網絡) docker run -it --network=host centos   # 指定host網絡,配置與主機徹底一致,使用ip l yum install bridge-utils          # 安裝brctl brctl show                   # 查看網橋 docker network inspect bridge       # 查看網橋配置信息

 

user-defined 網絡驅動:bridge, overlay 和 macvlan。overlay 和 macvlan 
docker network create --driver bridge my_net                             # 建立默認的bridge網絡 docker network inspect my_net                                     # 查看剛建立網橋 docker network create --driver bridge --subnet 10.113.0.0/24 --gateway 10.113.0.1 my_net   # 爲本身建立的網橋指定網段,只有使用 --subnet 建立的網絡才能指定靜態 IP docker run -it --network=my_net centos                                 # 使用新的網絡 docker run -it --network=my_net --ip 10.113.0.2 centos                       # 配置靜態ip地址 ip r                                                    # 查看路由信息 sysctl net.ipv4.ip_forward                                      # 查看轉發是否啓用,1爲啓用 iptables-save                                              # 查看防火牆 docker network connect my_net centos短ID                                # 爲centos添加一塊my_net網卡

 

docker run -it --network=my_net2 --name=bbox1 busybox docker run -it --network=my_net2 --name=bbox2 busybox                        # 爲容器命名,並實現網絡通
docker DNS 有個限制:只能在 user-defined 網絡中使用

docker run -it --network=container:web1 centos                   # 經過--network=container:web1 指定 jointed 容器爲 web1 dcoker exec -it web1 bash ip a                                            # 查看web1的網絡 35章 joined容器能夠使兩個或多個容器共享一個網絡棧,共享網卡和配置信息,joined 容器之間能夠經過 127.0.0.1 直接通訊 docker run -it --network=container:web1 mycentos                # 指定用joined容器 iptables -t nat -S                                   # 查看防火牆NAT配置 tcpdump -i docker0 -n icmp                              # 監控網卡數據包 docker port 8a6d08d05557                               # 查看端口映射 docker run -d -p 80:80 -v ~/htdocs:/usr/local/apache2/htdocs httpd       # 將$HOME/htdocs mount到容器上 docker inspect containerID                              # 查看容器信息 docker volume ls                                     # 查詢volume name docker volume inspect 'volume name'                         # 查看volume docker cp /home/index.html containerID:/usr/local/apache2/htdocs        # 容器與host之間拷貝數據 volume container 是專門爲其餘容器提供 volume 的容器 docker create --name vc-data /home/jinbian/var/vc-data:/usr/local/httpddata -v /var/useful/vc-data mycentos # 建立volume container docker inspect vc-data                                                   # 查看volume container docker run --name web1 -d -p 80 --volumes-from vc-data httpd                              # 容器啓動並使用vc-data docker volume ls                                                       # 查看數據 docker volume rm id                                                        # 刪除數據

 

指令導圖web

Docker 導圖學習

 

相關文章
相關標籤/搜索