Docker 安装与简单使用介绍

本贴最后更新于 1906 天前,其中的信息可能已经时移世易

一、Docker 安装

1、镜像源配置

  • 由于 centos 系统源自带的 docker 版本比较老不建议使用,这里安装新版 docker
  • docker 依赖环境:
    1、内核版本:3.10+ (由于 namespace 中 user 需运行在内核 3.10 版本上)
    2、64bit cpu

1.1:下载 docker-ce 镜像

进入清华大学镜像网站首页,找到 docke-ce 镜像
image.png

1.2:选择 Linux 版本

image.png

1.3:选择 CentOS

image.png

1.4:复制链接地址

image.png

1.5:下载镜像源

登入 Linux 系统使用 wget 进行下载到系统中

[root@docker ~]# cd /etc/yum.repos.d/
[root@docker yum.repos.d]# wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

注意:下载下来的yum源中默认的地址为docker官方站点,可以手动更改yum源指定成国内的docker镜像网站

1.6:更改镜像源地址

可将下面的清华镜像网站 docker 的下载路径复制更改 docker.repo 镜像源的默认官方源
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/

[root@docker yum.repos.d]# vim docker-ce.repo

image.png

  • 替换后为下图:
    image.png

2、安装 Dokcer

#检查yum源
[root@docker ~]# yum repolist
 
#安装docker
[root@docker ~]# yum -y install docker-ce
  • 报错:
    如果之前安装了旧版本的 docker 则安装新版的时候会出现以下报错
    image.png
  • 解决方法:
    卸载掉旧版的软件,然后安装新版 docke
[root@docker ~]# yum erase docker-common-2:1.13.1-102.git7f2769b.el7.centos.x86_64

3、镜像加速配置

#启动 docker 之前,配置镜像加速;镜像加速器(推荐阿里云)
image.png
image.png

[root@docker ~]# mkdir /etc/docker/

[root@docker ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://xxxxxxxxx.aliyuncs.com"]
}

4、启动 Docker

[root@docker ~]# systemctl enable docker.service;systemctl start docker.service

[root@docker ~]# docker version

#查看Docker详细信息
[root@docker ~]# docker info
Containers: 0		#当前系统中的容器数量
 Running: 0			#其中运行状态的容器数量
 Paused: 0			#其中暂停状态的容器数量
 Stopped: 0			#其中停止状态的容器数量
Images: 0			#镜像数量
Server Version: 18.09.2		#服务器版本
Storage Driver: overlay2		#存储驱动后端,专用的文件驱动
 Backing Filesystem: xfs		
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:	#插件
 Volume: local		#存储插件
 Network: bridge host macvlan null overlay	#网络插件
 Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog	#日志插件
Swarm: inactive	
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 9754871865f7fe2f4e74d43e2fc7ccd237edcbce
runc version: 09c8266bf2fcf9519a651b04ae54c967b9ab86ec
init version: fec3683
Security Options:
 seccomp	#安全
  Profile: default
Kernel Version: 3.10.0-957.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 3.84GiB
Name: docker
ID: 35ZE:Y2HG:DYNW:4ZPK:OIZS:BDF6:6E5B:YOEL:7ZC2:LT5G:EE4D:FC2W
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Registry Mirrors:
 https://registry.docker-cn.com/	#刚才手动配置的加速镜像,表明加速正常
Live Restore Enabled: false
Product License: Community Engine
  • 以上就表明 docker 安装完成并且可以正常启动,正常加速镜像

  • 解决以下问题:
    WARNING: bridge-nf-call-iptables is disabled
    WARNING: bridge-nf-call-ip6tables is disabled

[root@docker ~]# vim /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

[root@docker ~]# sysctl -p

5、使用 DaoCloud 监控容器

官方地址:https://dashboard.daocloud.io

5.1:执行脚本

[root@docker ~]# curl -sSL https://get.daocloud.io/daomonit/install.sh | sh -s 46d6b11a819f1119cdda1242a672b1003340e468

image.png
image.png
image.png
image.png

5.2:查看主机

image.png

  • 访问其中一个容器
    image.png
    image.png

  • 打开控制台,进入容器
    image.png
    image.png

5.3:删除主机

image.png

[root@docker ~]# rpm -e daomonit

二、Docker 使用

1、搜索镜像

[root@docker ~]# docker search tomcat	#search后面跟镜像名
 
NAME        DESCRIPTION        STARS        OFFICIAL          AUTOMATED
仓库名称      镜像名称            描述信息                          镜像状态

2、拉取镜像

#默认拉取的是 docker hub 上的镜像

  • 方式 1:
[root@docker ~]# docker pull tomcat
  • 方式 2:
[root@docker ~]# docker image pull 镜像名

#拉取私有仓库镜像

[root@docker ~]# docker pull 私有地址:port/[namespace] 镜像名:tag
[root@docker ~]# docker pull quay.io/coreos/flannel:v0.10.0-amd64

3、查看本地镜像

[root@docker ~]# docker image list
[root@docker ~]# docker images

4、删除镜像

[root@docker ~]# docker rmi name:[tag]
注意:删除之前需要先删除正在使用该镜像的容器;不加tag则默认删除最后一个

删除一个或多个镜像之间用空格隔开

4.1:强制删除

[root@docker ~]# docker rmi tomcat:9.0 --force
 
强制删除之后使用该镜像的容器也随之无法使用

4.2:只查看镜像 ID

[root@docker ~]# docker images -q
96c4e536d0eb
62a9f311b99c

5、查看容器状态

5.1:查看正在运行的容器

[root@docker ~]# docker ps

5.2:查看所有容器

[root@docker ~]# docker ps --all

6、停止容器

[root@docker ~]# docker container stop id(或名称)

7、重启容器

[root@docker ~]# docker container restart id(或名称)

8、删除容器

[root@docker ~]# docker container rm id(或名称)
  • 强制删除
[root@docker ~]# docker container rm -f id(或名称)

9、只查看容器 ID

  • 查看所有
[root@docker ~]# docker ps -a -q

10、运行一个容器

docker run -it -d -p 8070:8080 --name web -v /root/software:/software --privileged=true  镜像名 /bin/bash

-it 创建一个交互式的容器
-d 作为一个守护进程在后台运行
-p 映射端口8070 本机的端口 映射的容器的端口 
--name 自定义容器名称
-v 挂载目录/root/software(本地目录)到/software(容器目录),在创建前容器是没有software目录的,docker 容器会自己创建
--privileged=true 关闭安全权限,否则你容器操作文件夹没有权限

11、查看容器 IP

  • 方式 1:登入容器中查看
root@3842ef70fd14:/# cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.3	3842ef70fd14
  • 方式 2:外部使用命令
[root@docker ~]# docker inspect <container id>		#容器ID或容器名

image.png

  • 方式 3:获取所有容器 IP 和名称
[root@docker ~]# docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
 

[root@docker ~]# docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
  • 方式 4:显示所有容器 IP 地址
[root@docker ~]# docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

12:登入容器

docker exec -it <容器名或ID> /bin/bash

[root@docker ~]# docker exec -it web /bin/bash
root@55b8603a6e54:/usr/local/tomcat#

13:文件拷贝

[root@docker ~]# docker cp 拷贝的文件名称  文件在宿主机路径:拷贝至容器中的路径  容器名称或ID

14:安装 vim

root@55b8603a6e54:~# apt-get update
root@55b8603a6e54:~# apt-get install vim
  • 命令说明:
    命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。

15:重命名容器名

[root@docker ~]# docker container <原容器名>  <新容器名>

#查看是否修改成功
[root@docker ~]# docker container ps

16:查看容器占用空间大小

[root@docker ~]# docker container ps -as

#配置grep、awk进行过滤也可以

三、镜像制作

image.png

1、基于 dockerfile

使用 docker build 命令制作

2、基于容器

  • 进入到容器中修改配置,使其符合当前业务,然后再基于此运行的容器制作为镜像

  • 例如在 tomcat 中添加一个索引文件,然后基于该更改后的容器进行制作镜像
    注意:制作镜像时,添加-p 选项暂停容器,防止制作镜像时文件不完整

[root@docker ~]# docker commit -h
Flag shorthand -h has been deprecated, please use --help

Usage:	docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

Create a new image from a container's changes

Options:
  -a, --author string    Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
  -c, --change list      Apply Dockerfile instruction to the created image
  -m, --message string   Commit message
  -p, --pause            Pause container during commit (default true)
  • 制作镜像
[root@docker ~]# docker commit -p web    #web为修改后的容器名

image.png

  • 添加 tag
[root@docker ~]# docker tag b7f471970842 dqzboy/tomcat:v0.1
[root@docker ~]# docker images

image.png

  • 添加新 tag
一个镜像可以有多个tag,但是一个tag只能在一个镜像上
[root@docker ~]# docker tag dqzboy/tomcat:v0.1 dqzboy/tomcat:latest
[root@docker ~]# docker images

image.png

  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    491 引用 • 917 回帖
  • 容器
    12 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...