1.卸载已经安装的旧版本docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.下载需要的安装包
yum install -y yum-utils
3.设置镜像仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.更新yum软件包索引
yum makecache fast
5.安装docker相关的配置
docker-ce 是社区版,docker-ee 企业版
yum install docker-ce docker-ce-cli containerd.io
6.启动Docker
systemctl start docker
7.查看镜像
docker images
[ root@luck ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 11 months ago 13 .3kB
1 .REPOSITORY 镜像的仓库源
2 .TAG 镜像的标签
3 .IMAGE ID 镜像的id
4 .CREATED 镜像的创建时间
5 .SIZE 镜像的大小
-a/--all 列出所有镜像
-q/--quiet 只显示镜像的id
8.查看docker版本号
docker version
9.设置docker开机自启
ststemctl enable docker
10.卸载docker
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
11.docker 系统信息 包括镜像和容器数量
docker info
12. docker 帮助
docker help
eg:
docker logs --help
13.搜索docker镜像
docker search 镜像名称
[ root@luck ~]
14.拉取docker镜像
docker pull 镜像名称
docker image pull 镜像名称
docker pull 镜像名称:版本号
eg:docker pull mysql:5.7
eg:用完就删
docker run -it --rm tomcat:9.0
15.删除镜像
[ root@luck ~]
[ root@luck ~]
[ root@luck ~]
16.运行镜像产生容器||启动容器
docker run [ 可选参数] image
--name= "名字" 指定容器名字
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080 :8080
(
-p ip:主机端口:容器端口 配置主机端口映射到容器端口
-p 主机端口:容器端口
-p 容器端口
)
-P 随机指定端口( 大写的P)
16.1后台从容启动容器
docker run -d --name = “自定义名称” -p 外网端口:内部端口 容器名称
17.退出容器
[ root@bd1b8900c547 /]
exit
[ root@iZwz99sm8v95sckz8bd2c4Z ~]
18.查看正在运行的容器
-a
-n= ?
-q
[ root@luck ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[ root@luck ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bca129320bb5 centos "/bin/bash" 4 minutes ago Exited ( 0 ) 3 minutes ago optimistic_shtern
bd1b8900c547 centos "/bin/bash" 6 minutes ago Exited ( 0 ) 5 minutes ago cool_tesla
cf6adbf1b506 bf756fb1ae65 "/hello" 5 hours ago Exited ( 0 ) 5 hours ago optimistic_darwin
19.删除容器
docker rm 容器id
docker rm -f $( docker ps -aq)
docker ps -a -q| xargs docker rm
20.启动和停止容器
docker start 容器id
docker restart 容器id
docker stop 容器id
docker kill 容器id
[ root@bd1b8900c547 /]
exit
[ root@luck ~]
21.查看日志命令
docker logs -f -t --tail 显示条数(可不写) 容器ID
常用:
docker logs -tf 容器id
docker logs --tail number 容器id
22.查看容器的进程命令 docker top 容器ID
docker top 容器ID
23.查看容器的元数据
docker inspect 容器id
24.进入当前正在运行的容器
方法一(推荐):docker exec -it 容器ID /bin/bash
方法二:docker attach 容器ID
docker exec 进入容器后开启一个新的终端,可以在里面操作
docker attach 进入容器正在执行的终端,不会启动新的进程
25.拷贝容器的文件到主机中
docker cp 容器ID:容器内部路径:目的主机路径
26.容器复制文件夹数据
建立 webapps 文件夹
cp -r webapp.dist/* webapps
27.查看docker 状态 docker stats
docker stats -e
docker run -d -p 8088 :9000 --restart= always -v /var/run/docker.sock:/var/run/docker.sock --privileged= true portainer/portainer
29. 提交新的镜像
docker commit -m= “提交的描述信息” -a= "作者" 容器id 目标镜像名:[ TAG]
30.同步数据,数据卷使用
docker run -it -v 主机目录:容器目录 镜像名 启动命令(/bin/bash)
eg:
docker run -d -p 6603 :3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD = 123456 --name mysql01 mysql:5.7
-d:后台运行
-p:端口号设置
-v:数据卷使用
-v 容器内路径 //匿名挂载
-v 卷名:容器内路径 //具名挂载
-v /宿主机路径::容器内路径 //指定路径挂载
-v /宿主机路径::容器内路径:ro //指定路径挂载:ro只读
-v /宿主机路径::容器内路径:rw //指定路径挂载:可读可写
-e:配置
--name 起一个名字
Docker镜像发布的步骤:
1 、编写一个dockerfile文件
2 、docker build 构建成为一个镜像
3 、docker run 镜像
4 、docker push 镜像(发布镜像到DockerHub、阿里云镜像仓库)
32.DockerFile文件
Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’
关于DockerFile文件的脚本注意点有:
1 、每个保留关键字(指令)都必须是大写字母
2 、文件中的指令从上到下顺序执行,第一个指令必须是FROM
3 、
4 、每一个指令都会创建提交一个新的镜像层,并提交!
33.数据卷容器数据同步–volumes-from()
docker run -it --name 容器自定义名字1 镜像名字:版本
docker run -it --name 容器自定义名字2 --volumes-from 容器自定义名字1 镜像名字:版本
docker run -it --name 容器自定义名字3 --volumes-from 容器自定义名字2 镜像名字:版本
34.查看镜像的构建步骤
docker history 容器ID
35.使用该Dockerfile构建镜像
进入容器
docker build -t 容器名称:版本号
36.发布镜像Docker
https://hub.docker.com/ DockerHub
docker login -u 用户名
docker login --help
docker push 容器名称:版本号
37.查看网络
ip addr
查看网络id
docker network ls
docker network inspect 网络ID
查看绑定信息
docker exec -it tomcat03 cat /etc/hosts
38.测试网络之间容器可以ping通
docker exec -it 容器1 ping ip地址
39.语法 --link(需要重启)
docker run -d -P --name tomcat03 --link tomcat02 tomcat
//这样3就可以联通2了,但是2不可以联通3,因为没有配置
docker exec -it tomcat03 ping tomcat02
40.自定义网络创建
第一步创建网络
eg:docker network create --driver bridge --subnet 192.168 .0.0/16 --gateway 192.168 .0.1 mynet
eg:docker network create redis --subnet 172.13 .0.0/16
第二步查看 docker network ls
docker network inspect mynet
eg:docker network inspect redis
第三步使用创建的网络docker run-d -P --name tomcat-net-01 --net mynet tomcat