容器三大基本概念,docker整个生命周期就是这三个概念
镜像 image Docker镜像就是一个只读的模板。镜像可以用来创建Docker容器。Docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。容器 container仓库 repository 存放镜像文件的地方,我可以去公网去,下载镜像docker使用命令回顾: 镜像 docker image ls docker images 查看顶层镜像 docker images -a 查看所有层镜像 docker pull 镜像名 #docker仓库,dockerhub docker push 镜像名 #把本地的镜像推送到 dockerhub仓库 docker search 镜像名 docker rmi 删除镜像 docker version #查看docker版本,查看到server 和client两个端 systemctl start docker #启动docker docker save 镜像名 > /data/centos.tar.gz #导出镜像 docker load < /data/centos.tar.gz #导入镜像 docker run 镜像名 #运行镜像文件,产生一个容器实例 容器 停止重启docker守护进程 systemctl stop docker systemctl restart docker docker start 容器id docker stop 容器id docker exec -it 容器id或名称 /bin/bash #进入正在运行的容器 -i 交互式操作 -t 开启一个终端 exit 退出容器 docker run 镜像名 #创建容器实例 docker rm 容器id #删除容器记录,必须提前docker stop 容器id ,只能杀死已经停止的容器 docker ps #查看容器正在运行记录 docker ps -aq #显示所有容器记录的id号 -a 显示所有容器记录 -q 显示容器id docker rm `docker ps -aq` #一次性删除所有容器记录 docker container ls #查看容器正在运行记录 docker commit 容器id记录 #提交这个容器,创建一个新的镜像 docker logs #查看容器运行日志 -f #不间断打印容器日志 docker port #查看容器的端口映射关系(外部访问到容器内的端口) docker run -d centos -P -d 后台运行 -P 随机映射端口 -p 9000(宿主机):5000(容器内) --name 给创建的容器记录,添加别名 #将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下 docker cp /www/runoob 96f7f14e99ab:/www/ #将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中 docker cp 96f7f14e99ab:/www /tmp/
注意:先停止再删除
docker rm 容器id 删除容器
docker rmi 镜像id 删除镜像
1.创建容器前准备工作,先把宿主机系统防火墙起开,放通端口 可参考之前blog:Linux系统防火墙放行端口 此处是:
docker网络配置:https://blog.csdn.net/hetoto/article/details/99892743
查看系统防火墙状态
systemctl status firewalld开启系统防火墙:
systemctl start firewalld放行端口
firewall-cmd --zone=public --add-port=10023/tcp --permanent && \ firewall-cmd --zone=public --add-port=10081/tcp --permanent && \ firewall-cmd --reload查看放通的端口列表
firewall-cmd --list-port如果要再关闭系统防火墙
systemctl stop firewalld
2.生成并启动一个容器:
docker run --name face_reg-d3 --gpus all -itd deeplearningenv/face-d3:latest --privileged -p 10023:22 -p 10081:80 -h face_reg-d3 -v /home/ubuntu/face_reg-d3_file:/home/face_reg_file sudo docker run -it --name u16-d1 --privileged -p 10023:22 -p 10081:80 -h u16-docker-1 -v /home/ubuntu16/container/u1604-d-1:/home/u16-d1-ys ubuntu:16.04 /bin/bash 参数:说明:-it终端运行方式,若用-d参数发现不行,故用此;功能实现交互式;–name创建的容器名,方便启动、关闭、重启、删除容器等操作–privileged加上之后容器内部权限更多,不会出现权限问题-p 10022:23 -p 10081:80指定端口映射,可同时放通多个端口-h u16-docker-1指定容器主机名-v /home/ubuntu16/container/u1604-d-1:/home/u16-d1-ys宿主机目录映射到容器内部目录**ubuntu:16.04 **本地ubuntu镜像版本/bin/bash启动方式-v 宿主目录:容器目录 将我们自己创建的目录挂载到容器的目录。只要在宿主机做修改即可,使用比较方便。
进入容器
docker exec -it u16-d1 /bin/bash如果发现容器已经关掉,下面这条命令起开
docker start u16-d1再进入容器
docker exec -it u16-d1 /bin/bash先初始化 apt-get
apt-get update如果更新失败:
service docker restart 或 systemctl restart docker安装 vim编辑器
apt-get install vim配置 apt-get 更新源
cd /etc/apt/ mkdir sources.bak mv sources.list sources.bak/ vim sources.list apt-get update安装 net-tools
apt-get install net-tools查看网络测试
ifconfig安装防火墙 ufw
apt-get install ufw安装 openssh-server,并启动ssh服务
apt-get install openssh-server /etc/init.d/ssh start /etc/init.d/ssh status ssh-keygen -t rsa创建 ubuntu16.04 容器 root 用户密码
passwd root查看容器 ubuntu16.04 版本信息
cat /etc/issue cat /etc/lsb-release可参考blog:[ubuntu安装ssh及远程登录一系列问题](https://blog.csdn.net/frdevolcqzyxynjds/article/details/105282343)
修改配置文件 /etc/ssh/sshd_config
vim /etc/ssh/sshd_config把 PermitRootLogin prohibit-password这一行注释掉,换成下面这行
PermitRootLogin yes然后重启 ssh 服务
/etc/init.d/ssh restart然后本地xshell远程 宿主机(云服务器公网或vmware虚拟机在局域网的) ip:10023 宿主机ip:映射的容器端口port
安装anaconda
方法1:
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.3.1-Linux-x86_64.sh --no-check-certificate方法2:宿主机内有anaconda的.sh文件,我将次文件cp到容器挂在宿主机的文件目录下,即/home/ubuntu16/container/u1604-d-1中,进入容器中在/home/u16-d1-ys中可以查看到,安装命令:
bash Anaconda3-5.3.1-Linux-x86_64.sh -p /home/anaconda报错:
tar (child): lbzip2: Cannot exec: No such file or directory tar (child): Error is not recoverable: exiting now tar: Child returned status 2 tar: Error is not recoverable: exiting now解决方式很简单,即安装bzip2 (apt-get install bzip2)