一.docker簡介
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然後發佈到任何流行的 Linux或Windows 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。
一個完整的Docker有以下幾個部分組成:
DockerClient客戶端
Docker Daemon守護進程
Docker Image鏡像
DockerContainer容器
docker架構:
Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和創建Docker容器。Docker 容器通過 Docker 鏡像來創建。容器與鏡像的關係類似於面向對象編程中的對象與類。
Docker採用 C/S架構 Docker daemon 作爲服務端接受來自客戶的請求,並處理這些請求(創建、運行、分發容器)。 客戶端和服務端既可以運行在一個機器上,也可通過 socket 或者RESTful API 來進行通信。
Docker daemon 一般在宿主主機後臺運行,等待接收來自客戶端的消息。 Docker 客戶端則爲用戶提供一系列可執行命令,用戶用這些命令實現跟 Docker daemon 交互。
二.搭建docker
1.獲取docker安裝包並安裝
2.打開docker,查看相關信息
[root@server1 docker]# systemctl start docker.service
[root@server1 docker]# docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 18.06.1-ce
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-514.el7.x86_64
Operating System: Red Hat Enterprise Linux Server 7.3 (Maipo)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 992.7MiB
Name: server1
ID: OADG:XF6V:ABNB:VH5H:EWVI:CEBS:6UEW:HTSC:WNDB:EZZC:IUSA:XQ5Y
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
注意:docker初始化會刷新防火牆,不要重啓防火牆防止後面的端口影射出現問題
三.運行2048小遊戲
1導入2048鏡像
[root@server1 ~]# ls
docker game2048.tar
[root@server1 ~]# docker load -i game2048.tar
011b303988d2: Loading layer [==================================================>] 5.05MB/5.05MB
36e9226e74f8: Loading layer [==================================================>] 51.46MB/51.46MB
192e9fad2abc: Loading layer [==================================================>] 3.584kB/3.584kB
6d7504772167: Loading layer [==================================================>] 4.608kB/4.608kB
88fca8ae768a: Loading layer [==================================================>] 629.8kB/629.8kB
Loaded image: game2048:latest
2.查看是否導入成功
[root@server1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
game2048 latest 19299002fdbe 2 years ago 55.5MB
3.創建容器
[root@server1 ~]# docker run -d -p 80:80 --name vm1 game2048
##-d是打入後臺,–name表示爲這個容器起了一個名字爲vm1 前面的80是server1這個物理機的端口。後面的80是容器的端口
a5d01a3defddac9ac1913affd4618aee09a07400ffdb087da55791d2b1899451
4.查看容器狀態
[root@server1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a5d01a3defdd game2048 "/bin/sh -c 'sed -i …" 7 seconds ago Up 6 seconds 0.0.0.0:80->80/tcp, 443/tcp vm1
5.測試:
在瀏覽器訪問172.25.31.1
四.docker常用命令
docker load -i game2048.tar 導入鏡像
docker run -d -p 80:80 --name vm1 game2048 創建容器,其中以game2048爲鏡像,添加端口映射
docker ps ##查看可用容器
docker ps -a 查看所有容器,包括可用的和沒有正常退出容器導致容器不可用的
docker attach vm1 進入容器
docker top vm1 查看容器進程
docker logs vm1 查看容器指令輸出
docker inspect vm1 查看容器詳細信息
docker status vm1 查看容器的資源使用率
docker diff vm1 查看容器的修改
docker stop vm1 停止容器
docker start vm1 啓動容器
docker kill vm1 強制停止容器
docker rm -f vm1 刪除容器,後面也可直接輸入容器id
docker rmi 刪除鏡像
ctrl+pq 結束docker與內核的交互式界面,但不停止容器,在後臺運行的
ctrl+d 直接結束容器,釋放內存,但是鏡像還在,只是在可用容器裏面查不到,但是在所有容器裏面還是可以查看到容器信息的