Docker - 安装和常用命令

时间 2019/7/7 9:36:18 加载中...

简介

Docker是一个容器引擎,使用Docker可以快速的部署你的程序
比如,我要在服务器上安装一个 nginx。我们不用之前的安装方法,而是用 Docker 安装。

先在服务器上安装上Docker,然后,执行如下命令,你的nginx就安装好了。

  1. docker run -d -p 91:80 nginx

然后,你就可以通过 服务器地址:91 来访问 nginx。(前提:91端口已打开的)

这就是 Docker 的快速部署。

如果你安装过系统,那么你应该听过 Ghost,我们把现有的操作系统生成一个镜像文件,
那么安装的时候,直接通过这个 Ghost 文件安装即可。

Docker也一样,各种软件都有对应的 Docker 镜像,安装的时候,直接通过镜像安装即可。

Docker的安装

CentOS下的安装

首先我们要有一个CentOS系统,可以是买的阿里云或其它服务器。也可以是自己用VM虚拟的一台CentOS。

CentOS需要是 CentOS 7 版本,内核版本高于 3.10。查看内核版本的命令 uname -r

检查是否安装:

Docker安装后是以服务的形式存在的,所以看看有没有Docker服务即可。或直接看版本。
systemctl list-units | grep docker

  1. [root@localhost ~]# docker version
  2. Client:
  3. Version: 18.09.7
  4. API version: 1.39
  5. Go version: go1.10.8
  6. Git commit: 2d0083d
  7. Built: Thu Jun 27 17:56:06 2019
  8. OS/Arch: linux/amd64
  9. Experimental: false
  10. Server: Docker Engine - Community
  11. Engine:
  12. Version: 18.09.7
  13. API version: 1.39 (minimum version 1.12)
  14. Go version: go1.10.8
  15. Git commit: 2d0083d
  16. Built: Thu Jun 27 17:26:28 2019
  17. OS/Arch: linux/amd64
  18. Experimental: false

如果没有安装那么可以安装了,安装又分为:
1、在线安装(通过注册 Docker 仓库)
2、离线安装(下载 Docker 安装包)

在线安装

先安装必要的包

  1. $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

设置yum源,安装Docker稳定版本的仓库

  1. #阿里云来源(安装会快些)
  2. sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  3. #官方来源
  4. $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装

  1. #安装最新版
  2. sudo yum -y install docker-ce docker-ce-cli containerd.io
  3. #安装指定版本
  4. sudo yum -y install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

列举版本

  1. yum list docker-ce --showduplicates | sort -r

启动Docker & 开机启动

  1. $ sudo systemctl start docker
  2. $ sudo systemctl enable docker

查看Docker进程

  1. [root@localhost ~]# ps -ef | grep docker
  2. root 2444 1 0 20:02 ? 00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
  3. root 2575 1002 0 20:05 pts/0 00:00:00 grep --color=auto docker

CentOS下的卸载

$ sudo yum remove docker docker-common docker-selinux docker-engine

加速镜像源

不加速镜像源,下载镜像时,会特别慢。

新增一个 daemon 文件
vi /etc/docker/daemon.json

内容如下:

  1. {
  2. "registry-mirrors": ["https://m9r2r2uj.mirror.aliyuncs.com"]
  3. }

可以去阿里云登录自己的帐号,查看属于自己专属的加速地址。

重启docker

  1. sudo systemctl daemon-reload
  2. sudo systemctl restart docker

他山之石:

七牛云镜像中心
https://kirk-enterprise.github.io/hub-docs/#/user-guide/mirror

命令

在安装好 Docker 之后,下面要做的就是下载 Docker Hub 上现有的镜像。
然后,基于现有的镜像来新建容器,而容器就是我们最终要使用的东西。

关于 镜像容器 的相关命令如下:

查询放在 Docker Hub 上的Java镜像

docker search java

下载镜像(下载特定版本,使用冒号的形式)

docker pull java 下载的是最新版本
docker pull java:8 下载的java8.0

列出镜像

  1. #方法1
  2. docker images
  3. #方法2
  4. docker image ls
  5. #根据仓库名列出镜像
  6. docker images ubuntu
  7. gl>[root@localhost ~]# docker images ubuntu
  8. REPOSITORY TAG IMAGE ID CREATED SIZE
  9. ubuntu latest 4c108a37151f 2 weeks ago 64.2MB
  10. gl>[root@localhost ~]# docker images demo
  11. REPOSITORY TAG IMAGE ID CREATED SIZE
  12. demo latest f6df9c11fbb9 20 hours ago 670MB

删除镜像

docker rmi 7123ec940c88

新建并启动容器

例1

  1. #基于nginx镜像启动一个容器,容器的80端口对应Host主机的91端口
  2. docker run -d -p 91:80 nginx

docker run 命令可以新建并启动一个容器
参数:
-d 表示后台运行
-P 表示随机端口映射
-p 指定端口映射

-p可以使用的形式如下:
-p ip:hostPort:containerPort
-p ip::containerPort
-p hostPort:containerPort
-p containerPort
-network 指定网络模式

nginx 表示基于的是 nginx 镜像而启动的容器。

例2

  1. #基于ubuntu镜像启动一个容器,启动后要和ubuntu交互,使用其bash命令。
  2. docker run -it --rm ubuntu bash

-it: 这是两个参数 -i:表示交互式操作 -t:表示终端,因为我们要使用 bash ,所以我们需要交互式终端
-rm:表示此容器用完后就删掉
ubuntu:基础镜像
bash:表示启动后,启用 bash

  1. gl>[root@localhost dockerfile]# docker run -it --rm ubuntu bash
  2. Unable to find image 'ubuntu:latest' locally
  3. latest: Pulling from library/ubuntu
  4. 5b7339215d1d: Pull complete
  5. 14ca88e9f672: Pull complete
  6. a31c3b1caad4: Pull complete
  7. b054a26005b7: Pull complete
  8. Digest: sha256:9b1702dcfe32c873a770a32cfd306dd7fc1c4fd134adfb783db68defc8894b3c
  9. Status: Downloaded newer image for ubuntu:latest
  10. #启动后,直接可以在 ubuntu 内执行交互命令
  11. gl>root@286039e88e1b:/# cat /etc/os-release
  12. NAME="Ubuntu"
  13. VERSION="18.04.2 LTS (Bionic Beaver)"
  14. ID=ubuntu
  15. ID_LIKE=debian
  16. PRETTY_NAME="Ubuntu 18.04.2 LTS"
  17. VERSION_ID="18.04"
  18. HOME_URL="https://www.ubuntu.com/"
  19. SUPPORT_URL="https://help.ubuntu.com/"
  20. BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
  21. PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
  22. VERSION_CODENAME=bionic
  23. UBUNTU_CODENAME=bionic
  24. root@286039e88e1b:/# exit
  25. exit

列出运行中的容器

docker ps

  1. [root@localhost docker]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 2953ff3e3772 nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 0.0.0.0:11->80/tcp elated_rubin

CONTAINER ID:容器ID
IMAGE:镜像名称
STATUS:状态:Up 运行中,Exited 停止
PORTS:端口设置
NAMES:容器名称,自动生成,也可以通过 docker run 的 —name 指定

docker ps -a 列出所有容器,包括没有运行的。

停止容器

docker stop 2953ff3e3772 其中 2953ff3e3772 指容器ID,也可以是容器名称。

强制停止容器

docker kill 2953ff3e3772

删除容器

docker rm 2953ff3e3772 只能删除已停止的容器,如需删除正在运行的容器,可添加 -f 参数

启动容器

docker start 2953ff3e3772

查看容器信息

docker inspect 2953ff3e3772

查看容器日志

docker container logs 2953ff3e3772

查看容器里的进程

docker top 2953ff3e3772

进入容器

docker container exec -it 2953ff3e3772 /bin/bash

修改端口

  1. #停止容器(docker stop d00254ce3af7)
  2. #停止docker服务(systemctl stop docker)
  3. cd /var/lib/docker/containers/d00254ce3af7*
  4. vi hostconfig.json
  5. "PortBindings":{"8080/tcp":[{"HostIp":"","HostPort":"60000"}]}
  6. #前一个数字是容器端口, 后一个是宿主机端口。将宿主机的60000端口映射到容器的8080端口
  7. #启动docker服务(systemctl start docker)
  8. #启动容器(docker start d00254ce3af7)

导入导出

如果服务器没有网络,不能拉取镜像的话,只能是通过本地上传镜像。
首先将镜像导出。这里以镜像 sqber/onlyoffice 为例

  1. docker save sqber/onlyoffice -o /home/sqberOnlyoffice.tar

-o 是指定导出的目录文件
注意 docker save 后面不用使用镜像Id,否则导入后不显示镜像名字,版本。

然后将 sqberOnlyoffice.tar 上传到服务器。在服务器上加载镜像即可。

  1. docker load -i /home/sqberOnlyoffice.tar

参考

https://docs.docker.com/install/linux/docker-ce/centos/

扫码分享
版权说明
作者:SQBER
文章来源:http://www.sqber.com/articles/docker.html
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。