Docker 基礎知識

Docker

Docker 是什麼

Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何接口。html

鏡像是一種輕量級、可執行的獨立軟件包,它包含運行某個軟件所需的全部內容,包括代碼、運行時、庫、環境變量和配置文件。mysql

容器是鏡像的運行時實例 - 實際執行時鏡像會在內存中變成什麼。默認狀況下,它徹底獨立於主機環境運行,僅在配置爲訪問主機文件和端口的狀況下才執行此操做。linux

Docker和虛擬機比較

架構

docker 基本命令

docker安裝nginx

yum install docker

查看docker版本redis

docker version

查看docker信息sql

docker info

docker安裝成功測試docker

docker run hello-world

docker採用C/S的模式shell

Docker鏡像:Docker鏡像運行後變成容器json

Docker Registry: Registry是Docker鏡像的中央倉庫centos

查看docker全部鏡像

docker images

鏡像鏡像加速

修改 /etc/docker/daemon.json, 改成須要加速的倉庫,建議使用阿里雲鏡像加速,好比:

{
  "registry-mirrors": ["https://av57nxi9.mirror.aliyuncs.com"]
}

而後重啓doker

sudo systemctl daemon-reload
sudo systemctl restart docker

查看容器日誌

能夠不加 -f

docker logs -f 4871c4b47f83

進入容器內部

docker exec -it redis /bin/bash

退出容器

ctrl+D

nginx

拉取鏡像

docker pull nginx

運行nginx

docker run --name some-nginx -d -p 8080:80 nginx

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

--name: 生成的容器名字

-d: 後臺運行

-p:映射端口(映射外部端口:容器內端口)

運行docker並修改靜態文件目錄

docker run -p 8081:80 --name mynginx -v /home/oskyhang/config/nginx/html:/usr/share/nginx/html:ro --privileged=true -d  nginx

--privileged=true : centos7中安全模塊selinux把權限禁掉了,加上此命令能夠開啓訪問權限,否則會替換失敗

docker run -p 80:80 --name mynginx -v /home/data/nginx/html:/usr/share/nginx/html:ro -v /home/data/nginx/conf/extra/:/etc/nginx/extra -v /home/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/data/nginx/logs:/var/log/nginx --privileged=true -d  nginx

刪除image

先rm正在運行或中止的container,而後再remove鏡像,不然會出現下面的異常

Error response from daemon: conflict: unable to delete fce289e99eb9 (must be forced) - image is being used by stopped container 0fcb6b830ca2

[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/hello-world latest fce289e99eb9 10 days ago 1.84 kB
docker.io/nginx latest 7042885a156a 13 days ago 109 MB

[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4e83ea93731a hello-world "/hello" 35 seconds ago Exited (0) 35 seconds ago hungry_volhard
0fcb6b830ca2 hello-world "/hello" 17 minutes ago Exited (0) 17 minutes ago thirsty_pasteur

[root@localhost ~]# docker rm 4e83ea93731a
4e83ea93731a
[root@localhost ~]# docker rm 0fcb6b830ca2
0fcb6b830ca2

[root@localhost ~]# docker rmi fce289e99eb9
Untagged: docker.io/hello-world:latest
Untagged: docker.io/hello-world@sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
Deleted: sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e
Deleted: sha256:af0b15c8625bb1938f1d7b17081031f649fd14e6b233688eea3c5483994a66a3

建立mysql鏡像

docker create --name mymysql -v /data/mysql-data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root
mymysql:5.6

docker的好處

  1. 節約資源
  2. 鏡像打包後,在其餘環境運行不會出現異常
相關文章
相關標籤/搜索