Docker入门指令大全

docker的安装:

  • 移除旧的版本:

$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

  • 安装一些必要的系统工具:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

  • 添加软件源信息:

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  • 更新 yum 缓存:

sudo yum makecache fast

  • 安装 Docker-ce:

sudo yum -y install docker-ce

  • 启动 Docker 后台服务

sudo systemctl start docker

  • 测试运行 hello-world

[root@runoob ~]# docker run hello-world

 

  • 修改hub进行加速:

文件是这个/etc/docker/daemon.json

  • 直接进去修改

{ "registry-mirrors" :["https://docker.mirrors.ustc.edu.cn"]}
以下都可以替换上面的网址,个人比较喜欢科大的
教程文章链接:
https://www.cnblogs.com/ming369/p/10711771.html

 

 

 

hello world:

  • docker run ubuntu:15.10 /bin/echo "Hello world" 运行ubuntu:15.10镜像 并执行命令 xxxx。 如果本地没有此镜像会去Docker Hub上pull。
  • docker run -i -t ubuntu:15.10 /bin/bash 运行一个交互式的镜像容器
  • docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done" 后台运行一个容器,会返回容器ID
  • docker ps 可以查看所有运行的镜像
  • docker logs dockerId/dockerName 可以根据某个dockerId查看运行日志
  • docker stop dockerId/dockerName 停止一个容器

 

 镜像的使用:

  • 1.列出本地所有镜像:docker image ls

REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

使用 REPOSITORY:TAG 来定义不同的镜像:
runoob@runoob:~$ docker run -t -i ubuntu:15.10 /bin/bash

  • 2.拉取一个镜像

docker pull ubuntu:13.10

  • 3.搜索一个镜像:

docker search httpd

  • 4.创建镜像

当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。
A.从已经创建的容器中更新镜像,并且提交这个镜像
B.使用 Dockerfile 指令来创建一个新的镜像

A:更新镜像
docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件
更新镜像之前,我们需要使用镜像来创建一个容器。

docker run -t -i ubuntu:15.10 /bin/bash
在运行的容器内使用 apt-get update 命令进行更新。
在完成操作之后,输入 exit命令来退出这个容器。
我们可以通过命令 docker commit来提交容器副本:
docker commit \
--author "Tao Wang <twang2218@gmail.com>" \
--message "修改了默认网页" \
webserver \
nginx:v2

B:构建镜像
更新镜像之前,我们需要使用镜像来创建一个容器。
FROM centos:6.7
MAINTAINER Fisher "fisher@sudops.com"
RUN /bin/echo 'root:123456' |chpasswd
RUN useradd runoob
RUN /bin/echo 'runoob:123456' |chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D

docker build -t runoob/centos:6.7 .

docker history nginx:v2

  • 5.docker tag 860c279d2fec runoob/centos:dev

docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。

 

 

 

 容器的使用:

docker
docker ps --help
docker ps -a

docker pull nginx

  • 端口映射

# 全端口映射
docker run -d -P nginx
-d:让容器在后台运行。
-P:将容器内部使用的网络端口映射到我们使用的主机上。

# 自定义某个端口的映射
docker run -d -p 5000:5000 training/webapp python app.py

查看容器的端口映射:
docker port bf08b7f2cd89
docker port wizardly_chandrasekhar

  • 查看容器内日志

docker logs -f bf08b7f2cd89

  • 查看容器内进程:

docker top wizardly_chandrasekhar

  • 查看容器底层信息

docker inspect wizardly_chandrasekhar

  • 停止容器

docker stop wizardly_chandrasekhar

  • 重启容器:

docker start wizardly_chandrasekhar

  • 移除容器

docker rm wizardly_chandrasekhar

  • 登录运行中的容器

docker attach 753 连接到container启动时的终端 断开时会同时关闭container
docker exec -it 753 /bin/bash 启动新的终端 断开时不影响container

  • 启动容器直接运行某个指令

docker run 84c287 java -jar /videobdjob.jar solrIndex
-c其实相当于比例 并不是真正的1024
docker run -m 1024M -c 1024 84c287 java -jar /videobdjob.jar solrIndex

  • 还可以限制io速度

docker run -it --device-write-bps /dev/sda:30MB ubuntu
bps 是 byte per second,每秒读写的数据量。
iops 是 io per second,每秒 IO 的次数。
可通过以下参数控制容器的 bps 和 iops:
--device-read-bps,限制读某个设备的 bps。
--device-write-bps,限制写某个设备的 bps。
--device-read-iops,限制读某个设备的 iops。
--device-write-iops,限制写某个设备的 iops。

 

 

 


容器网络

(查看网桥brctl show ip addr 查看网络 docker network ls)
container默认bridge模式 172.17.0.0/24的网桥
docker run -d -p 9031:9031 17d等于docker run -d -p 9031:9031 --net=bridge 17d

可以看到网络信息跟宿主机一致 包括hostname
docker run -dit --net=host 17d


重用另一个容器的网络命名空间
docker run -dit --net=container:70164 5dc


相当于一台虚拟机没插网卡
docker run -dit --net=none 5dc48

指定子网和网关:
docker network create -d bridge --subnet 172.22.16.0/24 --gateway 172.22.16.1 mynet

 

 

 

容器文件

  • 主目录 /var/lib/docker image和container都会在此目录下 注意磁盘空间分配
  • builder buildkit containers devicemapper image network plugins runtimes swarm tmp trust volumes

 

 

 

 

docker-nginx的安装使用:

  • 入门:

docker search nginx
docker pull nginx
docker images | grep nginx
docker run -i -t --name nginx-test -p 8081:80 -d nginx
curl http://localhost:8081

  • 实战:

创建本地目录,cp或create文件并挂载到容器中
$ mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf
docker cp 6dd4380ba708:/etc/nginx/nginx.conf ~/nginx/conf
vim ~/nginx/www/index.html

docker run
-d
-p 8082:80
--name runoob-nginx-test-web
-v ~/nginx/www:/usr/share/nginx/html
-v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v ~/nginx/logs:/var/log/nginx nginx

curl http://localhost:8082/index.html

  • 如果要重新载入 NGINX 可以使用以下命令发送 HUP 信号到容器:

$ docker kill -s HUP container-name

  • 重启 NGINX 容器命令:

$ docker restart container-name

 

 

 

 

docker-mysql的安装使用:

docker pull mysql
docker -idt --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
docker exec -it mysql-test /bin/bash
mysql -u root -p

  • 1.授权

GRANT ALL ON *.* TO 'root'@'%';

 此时,还不能远程访问,因为Navicat只支持旧版本的加密,需要更改mysql的加密规则

  • 2.更改加密规则

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

  • 3.更新root用户密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

  • 4.刷新权限

flush privileges;

 

 

 

 


本地创建私有镜像仓库

  • 1.下载仓库镜像 registry
  • 2.启动registry容器
  • 3.新增配置文件daemon.json文件 路径:/etc/daemon.json 内容:{"insecure-registries":["100.2.96.181:5000"]}
  • 4.在私有仓库上上传下载镜像,需要在镜像名称前增加ip和port

e.g docker pull 192.168.0.130:5000/centos:v1

 

posted @ 2019-08-09 16:09  MalcolmFeng  阅读(203)  评论(0编辑  收藏  举报