测试环境为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