Docker安装及常用命令
Docker 相关概念
1. 什么是Docker
Docker
是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。
Docker
版本有
Ubuntu
、
CentOS
、
Debian
、
mac
、
Windows
Docker
像一个轻量级的虚拟机,但远比虚拟机本身占用次源少。
2. Docker Container(容器)
Docker
将宿主机隔离出来的一个个的空间。
3.Docker image (镜像)
特殊的文件系统,是对某一时刻容器关态的备份,就像
window
中
Ghost
镜像。
镜像不包含任何动态数据,基内容在构建之后也不会被改变。
4.DockerRegistry(记录中心)
是官方及第三该机构提供的镱像下载仓库,如
maven
的中央仓库,把一些常用的容器打包成镜像,开
发者
可以直接中
registry
上下载镜像。
5.Docker运行原理
操作用户可以用
Docket
客户端完成以下操作:
通过客户端从
Registry
下载镜像。(
pull
)
运行本地镜像,成为容器。(
run
)
通过
Dockerfile
文件构建新的镜像。(
build
)
docker安装
1.
由于
apt
官方库里的
docker
版本可能比较旧,所以先卸载可能存在的旧版本:
$ sudo apt-get remove docker docker-engine docker-ce docker.io
2.
更新
apt
包索引:
sudo apt-get update
3.
安装以下包以使
apt
可以通过
HTTPS
使用存储库(
repository
):
sudo apt-get install -y apt-transport-https ca-certificates curl softwareproperties-common
4.
添加
Docker
官方的
GPG
密钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
-
5.
使用下面的命令来设置
stable
存储库:
$ sudo add-apt-repository "deb [arch=amd64]https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
6.
再更新一下
apt
包索引:
$ sudo apt-get update
7.
安装最新版本的
Docker CE
:
$ sudo apt-get install -y docker-ce
8.
查看
docker
服务是否启动:
$ systemctl status docker
9.
若未启动,则启动
docker
服务:
$ sudo systemctl start docker
10.
经典的
hello world
:
$ sudo docker run hello-world
配置阿里云远程仓库
sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://8z4e1ukg.mirror.aliyuncs.com"]}EOFsudo systemctl daemon-reloadsudo systemctl restart docker
将用户
docker
用户组
sudo groupadd docker # 添加 docker 用户组sudo gpasswd -a $USER docker # 将登陆用户加入到 docker 用户组中newgrp docker # 更新用户组docker ps # 测试 docker 命令是否可以使用 sudo 正常使用
安装
portainer
可视化界面
docker volume create portainer_datadocker run -d -p 9010:9000 -v /var/run/docker.sock:/var/run/docker.sock -vportainer_data:/data portainer/portainer
切换root用户
sudo su root
安装apt
sudo apt install net-tools
安装ssh
sudo apt-get install openssh-server
docker
常用命令
查看 docker 版本 : docker --version查看安装的镜像: docker images [NAME]下载镜像: docker pull NAME[:TAG]搜索可用的 docker 镜像: docker search NAME比如获取最新的 centos 镜像: docker pull centos:latest启动容器: docker start [ 容器 ID]查看正在运行的容器: docker ps查看最近生成的容器: docker ps -l查看所有容器 ID : docker ps -a -q删除所有的容器: docker rm $(docker ps -a -q)sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://8z4e1ukg.mirror.aliyuncs.com"]}EOFsudo systemctl daemon-reloadsudo systemctl restart dockersudo groupadd docker # 添加 docker 用户组sudo gpasswd -a $USER docker # 将登陆用户加入到 docker 用户组中newgrp docker # 更新用户组docker ps # 测试 docker 命令是否可以使用 sudo 正常使用docker volume create portainer_datadocker run -d -p 9010:9000 -v /var/run/docker.sock:/var/run/docker.sock -vportainer_data:/data portainer/portainersudo su rootsudo apt install net-toolssudo apt-get install openssh-server 删除单个镜像: docker rmi [ 镜像 ID]制作镜像 (dockerfile)内置命令FROM :依赖的底层镜像MAINTAINER :指定镜像创建者ENV :设置环境变量RUN :运行 shell 命令COPY :将编译机本地文件拷贝到镜像文件系统中EXPOSE :指定监听端口ENTRYPOINT :预执行命令,创建容器并启动后才执行创建 Dockerfile 文件(文件名称必须是 Dockerfile )FROM tomcatMAINTAINER tigerCOPY scope.html /usr/local/tomcat/webapps/ROOTEXPOSE 8080/tcp执行命令生成镜像docker build [OPTIONS] PATH|URL|.OPTIONS 说明:-t : 后面标示要创建的镜像名称. : 代表 Dockerfile 所在的路径根据镜像,生产 docker 容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]OPTIONS 说明:-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;-d: 后台运行容器,并返回容器 ID ;-i: 以交互模式运行容器,通常与 -t 同时使用;-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=[]: 开放一个端口或一组端口;-p: 映射端口 8888:8080 前面为宿主机端口,后面是 tomcat 端口