首页 > 技术文章 > docker初级--常用操作

focusTech 2020-06-12 11:35 原文

vmware操作系统层的虚拟化,受本机机器的硬件资源限制,不能同时跑多个虚拟机,不能最大化利用资源。

docker占用系统资源极低,可以同时运行几百个;

社区版docker-ce免费,企业版docker-ee收费

安装

https://blog.csdn.net/b9567/article/details/105027440/

问题

解决办法

#添加docker源、
sudo echo "deb https://download.docker.com/linux/ubuntu zesty edge" > /etc/apt/sources.list.d/docker.list

#添加GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 更新
apt-get update

基本操作

查看状态

systemctl status|stop|restart docker  #状态|停止|重启

整体架构(客户端-->引擎-->镜像仓库)

常用命令

列出镜像docker images

拉取镜像docker pull centos:version

镜像仓库docker hub可能拉取较慢,配置国内镜像地址

mkdir -p /etc/docker
vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://7ie6ficu.mirror.aliyuncs.com"]
}

#重启docker
systemctl daemon-reload
systemctl restart docker

搜索镜像仓库docker search nginx

删除镜像docker rmi docker-name|docker-id

创建交互式容器

docker run -it --name c1 ubuntu /bin/bash
-i:交互式容器
-t:tty终端(分配一个终端,操作容器)
--name:指定容器名称

查看正在运行的容器docker ps

退出容器exit,交互式容器推出后停止

创建守护式容器(后台运行)

docker run -itd --name c2 ubuntu /bin/bash

进入容器

docker exec -it c3 /bin/bash

容器退出后继续运行

查看容器

docker ps -a  #历史运行过的容器
docker ps -l  #最后一次运行的容器

停止/启动容器docker start|stop docker-name

查看指定容器的详细信息docker inspect docker-name

删除容器(不能删除正在运行的容器):docker rm docker-name

文件拷贝

文件从宿主机拷贝到容器docker cp 1.txt c2:/root

文件从容器拷贝到宿主机docker cp c2:/root 1.txt

目录挂载(将宿主机的目录与容器目录建立映射关系)

在创建容器的时候指定映射关系

docker run -id --name=c4 -v /opt/:/usr/local/myyhtml ubuntu

docker进阶

docker hub的30%镜像都存在漏洞,所以在生产环境中需要自己制作容器

制作镜像两种方式

1、提交镜像docker commit container-name image-name,进入容器中完成部署后,执行docker commit可以生成新的镜像

2、docker builder构建镜像

DSL语法

制作完成后对本地镜像|容器打包,进行移植

镜像打包

# 镜像打包
docker save -o /root/myubuntu.tar image-name
# 传入其他服务器
scp myubuntu.tar 其他服务器ip:/root
# 导入镜像
docker load -i /root/myubuntu.tar

容器打包

# 容器打包
docker export -o /root/c1.tar c1
# 导入容器
docker import c1.tar myubuntu:latest

端口映射

映射本机端口和容器的端口

docker run -itd --name=t1 -p 8888:80 myubuntu /bin/bash

docker间通信

Docker中默认的三种网络分别为bridge、host和none,其中名为bridge的网络就是默认的bridge驱动网络,也是容器创建时默认的网络管理方式,配置后可以与宿主机通信从而实现与互联网通信功能,而host和none属于无网络,容器添加到这两个网络时不能与外界网络通信。

查看容器的网络使用情况

docker network inspect bridge

Error response from daemon: Get https://index.docker.io/v1/search?q=ubuntu&n=25: dial tcp: lookup index.docker.io: Temporary failure in name resolution

docker默认会调用这个文件的DNS

vim /etc/resolv.conf
nameserver 8.8.8.8

Error response from daemon: Get https://index.docker.io/v1/search?q=ubuntu&n=25: dial tcp 50.16.172.3:443: connect: connection refused

启动容易出现问题,可查看日志

docker logs -f container_name

推荐阅读