Docker常用操作记录

群晖NAS上带有docker套件,对于深度定制Linux的DSM来说有了一个高可玩性的迂回方法:

  • 查找镜像 docker search XXX

  • 拉取镜像 docker pull XXX

  • 从Dockerfile Build docker build -t XXX .

  • 查看镜像 docker images

  • 命名镜像 docker tag XXX XXX

  • 运行镜像生成容器

    docker run -it(-d) -p 10080:80 -p 10022:22 XXX  /root/run.sh
    docker run -i -t -v /root/software/:/mnt/software/ 25c5298b1a36 /bin/bash
    

    运行镜像,-it前端运行并交互,-d后台运行,-p端口映射 执行run.sh 注意run.sh需要赋予777权限。当初想在运行docker的时候自启动一些软件比如Nginx,但是在rc.local中添加并没有用,不知道怎么回事,所以写了启动脚本

  • 启动已有容器 docker start XXX (docker ps -a 出来的容器ID前3位即可)

  • 停止运行容器 docker stop/kill XXX

  • 进入已运行的容器 docker attach XXX

  • 退出容器 exit

  • 查看容器 docker ps -a

  • 提交容器到镜像 docker commit CONTAINER_ID IMAGE_NAME

  • 删除容器 docker rm XXX

  • 解决时间不同步问题

    • CentOS RUN echo "Asia/shanghai" > /etc/timezone;

    • Ubuntu RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime


一、安装

  1. 查看系统版本:

    $ cat /etc/redhat-release
    CentOS Linux release 7.0.1406 (Core)
    
  2. 安装docker
    $ yum install docker
    安装过程中报错:

    Transaction check error: file /usr/lib/systemd/system/blk-availability.service from install of device-mapper-7:1.02.107-5.el7_2.2.x86_64 conflicts with file from package lvm2-7:2.02.105-14.el7.x86_64 file /usr/sbin/blkdeactivate from install of device-mapper-7:1.02.107-5.el7_2.2.x86_64 conflicts with file from package lvm2-7:2.02.105-14.el7.x86_64 file /usr/share/man/man8/blkdeactivate.8.gz from install of device-mapper-7:1.02.107-5.el7_2.2.x86_64 conflicts with file from package lvm2-7:2.02.105-14.el7.x86_64

    解决办法: $yum install libdevmapper* -y
    再次运行: $yum install docker

  3. 检查安装是否成功
    $docker version
    若输出了 Docker 的版本号,说明安装成功了,可通过以下命令启动 Docker 服务:

  4. $service docker start
    一旦 Docker 服务启动完毕,就可以开始使用 Docker 了。

二、使用docker

  • 使用命令行的工具来检索名字为“tutorial”的镜像$docker search tutorial

  • 使用docker命令来下载镜像 $docker pull learn/tutorial

  • 查看已下载的镜像 $ docker images
    REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.io/learn/tutorial latest 2d13ac7ee948 3 years ago 128 MB

  • 在docker容器中运行hello world!docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。 $docker run learn/tutorial echo “hello word”

  • 在容器中安装新的程序(wget命令) $docker run learn/tutorial apt-get install -y wget

  • 使用docker ps -l命令获得安装完ping命令之后容器的id。然后把这个镜像保存为learn/wget。

    $ docker ps -l 
    Container ID IMAGE COMMAND CREATED STATUS PORTS NAMES 
    1861c071d861 learn/tutorial “apt-get install -y w” 2 minutes ago Exited (0) 2 minutes ago furious_panini
    
  • 保存对容器的修改 $ docker commit 1861c071d861 learn/wget ad2245a8acd8014c39ad46b503cc8e74ce4202d9b4b4fdf48596b596b88059b4
    执行完docker commit命令之后,返回新版本镜像的id号

  • 运行新的镜像

  • 检查运行中的镜像 $docker inspect 2e079c9ecac4

  • 发布自己的镜像

    • 首先在www.docker.com注册账户,登录并在https://cloud.docker.com/repository/list 页面创建learn库
    • 将刚才我们做的镜像起个新的名字: $docker tag learn/wget:latest yown/learn:latest
    • 在命令行登录:$docker login
    • 上传 $docker push yown/learn:latest

      Do you really want to push to public registry? [y/n]: y The push refers to a repository [docker.io/yown/learn] (len: 1) ad2245a8acd8: Pushing [=========================> ] 6.482 MB/12.48 MB

至此,整个docker的使用已体验完啦!


CentOS7 安装Docker CE

官方网站:https://docs.docker.com/engine/installation/linux/docker-ce/centos/

卸载老版本Docker

$ sudo yum remove docker \
docker-common \
docker-selinux \
docker-engine

设置仓库

$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
$ sudo yum-config-manager \
—add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

安装Docker

$ sudo yum install docker-ce

启动Docker

$ sudo systemctl start docker

卸载Docker CE

$ sudo yum remove docker-ce
$ sudo rm -rf /var/lib/docker

# Docker 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×