docker基本

安裝(centos):

Docker 運行在 CentOS 7 上,要求系統爲64位、系統內核版本爲 3.10 以上。
Docker 運行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系統爲64位、系統內核版本爲 2.6.32-431 或者更高版本。php

 

yum install epel-release
yum install -y docker-io

  

一.docker自身命令

docker info	// 查看信息
docker version	//查看版本
service docker restart/start/stop/reload

  

二.docker鏡像命令

docker build --rm=true . 構建鏡像
docker pull ${IMAGE} 安裝鏡像
docker images 顯示已經安裝的鏡像
docker images --no-trunc 顯示已經安裝鏡像的詳細內容
docker rmi ${IMAGE_ID} 刪除指定鏡像
docker save -o ${要保存的文件名} ${要保存的鏡像} //保存鏡像爲文件
docker load --input ${文件} 或者 docker load < ${文件} //載入鏡像
docker images|grep none|awk '{print $3 }'|xargs docker rmi //刪除沒有標籤的鏡像
docker rmi $(docker images | awk '/^<none>/ {print $3}')

  

三.docker容器命令

docker run 運行容器
docker ps 顯示正在運行的容器
docker ps -a 顯示全部的容器
docker ps -l 顯示最近建立的容器
docker stop ${CID} 中止指定容器
docker start ${CID} 啓動指定容器
docker restart ${CID} 重啓指定容器
docker stop docker ps -q 中止全部正在運行的容器
docker rm ${CID} 刪除指定容器
docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${CID} 顯示指定容器的IP
docker attach ${CID} 進入容器
docker exec -it ${CID} /bin/bash 進入容器打開一個shell,在容器中exit後,容器不會中止
docker commit ${CID} 新的鏡像名稱 //保存對容器的修改成新的鏡像
docker export ${CID或名稱} > ${導出文件名} //導出容器爲鏡像
docker load < ${導入文件名} //導入文件爲鏡像

  

四.運行及中止容器

1.docker run -p80:80 --name nginx -v /data:/usr/share/nginx/html -v /docker/nginx/conf.d:/etc/nginx/conf.d --privileged=true -d nginx -g "daemon off;"html

-d爲後臺運行
-p爲宿主機端口和容器端口的映射
-v爲宿主機目錄和容器目錄的映射
--privileged 爲容器內的root擁有真正的root權限
--name 容器名稱,自定義
nginx 爲鏡像名稱mysql

2.中止容器
docker stop ${CID/name}nginx

3.啓動容器
docker stop ${CID/name}sql

3.重啓容器
docker restart ${CID/name}docker

 

五.vsftpd

1.shell

docker pull fauria/vsftpd

  

2.啓動容器apache

docker run -d -v /data:/home/vsftpd \
-p 20:20 -p 21:21 -p 21100-21110:21100-21110 \
-e FTP_USER=USERNAME -e FTP_PASS=PASSWORD \
-e PASV_ADDRESS=127.0.0.1 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \
--name vsftpd --restart=always fauria/vsftpd

  

 

六.製做一個centos的apache+php5.6的鏡像

1.拉取centos官方6.9版本
docker pull centos:6.9centos

2.啓動centosbash

docker run --net=host -d -name centos6.9 centos:6.9

  

--net=host是讓容器使用宿主機的網絡環境

3.安裝apache和php5.6,此處略去;
在容器內修改httpd.conf,增長

Include vhosts/*.conf

  


在/etc/httpd/下新建vhosts文件夾

4.將容器保存爲新的鏡像
docker commit centos6.9 centos6-apache2-php5.6

5.以新鏡像來啓動容器

docker run -v /www/site1:/var/www/html -v /httpd/vhosts:/etc/httpd/vhosts -p 80:80 --name apache -d -i -t centos6-apache2-php5.6 /bin/bash

  

注:
-v /httpd/vhosts:/etc/httpd/vhosts 是將apche的配置文件放到宿主機的/httpd/vhosts

在/httpd/vhosts咱們新建一個site.conf

<VirtualHost *:80>
DocumentRoot /var/www/html/public
</VirtualHost>

  

七.mysql

1.拉取mysql5.6.35

docker pull mysql:5.6.35

  

2.啓動鏡像

docker run --name mysql5.6 -p 3306:3306 -v /mysql/datadir:/var/lib/mysql -v /mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=密碼 -d mysql:5.6.35

  

-v /mysql/datadir:/var/lib/mysql 將數據文件放入宿主機目錄/mysql/datadir下

-v /mysql/conf.d:/etc/mysql/conf.d 將配置文件放入宿主機目錄/mysql/conf.d下

在宿主機上創建文件/mysql/conf.d/my.cnf

[mysqld]
slow_query_log = 1

  

八.一些問題

1.vsftpd在過一個階段後狀態變爲dead,沒法刪除,只能強制刪除

docker rm -f $(docker ps -a -q -f status=dead)

  

2.製做的新鏡像centos6-apache2-php5.6,在每次運行容器後,還須要進入容器去啓動apache,咱們在容器中新建一個腳本文件/init/httpd.sh

#! /bin/bash
/etc/init.d/httpd start
/bin/bash

  

賦予執行權限

chmod +x /init/httpd.sh

  

保存容器爲新鏡像

docker commit centos centos6-apache2-php5.6

  

運行一個容器

docker run -p 8010:80 -itd -v /www/phpmyadmin:/var/www/html --name phpmyadmin2 centos6-apache2-php5.6  /init/httpd.sh

  

/init/httpd.sh 這是鏡像中的腳本文件

相關文章
相關標籤/搜索