docker安装

1.安装ubuntu注意的问题:
为root用户设置密码
sudo passwd root
切换用户
su root
(1).需要安装ssh(允许远程访问)
sudo apt-get install ssh
(2).ubuntu中vi下删除键和上下左右键的异常解决:
sudo apt-get remove vim-common
sudo apt-get install vim-gtk
(3).打开配置文件修改允许root登录
vi /etc/ssh/sshd_config
将PermitRootLogin without-password
修改为:
PermitRootLogin yes
重启SSH:
/etc/init.d/ssh restart

2.安装docker

安装本地命令:apt-get install -y docker.io
查看docker版本:docker -v
查看docker是否启动成功:docker images
启动docker:service docker start
停止docker:service docker stop

docker对镜像的操作

查看镜像:docker iamges
搜索镜像:docker searsh 镜像关键字
镜像删除:docker rmi 镜像id或镜像名称
镜像拉取:docker pull 镜像名称
阿里镜像下载网站:dev.aliyun.com/search.html

docker对容器的操作

生成容器:docker run -d(启动容器为后台运行) -p(端口映射) 8888:8080 --name 要启动的名称 镜像的名称
查看正在运行的容器:docker ps | grep 容器名称
查看全部(包括已停止)的容器:docker ps -a | grep
进入容器:docker exec -it 容器id/容器名称 /bin/bash
退出容器:exit
停止容器:docker stop 容器id/容器名称
启动容器:docker start 容器id/容器名称
删除容器:docker rm 容器id/容器名称
拷贝文件:docker cp 宿主机目录及文件 容器名称:容器目录

对docker容器指定ip

固定ip:
	创建网络,指定网段
		docker network create --subnet=127.18.0.0/16 mynetwork
	创建容器,指定IP
		docker run -it -d --net mynetwork --ip 127.18.0.8 --name mytomcat tomcat
		-i: 以交互模式运行容器,通常与 -t 同时使用;
		-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
查看容器启动的ip:
		docker inspect --format='{{.name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

3.使用dockerfile制作镜像/容器

更改软件下载源
(1).apt update 更新下载库
(2).修改镜像下载地址:
vi /etc/docker/daemon.json(如果不存在,新建文件添加以下内容)

{

	"registry-mirrors": ["https://f1y08dd7.mirror.aliyuncs.com"]
	
}

(3).重起服务:systemctl restart docker

容器可视化:Portainer
创建数据卷:
为什么使用数据卷:
1.docker的镜像是由多个只读的文件系统叠加在一起形成的。当我们在我启动一个容器的时候,docker会加载这些只读层并在这些只读层的上面(栈顶)增加一个读写层。这时如果修改正在运行的容器中已有的文件,那么这个文件将会从只读层复制到读写层。该文件的只读版本还在,只是被上面读写层的该文件的副本隐藏。当删除docker,或者重新启动时,之前的更改将会消失。在Docker中,只读层及在顶部的读写层的组合被称为Union File System(联合文件系统)。
2.为了很好的实现数据保存和数据共享,Docker提出了Volume这个概念,简单的说就是绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷。
Volume的作用:
通过数据卷可以在容器之间实现共享和重用
对数据卷的修改会立马生效(非常适合作为开发环境)
对数据卷的更新,不会影响镜像
卷会一直存在,直到没有容器使用
docker volume create protainer_data
构建Portainer容器
docker run -d -p 9091:9000 -v /var/run/docker.sock:/var/run/docker.sock -v protainer_data:/data portainer/portainer
查看数据卷:docker volume ls
创建容器
创建容器时关联其他容器(如nginx关联其他的tomcat)的几种方法
1.在创建时给定ip+端口
2.在创建时给定端口(ip会自动分配)
3.在创建时给定别名 (在docker run 命令加入 --link 要访问的容器名字:容器的别名 示列如下:)
docker run -d -p 80:80 --restart=always --name nginx --link tomcat:tomcat1 kgc/centos7-ssh-tengine"

dockerfile制作镜像

FROM:依赖的底层镜像
		MAINTAIER:指定镜像创建者
		ENV:设置环境变量
		RUN:运行shell命令
		COPY:将编译本地文件拷贝到镜像文件中
		EXPOSE:指定监听端口(EXPOSE 8080/tcp)
		ENTRYPOINT:预执行命令,创建容器启动后才执行
	  编写Dockerfile
		文件的名称必须为DockerfIle
	  执行命令生成镜像
		docker build -t mytomcat .

shell创建方式:(依据个人配置的脚本情况使用)
执行脚本创建镜像:./init-image.sh all n
执行脚本创建容器:./init-container.sh init

yml创建方式:
下载 docker-compose:apt-get install docker-compose
安装单个容器:docker-compose up -d yml中配置的容器名称
安装所有容器:docker-compose up -d
启动容器: docker-compose start 容器名称
停止容器: docker-compose stop 容器名称
删除容器: docker-compose rm 容器名称