mac 下docker使用

1.参考链接

2.Docker 架构

  • 采用了客户端-服务器(C/S)架构模式,通过远程API来管理和创建Docker容器
  • Docker容器通过Docker镜像来创建
  • 容器和镜像的关系类似于面向对象变成中的对象与类
  • Docker镜像是用于创建Docker容器的模板
  • Docker容器是独立运行的一个或一组应用
  • Docker客户端通过命令行或者其他工具使用DockerAPI与Docker的守护进程通信
  • Docker主机是一个物理或者虚拟的机器用于执行Docker守护进程和容器
  • Docker仓库适用于保存镜像
  • Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。
  • Docker Machine 是一个简化Docker安装的命令行工具,通过一个简单的命令行即可以在相应的平台安装Docker,比如Virtual Box、Digital Ocean、Mirosoft Azure。

3.安装

3.1Mac OS

3.1.1下载docker地址

https://dn-dao-github-mirror.qbox.me/docker/install/mac/Docker.dmg

3.2 linux

4.使用docker创建容器

4.1 创建nginx容器

4.1.1安装nginx镜像,并且启动

docker安装nginx有两种方式:docker pull nginx(推荐) 和通过DockerFile(不推荐)

# 查找nginx镜像
docker search nginx
# 拉取nginx官方的镜像
docker pull nginx
# 启动docker中的nginx
docker run --name webserver -d -p 80:80 nginx

启动docker中的nginx的参数说明:

  • -p 80:80:将容器的80端口映射到主机的80端口

  • --name mynginx:将容器命名为mynginx

  • -v $PWD/www:/www:将主机中当前目录下的www挂载到容器的/www

  • -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机中当前目录下的nginx.conf挂载到容器的/etc/nginx/nginx.conf

  • -v $PWD/logs:/wwwlogs:将主机中当前目录下的logs挂载到容器的/wwwlogs

4.1.2测试验证

http://localhost

4.1.3.与容器通过bash交互

docker exec -it webserver bash

修改nginx配置文件

echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

刷新链接,并且测试验证
http://localhost

远程登录docker中的mysql

查看在运行的容器

命令

docker ps 

返回效果

image.png

进入mysql服务中进行设置

命令

docker exec -it bcf6309de533 bash

返回效果

image.png

命令解析

参考地址:http://www.runoob.com/docker/docker-exec-command.html
docker exec :在运行的容器中执行命令
语法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS说明:

  • -d :分离模式: 在后台运行
  • -i :即使没有附加也保持STDIN 打开
  • -t :分配一个伪终端

5.常用命令行

5.1列出容器

docker ps:列出容器

5.1.1OPTIONS说明:

  • -a :显示所有的容器,包括未运行的。
  • -f :根据条件过滤显示的内容。
  • --format :指定返回值的模板文件。
  • -l :显示最近创建的容器。
  • -n :列出最近创建的n个容器。
  • --no-trunc :不截断输出。
  • -q :静默模式,只显示容器编号。
  • -s :显示总的文件大小。

5.1.2常用示例:

# 列出所有正在运行的容器信息
docker ps
# 列出最近创建的5个容器
docker ps -n 5
# 列出所有容器的容器编号
docker ps -a -q

5.2删除容器

docker rm :删除一个或多少容器

5.2.1OPTIONS说明:

  • -f :通过SIGKILL信号强制删除一个运行中的容器
  • -l :移除容器间的网络连接,而非容器本身
  • -v :-v 删除与容器关联的卷

5.2.2常用示例

# 强行删除容器 db01和db02
docker rm -f db01 db02
# 
docker rm -l db 
#
docker rm -v nginx01

5.3运行容器

docker run:运行容器

5.3.1OPTIONS说明:

-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;

5.3.2常用示例

# 使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest
# 使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
docker run -P -d nginx:latest
# 使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest
# 绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash

5.4 启动/停止/重新启动容器

docker start:启动一个或多个已经被停止的容器
docker stop:停止一个正在运行中的容器
docker restart:重启容器

5.4.1常用实例

# 启动
docker start 容器id
# 停止
docker strop 容器id
# 重启
docker restart 容器id

PS:

docker run 与docker start的区别:
docker run 只在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器时,只需要使用命令docker start 即可。
docker run相当于执行了两步操作:将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start)。

docker kill 和 dockerstop 有什么区别:
有区别的,kill是不管容器同不同意,我直接执行kill -9,强行终止;stop的话,首先给容器发送一个TERM信号,让容器做一些退出前必须的保护性、安全性操作,然后让容器自动停止运行,如果在一段时间内,容器还是没有停止,再进行kill -9,强行终止。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容