Docker基本操作
1、简介
Docker 是一个开源的应用容器引擎;
Docker支持将软件编译成一个镜像,然后在镜像中的各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。
运行中的在这个镜像称为容器,容器启动是非常快速的。
2、核心概念
docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上)
docker客户端(Client):连接docker主机镜像操作
docker仓库(Registry):用来保存各种打包好的软件镜像
docker镜像(Images):软件打包好的镜像,放在docker仓库中
docker容器(Container):镜像启动后的实例称为一个容器,容器是独立运行的一个或一组应用
使用Docker的步骤:
1、安装Docker
2、去Docker仓库去找到要安装的软件对应的镜像
3、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器
4、对容器的启动停止就是对这个软件的启动停止
安装Docker
1、检查内核版本,3.10及以上
uname -r
2、安装Docker
apt-get -y install docker
3、启动Docker
systemctl start docker
4、检查版本
docker -v
5、设置开机启动
systemctl enable docker
6、停止Docker
systemctl stop docker
Docker基本操作
1、搜索镜像,比如搜索mysql(会从 Docker Hub 中搜索 http://hub.docker.com
)
docker search mysql
2、下载镜像
#默认下载latest版本
docker pull mysql
#指定版本下载
docker pull mysql:5.5
3、查看docker中有多少镜像
docker images
4、删除指定镜像
docker rmi 加上imageId
Docker容器操作
软件镜像(QQ的安装程序)----> 运行镜像(运行安装程序)----> 产生一个容器(运行的QQ)
步骤:
1、搜索镜像
docker search tomcat
2、拉取镜像
docker pull tomcat
3、根据镜像启动容器
docker run --name mytomcat -d tomcat:latest
注意:mysql 不可以此方式启动,会异常退出 正确启动方式见下方
4、查看运行中的容器
docker ps
5、停止运行中的容器
docker stop 名字 或 CONTAINERID(容器的id)
#例如
docker stop dec70e978492
#或
docker stop mytomcat
6、查看所有的容器(运行的和退出的)
docker ps -a
7、重新启动容器
docker start dec70e978492 (容器id)
#或
docker start mytomcat (名字)
8、删除容器(删除的容器必须是停止状态)
docker rm dec70e978492(容器id)
#或
docker rm mytamcat(名字)
9、启动容器并配置端口映射
docker run -d -p 8888:8080 tomcat
-d
:后台运行
-p
:将主机端口映射到容器的一个端口 (主机端口:容器内部的端口)
启动之后,浏览器访问 ip:8888
即可访问容器中的 8080 端口
查看防火墙状态:
service firewalld status
关闭防火墙:
service firewalld stop
11、查看容器的日志
docker logs ce5a33d06152(容器id)
#或
docker logs mytomcat(名字)
12、一个镜像可以启动多个容器:
使用一个镜像启动三个独立运行的容器(互不干扰)
docker run -d -p 8887:8080 tomcat
docker run -d -p 8888:8080 tomcat
docker run -d -p 8889:8080 tomcat
docker 安装&redis挂载外部配置和数据&配置密码 一气呵成
docker run -d --privileged=true \
-p 6379:6379 \
--restart always \
-v ~/docker-data-test/redis/conf/redis.conf:/etc/redis/redis.conf \
-v ~/docker-data-test/redis/data:/data \
--name myredis redis redis-server /etc/redis/redis.conf \
--appendonly yes \
--requirepass "123456"
参数解释:
-d -> 以守护进程的方式启动容器
-p 6379:6379 -> 绑定宿主机端口
--name myredis -> 指定容器名称
--restart always -> 开机启动
--privileged=true -> 提升容器内权限
-v ~/docker-data-test/redis/conf/redis.conf:/etc/redis/redis.conf -> 映射配置文件
-v ~/docker-data-test/redis/data:/data -> 映射数据目录
--appendonly yes -> 开启数据持久化
--requirepass -> 密码
Docker中网络不通报错:WARNING: IPv4 forwarding is disabled. Networking will not work解决
上面创建redis容器时报错:WARNING: IPv4 forwarding is disabled. Networking will not work.
查看容器的警告信息:
[root@localhost ~]# docker info //有警告信息
......
WARNING: IPv4 forwarding is disabled
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
解决办法:
1.编辑配置文件 /etc/sysctl.conf
vim /etc/sysctl.conf
新增以下内容:
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-arptables=1
net.ipv4.ip_forward=1
2、重启网络配置
systemctl restart network
3、再次查看docker info,已无警告信息
[root@localhost ~]# docker info
......
Live Restore Enabled: false
4、重新创建容器,也再无ipv4转发问题警告信息
Docker进入一个已经在运行的容器
docker exec -it 775c7c9ee1e1 /bin/bash
【Docker】之查看 Docker 容器启动命令参数
1、安装 pip3
命令
Linux 一般都默认安装了 Python 2,而 Python2 就附带了 pip
命令,但 2 版本的 pip 经常在安装包的时候出错,所以建议安装 Python3。
yum install python3-pip
查看版本:
pip3 -V
2、安装 runlike
命令
pip3 install runlike
3、查看 docker run
命令参数
格式:runlike -p <容器名>|<容器ID>
runlike -p redis
docker run \
--name=redis \
--hostname=414be3b97fb6 \
--env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
--env=GOSU_VERSION=1.12 \
--env=REDIS_VERSION=6.2.6 \
--env=REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-6.2.6.tar.gz \
--env=REDIS_DOWNLOAD_SHA=5b2b8b7a50111ef395bf1c1d5be11e6e167ac018125055daa8b5c2317ae131ab \
--volume=/data \
--privileged \
--workdir=/data \
-p 6379:6379 \
--restart=always \
--log-driver=journald \
--runtime=docker-runc \
--detach=true \
redis \
redis-server /etc/redis/redis.conf
Docker 停止/删除所有容器
1、停止所有容器
docker stop $(docker ps -aq)
2、删除所有停止的容器
docker container prune