帮助命令
docker version # 显示docker的版本信息docker info # 显示docker系统信息,包括镜像和容器的数量docker 命令 --help # 帮助命令
启动停止
# 启动sudo service docker start# 重启sudo service docker restart# 停止dockersudo service docker stop
镜像操作
# 列出当前镜像docker image ls 或 docker imagesdocker image -a 显示所有docker image -q 只显示id# 搜索镜像docker search mysql# 镜像拉取docker pull [Docker Registry地址]<仓库名>:<标签>如: docker pull ubuntu或 docker pull ubuntu:16.04# 删除镜像docker image rm 名/ID或 docker rmi 名/ID
容器操作
运行docker run [可选参数] 镜像名 [传入的命令]如:docker run -d -P nginx 或docker run -it centos /bin/bash
| 常用可选参数 | 作用 |
|---|---|
| -i | 表示以《交互模式》运行容器。 |
| -d | 会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器),至少要有一个前台进程,否会自动停止。 |
| -t | 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。 |
| –-name | 为创建的容器命名。(默认会随机给名字,不支持中文字符!!!) |
| -v | 表示目录映射关系,即宿主机目录:容器中目录。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。 |
| -p | 表示端口映射,即宿主机端口:容器中端口。 比如:-p 8080:80 就是将容器中的80端口,映射到主机中的8080端口 |
| –network=host | 表示将主机的网络环境映射到容器中,使容器的网络与主机相同。每个 Docker 容器都有自己的网络连接空间连接到虚拟 LAN。使用此命令则会让容器和主机共享一个网络空间。 |
# 查看运行中的容器docker ps# 重新启动容器docker restart[containerId]# 启动容器docker start[containerId]# 通过容器ID停止该容器docker stop [containerId]# 进入到容器内部docker exect -it [containerId] /bin/bash# 查看容器的日志docker logs -tf --tail 10 [containerId]# 查看容器进程docker top [containerId]# 删除容器docker rm [containerId]docker rm -f $(docker ps -aq) 删除所有
# 获取容器的具体信息docker inspect containeId# 容器占用信息docker stats [containerId]
# 从容器内拷贝文件到主机上docker cp 容器id:/home/test.java /home
容器内部命令:
容器 hostname: hostname容器环境变量: env
端口
查看映射端口
docker port CONTAINER_ID
使用 -P 参数时,Docker 会随机映射一个端口到内部容器开放的网络端口,如下开启一个 nginx 服务:
docker run -d -P nginx
使用 -p(小写) 参数时,可以指定要映射的端口,并且在一个指定的端口上只可以绑定一个容器。支持的格式有:
- IP:HostPort:ContainerPort
- IP:ContainerPort
- HostPort:ContainerPort
# 容器 80 端口 映射到宿主机的 8080docker run -d -p 8080:80 nginx
例子:mysql
# 拉取镜像docker pull mysql:5.7# --name指定容器名字 -v目录挂载 -p指定端口映射 -e设置mysql参数 -d后台运行sudo docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7# 修改默认编码#创建my.conf文件vi /mydata/mysql/conf/my.conf# 复制编辑内容[client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld]init_connect='SET collation_connection = utf8_unicode_ci'init_connect='SET NAMES utf8'character-set-server=utf8collation-server=utf8_unicode_ciskip-character-set-client-handshakeskip-name-resolve# 设置mysql开机自启动docker update mysql --restart=always
# 提交当前容器为本地镜像docker commit -a="myname" -m="add webapps" containerId myapp:1.0
