Docker基本使用

  • 2019-09-02
  • 0
  • 0

[toc]

安装docker

rm -fr /etc/yum.repos.d/local.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i 's#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo
yum install docker-ce -y

docker镜像加速

vi  /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}  

1、docker 镜像操作命令

操作 命令 例子
查看镜像列表 docker images docker images docker image ls
删除镜像 docker rmi docker image rm 镜像id镜像名:tag
导出镜像 docker save docker image save nginx:latest -o docker_nginx.tar.gz
导入镜像 docker load docker image load -i docker-centos7.4.tar.gz ​
获取镜像 docker pull docker pull tomcat
搜索镜像 docker search docker search tomcat

2、docker 容器操作命令

docker run --name test --privileged -id -p 80:80 centos:latest /usr/sbin/init
--no-trunc  列出详细信息
# 1.运行容器
docker run -d -p 80:80 nginx:latest
    run(创建并运行一个容器) 
    -d 放在后台 
    -p 端口映射 
    -v 源地址(宿主机):目标地址(容器)

# 2.运行容器
docker run -it --name centos6 centos:6.9 /bin/bash 
    -it 分配交互式的终端 
    --name 指定容器的名字 
    /bin/sh覆盖容器的初始命令

# 3.停止容器
docker stop 容器id

# 4.查看容器
docker ps  
    -a 显示所有容器
    -l 只显示最后一个
    -q 只显示容器id

# 5.删除容器
docker rm 容器id

# 6.批量删除容器
 docker rm -f `docker ps -a -q`

# 7.进入正在运行的容器(调试,排错用)
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
    docker exec -it  容器id或容器名字 /bin/bash(/bin/sh)
docker attach(使用同一个终端)离开终端先后使用ctrl+p,ctrl+q
    docker attach [OPTIONS] CONTAINER
# 8.查看容器日志
docker logs 容器id或名称

# 9.拷贝文件
docker cp 主机中的文件路径 容器id:容器路径
docker cp 容器id:容器中的文件路径 主机路径

3、docker端口映射

指定映射(docker 会自动添加一条iptables规则来实现端口映射) 
-p hostPort:containerPort ​ 
-p ip:hostPort:containerPort 多个容器都想使用80端口 
-p ip::containerPort(随机端口) ​
-p hostPort:containerPort:udp ​
-p 10.0.0.100::53/udp 使用宿主机的10.0.0.100这个ip地址的随机端口的udp协议映射容器的udp53端口 ​
-p 81:80 –p 443:443 可以指定多个-p

随机映射 ​  docker run -P (随机端口)

通过iptables来实现的端口映射

4、数据卷管理映射

4.1、挂载磁盘到本地

语法:docker run -v 宿主目录:容器挂载的目录 镜像
这时候docker会自动在对应的目录下进行挂载,如果容器里面没有宿主机对应的目录,
那么容器会自动创建对应的目录。如果没有指定宿主目录,那么会自动在/var/lib/docker/volumes/下进行挂载。

# 查看已有卷
[root@docker01 ~]# docker volume ls
DRIVER              VOLUME NAME

# 映射卷
[root@docker01 ~]# docker run -d -p 81:80 -v xiaoniao:/usr/share/nginx/html nginx:latest
5a010936f4de573abbea8351f85553b3ff08e0e5bf59d37745f5b391306dc565
[root@docker01 ~]# docker volume ls
DRIVER              VOLUME NAME
local               xiaoniao
# 创建数据容器
docker create -v 宿主目录:容器目录 --name 数据容器名字 基于的环境
# 挂载
# 继承volumes-from后面跟的容器一样的卷组
docker run --volumes-from 数据容器名字 镜像

4.3、启动一个容器 并将本地/tmp/xiaoniao/映射到容器中的/usr/share/nginx/html目录下

[root@docker01 ~]# docker run -d -p 80:80 -v /tmp/xiaoniao/:/usr/share/nginx/html nginx:latest 

4.4、多端口,多数据卷映射

例子:基于nginx启动一个容器,监听80和81,访问80,出现nginx默认欢迎首页,访问81,出现小鸟。 
[root@docker01 ~]# docker run -d -p 80:80 -p 81:81 -v /tmp/xiaoniao:/opt -v /tmp/nginx_conf/xiaoniao.conf:/etc/nginx/conf.d/xiaoniao.conf  nginx:latest 

解释:
端口映射
-p 80:80 -p 81:81 

本地目录映射到容器中
-v /tmp/xiaoniao:/opt  

本地配置文件映射到容器中
-v /tmp/nginx_conf/xiaoniao.conf:/etc/nginx/conf.d/xiaoniao.conf 

重启docker访问,容器全部退出的解决办法

方法一:在启动容器的时候指定--restart=always——常用⭐

[root@docker01 ~]# docker run --restart=always

方法二:"live-restore": true
docker server配置文件/etc/docker/daemon.json 参考

{ 
"registry-mirrors": ["http://b7a9017d.m.daocloud.io"], 
"insecure-registries":["10.0.0.11:5000"], 
"live-restore": true 
}

评论

还没有任何评论,你来说两句吧

提供支持 - 友情链接 - 衫小寨