Docker

  • Docker可以认为是vmware或者virtualbox
  • 镜像可以认为是 xxx.iso
  • 容器可以认为是 virtualbox运行xxx.iso后的系统

查看容器

docker ps -a

root@li1041-243:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3686838ba3d danielguerra/ubuntu-xrdp "/usr/bin/docker-ent…" 6 hours ago Up 6 hours 0.0.0.0:3389->3389/tcp, 9001/tcp, 0.0.0.0:2222->22/tcp uxrdp

进入已经停止运行的容器

docker start container ID

docker attach container ID

把修改或运行后的容器再打包为镜像(ISO)

  1. 退出容器
  2. 查看容器 docker ps -a
  3. 把容器打成镜像sudo docker commit -p c3686838ba3d vpsxyz/xrdp:20190218
  • c3686838ba3d 是容器的id
  • vpsxyz 是你注册的https://store.docker.com/的名字,如果你没有的话,那需要先注册
  • xrdp 是你为该镜像起的名字
  • :20190218 是镜像的版本号,默认是latest版本

root@li1041-243:~# sudo docker commit c3686838ba3d vpsxyz/xrdp:20190218
sha256:f66eb34fb39558f5ae2d28952befb877be03130ad067435416bf61d8f4e09523

当做完操作需要保存时再开一个窗口

root@li1041-243:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ecb1e3a329fd vpsxyz/vpsxyz:v02 "/startup.sh" 6 minutes ago Up 6 minutes (healthy) 22/tcp, 0.0.0.0:5900->5900/tcp, 0.0.0.0:6080->80/tcp quizzical_heyrovsky
root@li1041-243:~# docker commit ecb1e3a329fd vpsxyz/vpsxyz:v02
sha256:30665ee9da7242b9e7164d181a5af7706ff1ff9908592f1e0637f33baf4ffc70
r

4.查看镜像docker images

root@li1041-243:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
vpsxyz/xrdp 20190218 f66eb34fb395 About a minute ago 1.28GB
danielguerra/ubuntu-xrdp latest 44bd892742f7 4 weeks ago 981MB

相比原镜像多了些软件,大小变大了.

上传镜像

登录

docker login

上传

docker push vpsxyz/xrdp:20190218

OK!

再次使用该镜像就可以直接docker pull vpsxyz/xrdp:20190218

 

另一台服务器上:

抓取 image 文件

docker pull vpsxyz/xrdp:20190218

查看镜像

docker image ls

运行抓取到的镜像

会从 image 文件,生成一个正在运行的容器实例。(新建容器)

docker container run vpsxyz/xrdp:20190218

如果已经运行过,生成了容器,想要运行则是:

docker container start vpsxyz/xrdp:20190218

也可以直接省略上面的步骤

docker pull vpsxyz/xrdp:20190218

有些容器会自动终止,有些不会自动终止

终止容器

docker container kill [containID]

image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。

列出本机所有容器,包括终止运行的容器

docker container ls --all

删除终止运行的无用的容器文件(节约硬盘空间)

docker container rm [containerID]

从正在运行的 Docker 容器里面,将文件拷贝到本机

容器与主机之间的数据拷贝。

docker container cp [containID]:[/path/to/file] /local/path/file

**********************************************************************

**********************************************************************

Docker 最低支持 CentOS 7
使用脚本自动安装
curl -sSL https://get.docker.com/ | sh

service docker start

docker pull ubuntu:16.04
启动容器ubuntu里面的 bash 并且进行交互式操作
docker run -it ubuntu:16.04 bash

通过 exit 退出了这个容器

列出镜像
docker images

导出容器
docker ps -a

docker export 7691a814370e > ubuntu.tar

python3 -m http.server 8080

python -m SimpleHTTPServer 8080
导入容器快照
cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0

默认情况下Docker的存放位置为:/var/lib/docker
可以通过下面命令查看具体位置:
docker info | grep "Docker Root Dir"

修改Docker本地镜像与容器的存储位置
service docker stop

mkdir -p /data
mv /var/lib/docker /data/docker
ln -s /data/docker /var/lib/docker

 

 

 

curl -sSL https://get.docker.com/ | sh
service docker start

docker run -p 6080:80 -p 5900:5900 -e VNC_PASSWORD=mypassword dorowu/ubuntu-desktop-lxde-vnc:bionic

docker ps -a
sudo docker commit -p b35dfe5324e8 vpsxyz/xrdp:20190218
docker push vpsxyz/xrdp:20190218

docker run -p 6080:80 -p 5900:5900 --add-host=account.jetbrains.com:0.0.0.0 -e VNC_PASSWORD=xxx vpsxyz/vpsxyz:v03

发表评论

电子邮件地址不会被公开。 必填项已用*标注