帮助命令

  1. docker version # 显示docker的版本信息
  2. docker info # 显示docker系统信息,包括镜像和容器的数量
  3. docker 命令 --help # 帮助命令

启动停止

  1. # 启动
  2. sudo service docker start
  3. # 重启
  4. sudo service docker restart
  5. # 停止docker
  6. sudo service docker stop

镜像操作

  1. # 列出当前镜像
  2. docker image ls docker images
  3. docker image -a 显示所有
  4. docker image -q 只显示id
  5. # 搜索镜像
  6. docker search mysql
  7. # 镜像拉取
  8. docker pull [Docker Registry地址]<仓库名>:<标签>
  9. 如: docker pull ubuntu
  10. docker pull ubuntu:16.04
  11. # 删除镜像
  12. docker image rm 名/ID
  13. docker rmi 名/ID

容器操作

  1. 运行
  2. docker run [可选参数] 镜像名 [传入的命令]
  3. 如:docker run -d -P nginx
  4. docker run -it centos /bin/bash
常用可选参数 作用
-i 表示以《交互模式》运行容器。
-d 会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器),至少要有一个前台进程,否会自动停止。
-t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
–-name 为创建的容器命名。(默认会随机给名字,不支持中文字符!!!)
-v 表示目录映射关系,即宿主机目录:容器中目录。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-p 表示端口映射,即宿主机端口:容器中端口。 比如:-p 8080:80 就是将容器中的80端口,映射到主机中的8080端口
–network=host 表示将主机的网络环境映射到容器中,使容器的网络与主机相同。每个 Docker 容器都有自己的网络连接空间连接到虚拟 LAN。使用此命令则会让容器和主机共享一个网络空间。
  1. # 查看运行中的容器
  2. docker ps
  3. # 重新启动容器
  4. docker restart[containerId]
  5. # 启动容器
  6. docker start[containerId]
  7. # 通过容器ID停止该容器
  8. docker stop [containerId]
  9. # 进入到容器内部
  10. docker exect -it [containerId] /bin/bash
  11. # 查看容器的日志
  12. docker logs -tf --tail 10 [containerId]
  13. # 查看容器进程
  14. docker top [containerId]
  15. # 删除容器
  16. docker rm [containerId]
  17. docker rm -f $(docker ps -aq) 删除所有
  1. # 获取容器的具体信息
  2. docker inspect containeId
  3. # 容器占用信息
  4. docker stats [containerId]
  1. # 从容器内拷贝文件到主机上
  2. docker cp 容器id:/home/test.java /home

容器内部命令:

  1. 容器 hostname: hostname
  2. 容器环境变量: env

端口

查看映射端口

  1. docker port CONTAINER_ID

使用 -P 参数时,Docker 会随机映射一个端口到内部容器开放的网络端口,如下开启一个 nginx 服务:

  1. docker run -d -P nginx

使用 -p(小写) 参数时,可以指定要映射的端口,并且在一个指定的端口上只可以绑定一个容器。支持的格式有:

  1. IP:HostPort:ContainerPort
  2. IP:ContainerPort
  3. HostPort:ContainerPort
  1. # 容器 80 端口 映射到宿主机的 8080
  2. docker run -d -p 8080:80 nginx

例子:mysql

  1. # 拉取镜像
  2. docker pull mysql:5.7
  3. # --name指定容器名字 -v目录挂载 -p指定端口映射 -e设置mysql参数 -d后台运行
  4. 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
  5. # 修改默认编码
  6. #创建my.conf文件
  7. vi /mydata/mysql/conf/my.conf
  8. # 复制编辑内容
  9. [client]
  10. default-character-set=utf8
  11. [mysql]
  12. default-character-set=utf8
  13. [mysqld]
  14. init_connect='SET collation_connection = utf8_unicode_ci'
  15. init_connect='SET NAMES utf8'
  16. character-set-server=utf8
  17. collation-server=utf8_unicode_ci
  18. skip-character-set-client-handshake
  19. skip-name-resolve
  20. # 设置mysql开机自启动
  21. docker update mysql --restart=always
  1. # 提交当前容器为本地镜像
  2. docker commit -a="myname" -m="add webapps" containerId myapp:1.0

参考:
https://hub.docker.com/