docker的基本用法

1,108 阅读2分钟

引言

Docker,应用容器引擎,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

docker基于Linux开发,支持大部分linux应用,而大部分windows应用不予支持


docker及docker-compose安装

官方(aliyun image)脚本自动安装docker (适用centos、ubuntu):

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

从Docker的GitHub存储库安装Docker Compose

(适用于Ubuntu,centos切换用户后docker-compose失效)

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose  //设置权限
docker-compose --version  //检验安装是否成功

系统软件包安装

centos7 yum安装docker-compose

sudo yum install epel-release
sudo yum install -y python-pip
sudo pip install docker-compose
sudo yum upgrade python*

ubuntu18.04 apt安装docker(旧版本,bug少)

sudo apt update
sudo apt install docker.io

docker国内镜像源设置

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

docker指令

  1. docker image
docker pull [image_name:tag] //拉取镜像

docker run [image_name]   //创建新容器运行镜像

sudo docker run -ti -d –name mailtrain-v2 -p 3005:3000/tcp -p 3003:3003/tcp -p 3004:3004/tcp mailtrain/mailtrain:latest  //0.0.0.3005->3000/tcp;0.0.0.3003->3003/tcp;0.0.0.3004->3004/tcp

docker images   //显示所有docker镜像

docker rmi [image_name]  //删除镜像
  1. docker container
docker ps -a //显示所有container具体信息,包括没运行的

docker ps -q //显示正在运行的container

docker stop [container_name] //停止container运行

docker rm [container_name] //删除coontainer

docker start [container_name] //启动container

docker exec -it [container_name] /bin/bash //打开container伪终端,进入/usr/src/app/cli目录

docker cp 7bb0e258aefe:/etc/debian_version  /usr  //将container7bb0e258aefe 里/etc的debian_version文件夹拷贝至/usr

docker inspect [container_name] //检查conatiner信息

docker inspect [container_name] |grep IPAddress //查询container IP
  1. docker network
[root@docker ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
5133ec415c3c        bridge              bridge              local
f359ca4e2d39        host                host                local
8d68673c045c        none                null                local

docker network inspect 5133ec415c3c

docker-compose.yml中port设置

使用HOST:CONTAINER格式或者只是指定容器的端口,宿主机会随机映射端口。

ports:
- "3000"
- "8000:8000"
- "49100:22"
- "127.0.0.1:8001:8001"
注意:当使用HOST:CONTAINER格式来映射端口时,
如果你使用的容器端口小于60你可能会得到错误得结果,
因为YAML将会解析xx:yy这种数字格式为60进制。所以建议采用字符串格式。

docker中container彼此联系

container之间通过内部网络(端口),或链接(link)相互联系
docker中的各种服务模块尽量作为不同的image并行安装,
运行在不同的container中;不要在image中再安装服务模块,避免制造太大臃肿的docker image