一、关键词
Dokcer镜像:相当于Java类Class
Docker容器:相当于Java对象Object
通过类创建对象,通过镜像创建容器
镜像:只读状态,安装应用包,包含依赖整体的环境,镜像启动后就是容器
容器:类似启动的程序,可以依据镜像启动多个,名称要不一样
Docker 仓库 - Docker registeries: ?来保存镜像,有公有和私有仓库,好?Maven的中央仓库和本地私服
二、安装Docker(CentOS)
yum update
yum install epel-release -y
yum clean all
yum list
? 2.1 方式1:快速安装并运行docker
yum install docker-io -y
systemctl start docker
- ? 2 方式2: 根据Linux系统选择合适的Docker版本进行安装
- 参考可安装的版本命令为:yum list docker-ce --showduplicates|sort -r
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HGWIcDOC-1639322105686)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1637220429031.png)]
版本号为 docker-ce-18.06.0.ce
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KKLbaq6F-1639322105688)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1637220652788.png)]
安装命令为 yum install docker-ce-18.06.0.ce -y # 中间用 - 连接
红框下面的版本也可以正常安装成功:yum install docker-ce-17.09.0.ce -y
一直等这下载安装完毕即可
2.3 安装完成后检查
docker info
docker -v 或 docker version 可查看安装的具体版本信息
systemctl start docker #运?Docker守护进程
systemctl stop docker #停?Docker守护进程
systemctl restart docker #重启Docker守护进程
systemctl status docker #查看docker的启动状态信息
-
验证是否正确安装
-
先启动 sudo systemctl start docker -
通过运行hello-world 映像验证是否正确安装了Docker Engine ,如下图 -
sudo docker run hello-world -
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tGYuSciy-1639322105689)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1637227328806.png)] -
?个命令部署Nginx
docker run --rm --name nginx-xdclass -p 8080:80 -d
nginx
docker run --name mynginx2 --network=host -p 8080:80 -d nginx:1.20.2
--rm:容器终?运?后,?动删除容器?件。
--name nginx-xdclass:容器的名字叫做nginx-xdclass,名字??定义.
-p: 端?进?映射,将本地 8080 端?映射到容器内部的 80 端?
-d:容器启动后,在后台运?
docker ps 查看容器
docker stop 容器id
vim /etc/docker/daemon.json
#改为下?内容,然后重启docker
{
"debug":true,"experimental":true,
"registry-mirrors":
["https://pb5bklzr.mirror.aliyuncs.com","https://hub
-
mirror.c.163.com","https://docker.mirrors.ustc.edu.c
n"]
}
#查看信息
docker info
三、常用命令
- 安装部署好Docker后,执?的命令是docker开头
- xxx是具体某个镜像名称
- 搜索镜像: docker search xxx
- 列出当前系统存在的镜像: docker images
- 拉取镜像: docker pull xxx
- xxx是具体某个镜像名称(格式 REPOSITORY:TAG)
- REPOSITORY:表示镜像的仓库源
- TAG:镜像的标签运??个容器
- 例如 docker pull mysql:5.7
- **运??个容器 **
docker run --name nginx_xd -p 8080:80 -d nginx
docker run - 运??个容器
-d 后台运?
-p 端?映射 8080:80 左边对外开放的端口,右侧为本身端口号
--name "xxx" 容器名称,自定义名称,容器名称不能相同
案例 docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
- 列举当前运?的容器: docker ps
- 列举全部 容器 : docker ps -a
- 检查容器内部信息: docker inspect 容器名称
- 删除镜像: docker rmi IMAGE_NAME
- 强制移除镜像不管是否有容器使?该镜像 增加 -f 参数
- 停?某个容器: docker stop 容器名称
- 启动某个容器: docker start 容器名称
- 移除某个容器: docker rm 容器名称 (容器必须是停?状态)
- 查看容器启动?志
- docker logs -f containerid
四、卸载
卸载分为两个步骤,先是使用yum移除安装软件,再使用rm删除docker创建的文件夹即可,参考如下:
-
1、卸载docker软件包 $sudo yum remove docker-ce
-
2、主机上的镜像、容器、存储卷、定制配置文件不会自动删除,如需删除所有镜像、容器、和存储卷,请运行下列命令 $sudo rm -fr /var/lib/docker
yum remove docker-ce rm -rf /var/lib/docker # rm -rf /etc/docker # rm -rf /run/docker # rm -rf /var/lib/dockershim # rm -rf /var/lib/docker
五、问题解决
错误一:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: ux.go:297: copying bootstrap data to pipe caused “write init-p: broken pipe”":
错误二:
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "process_linux.go:245: running exec setns process for init caused “exit status 29"”
解决方案:切换安装版本,切换至本例中的第二种安装版本方式。
六、Docker设置阿里云镜像加速
七、镜像仓库
公有仓库,保存了大量镜像
https://registry.hub.docker.com/search?type=image
八、docker修改容器配置文件
-
1、进入容器内部 sudo docker exec -it 容器名或ID /bin/bash
-
2、退出容器 exit -
3、 安装vim命令 apt-get update # 更新软件列表
apt-get install vim # 安装vim命令
-
4、修改配置文件 找到配置文件路径及其内容,如果要修改端口或者其他内容直接编辑配置文件即可
whereis dirname #命令用于查找文件
find / -name "default.conf" # 在/根目录下查找文件
find /etc -name “default.conf” # 在/etc目录下查找文件
-
docker镜像都是独立的,在一个容器中安装了vim命令,在其他容器中使用vim 命令是不生效的,需要在每个镜像中都安装vim或vi
九、容器网络配置
在运行时加上 docker run --network=选项指定
- host模式:使用 --net=host 指定。
- none模式:使用 --net=none 指定。
- bridge模式:使用 --net=bridge 指定,默认设置。
- container模式:使用 --net=container:NAME_or_ID 指定。
ping命令不通(安装时保证主机能连接外网)
因为用Docker拉取的Base镜像如Centos和Ubuntu的话都是最简版本,不包含Ping工具,而对Docker进行Docker network和Docker链接操作时往往要用到Ping工具测试两个容器间的网络,此时就要用到Ping工具了,下面是Ubuntu下安装Ping工具的命令:
sudo apt-get update && apt-get install iputils-ping
最后、案例实验
完成mysql的安装部署和连接
完成jenkins安装部署和访问
完成nginx安装部署
|