測試環境爲Macmysql
docker-machine create --driver virtualbox default
這就在 VirtualBox 中建立了一臺新的default
虛擬機。
該命令還會在~/.docker/machine/machines/default
目錄下生成一個 docker machine 的配置文件。只需執行一次create
命令,而後可使用docker-machine
命令來開啓,中止,查詢並管理虛擬機。git
$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM default * virtualbox Running tcp://192.168.99.101:2376
default
虛擬機的環境變量$ docker-machine env default export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.99.101:2376" export DOCKER_CERT_PATH="/Users/mary/.docker/machine/machines/default" export DOCKER_MACHINE_NAME="default" # Run this command to configure your shell: # eval "$(docker-machine env default)"
docker-machine ssh default
也能夠在宿主機上經過ssh鏈接github
ssh docker@192.168.99.100
user: docker pass: tcuser
在/etc/docker/daemon.json添加如下配置,修改保存後重啓 Docker 以使配置生效sql
{ "registry-mirrors": ["https://registry.docker-cn.com"] }
docker@default:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE hub.c.163.com/library/tomcat latest 72d2be374029 3 months ago 292MB
運行docker鏡像,將docker容器的8080端口映射到宿主機的8888端口上docker
docker run -i -t -p 8888:8080 72d2be374029
docker rmi ed9c93747fe1
若鏡像有運行的容器則沒法刪除shell
docker@default:~$ docker psjson
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1f68cb2ef5ee 72d2be374029 "catalina.sh run" 48 seconds ago Up 47 seconds 0.0.0.0:8888->8080/tcp modest_goldwasser 8409934c431d 72d2be374029 "catalina.sh run" 14 minutes ago Up 14 minutes 0.0.0.0:8088->8080/tcp practical_shirley
docker exec -i -t 1f68cb2ef5ee /bin/bash
docker stop --time=20 container_name
docker stop命令執行的時候,會先向容器中PID爲1的進程發送系統信號SIGTERM,而後等待容器中的應用程序終止執行,若是等待時間達到設定的超時時間,或者默認的10秒,會繼續發送SIGKILL的系統信號強行kill掉進程。在容器中的應用程序,能夠選擇忽略和不處理SIGTERM信號,不過一旦達到超時時間,程序就會被系統強行kill掉,由於SIGKILL信號是直接發往系統內核的,應用程序沒有機會去處理它。在使用docker stop命令的時候,惟一能控制的是超時時間.tomcat
docker kill --signal=SIGINT container_name
與docker stop命令不同的地方在於,docker kill沒有任何的超時時間設置,它會直接發送SIGKILL信號,以及用戶經過signal參數指定的其餘信號。bash
docker stop命令,更相似於Linux系統中的kill命令,兩者都是發送系統信號SIGTERM。而docker kill命令,更像是Linux系統中的kill -9或者是kill -SIGKILL命令,用來發送SIGKILL信號,強行終止進程。服務器
docker ps
命令能夠查看容器的CONTAINER ID、NAME、IMAGE NAME、端口開啓及綁定、容器啓動後執行的COMMNAD。常常經過ps來找到CONTAINER_ID。
docker ps
默認顯示當前正在運行中的container
docker ps -a
查看包括已經中止的全部容器
docker ps -l
顯示最新啓動的一個容器(包括已中止的)
sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' 1f68cb2ef5ee
docker logs 1f68cb2ef5ee
跟蹤日誌,相似 tail -f xxx.log 能夠經過ctrl+c
退出查看日誌
docker logs -f 1f68cb2ef5ee
docker@default:~$ docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 1f68cb2ef5ee modest_goldwasser 0.13% 71.8MiB / 995.7MiB 7.21% 828B / 0B 1.2MB / 0B 41 8409934c431d practical_shirley 0.13% 69MiB / 995.7MiB 6.93% 648B / 0B 69.6kB / 0B 43
docker inspect 1f68cb2ef5ee
docker rm e6dd317561da
能夠經過參數 -f 強制刪除運行中的容器。
docker rm 'sudo docker ps -a -q'
docker ps命令會列出全部運行的容器,-a表示列出全部容器,-q表示只須要返回容器的ID
## 建立mysql本地存儲目錄 mkdir -p ~/mysql/data docker run -p 3306:3306 --name mysql -v ~/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d hub.c.163.com/library/mysql:5.6
-p 3306:3306 是將docker 的3306端口映射到本機3306 端口
-v ~/mysql/data:/var/lib/mysql 是將docker的/var/lib/mysql 文件夾映射到本機的/mysql/data
-e MYSQL_ROOT_PASSWORD=123456 輸入密碼,mysql原始密碼爲123456
Mysql官方提供了安裝Mysql的Dockerfile,地址https://github.com/mysql/mysql-docker,這裏選擇8.0版本,一共三個文件
在default虛擬機上的docker用戶目錄下新建一個文件夾mysql,而後將這三個文件放在mysql文件夾下。進入mysql文件夾,執行如下命令便可構建一個新的鏡像。
sudo docker build -t="test/mysql" .
build成功後使用docker images命令便可插件鏡像
docker@default:~/mysql8$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE test/mysql latest 5320750e685d 2 hours ago 295MB
構建鏡像後便可經過docker run命令來啓動,須要在啓動參數中設置mysql的密碼。
docker run -e MYSQL_ROOT_PASSWORD=123456 5320750e685d